JS CSS HTML 的代码如何快速封装

我们为什么要封装代码,是因为封装后的代码,会显得非常美观,减少代码的复用,方便我们更好的去维护代码,不用一个一个页面的去找去改,直接封装好的代码里面去改就可以了

目录

1.html代码封装

 2.CSS代码封装

3.JS代码封装


1.html代码封装

如果每个页面或者多个页面都有一样的结构,可以再设置一个html文件,用来写这些结构,然后再要所有的html文件里面引用jqurey文件,然后给要使用这个html结构的元素一个id,通过id使用jqurey的 load()这个方法运行封装的html文件,如果一个div或元素就可以完成的事情,就不要去嵌套多个div或元素

具体操作

<!-- 公共布局 public.html -->
<div class="public-head">
		<p><a href="">首页</a></p>
		<p><a href="">数字中国</a></p>
		<p><a href="">云服务</a></p>
		<p><a href="">企业营销</a></p>
		<p><a href="">企业办公</a></p>
		<p><a href="">知识产权</a></p>
		<p><a href="">招商加盟</a></p>
</div>
<!-- 使用布局界面 -->
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="public-head"></div>
	</body>
	<!-- 引入在线jq -->
	<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
	<!-- 嵌入公共布局 public.html -->
	<script type="text/javascript">
		$(function(){
			$('#public-head').load('public.html');
		})
	</script>
</html>

 2.CSS代码封装

css的样式在一个页面有多个一样的css样式,不需要去声明多个class或者id名字,只需要使用的元素声明一个class名字就可以了,在css里也只需要使用这个class,写一遍就可以了

一些在好几个css常用的css样式,就可以在使用一个css文件封装起来,比如页面背景色,弹出窗的样式,分页的样式,这些都可以通过一个通用的css文件封装起来方便使用

下面的是封装的css通用的代码,这里面封装了背景色和弹出窗的样式

具体怎么在页面使用,可以通过link标签引入这些css样式,方便我们的html里面使用

下面是引用的方法

<link rel="stylesheet" href="./css/tooltip.css" />

3.JS代码封装

3.1函数的封装

     3.1.1函数也是一个对象

     3.1.2函数中可以封装一些功能,在需要的使用可以执行这些功能

     3.1.3函数中也可以保存一些代码在需要的时候调用

     3.1.14使用typeof检查一个函数对象时,回返回function

3.2使用js文件封装同样的js代码,比如下面分页功能的代码

//一页有多少条数据
let num = 10;
//页码下标
let page_index = 0;
//总页数
let total_page;
// 页数渲染
function pagenumber(data) {
	let pagination = ``;
	pagination += `<div class="data-count">共 ${data.length} 条</div>`;
	pagination += `<select id="show" value="${num}" onchange="selects()">
				<option ${num == 10 ? 'selected' : ''} class="option" value="10">10条/页</option>
				<option ${num == 20 ? 'selected' : ''} class="option" value="20">20条/页</option>
				<option ${num == 50 ? 'selected' : ''} class="option" value="50">50条/页</option>
	        </select>  
	        <div class="paging_Previous" id="up" onclick="back_page()">
				<img src="./img/lefte.png" alt="" />
	        </div>`;
	// 获取总页数
	total_page = Math.ceil(data.length / num);

	// 总页数小于6,执行if的内容,大于6执行else
	if (total_page < 6) {
		for (let j = 0; j < total_page; j++) {
			pagination +=
				`<div class="paging_num" onclick="sort(${j})" ${page_index == j ? 'style="color:#0c66ff;"' : '""'}>${j + 1}</div>`;
		}
	} else {
		// 判断显示哪几页的页数
		 if (page_index > total_page - 4) {
			pagination +=
				`<div class="paging_num" onclick="sort(${0})" ${page_index == 0 ? 'style="color:#0c66ff;"' : '""'}>1</div>...`;
		} else if (page_index >=3){
			page_num = page_index - 2;
			pagination +=
				`<div class="paging_num" onclick="sort(${0})" ${page_index == 0 ? 'style="color:#0c66ff;"' : '""'}>1</div>...`;
		}
		// 循环页数
		for (let j = page_index - 2 < 0 ? 0 : (page_index + 2 > total_page - 1 ? page_index = total_page - 3 :
				page_index - 2); j < page_index + 2; j++) {
			pagination +=
				`<div class="paging_num" onclick="sort(${j})" ${page_index == j ? 'style="color:#0c66ff;"' : '""'}>${j + 1}</div>`;
		}

		// 用来判断是否添加省略号
		if (page_index < 3) {
			sti +=
				`...<div class="paging_num" onclick="sort(${total_page - 1})" ${page_index == total_page - 1 ? 'style="color:#0c66ff;";' : '"'}>${total_page}</div>`;
		} else if (page_index <= total_page - 4) {
			sti +=
				`...<div class="paging_num" onclick="sort(${total_page - 1})" ${page_index == total_page - 1 ? 'style="color:#0c66ff;";' : '"'}>${total_page}</div>`;
		}
	}

	pagination += `<div class="paging_Previous" id="bottom" onclick="next_page()">
	<img src="./img/righte.png" alt="" />
	</div>`;
	pagination +=
		`<div>前往<input type="text" class="inputs" placeholder="请输入页码" onkeyup="if(event.keyCode==13){search()}">页</div>`;
	$('#paging').html(pagination);
}

// 分页内容搜索
function search() {
	// 获取输入框的值
	let input = document.querySelector('.inputs').value;

	// 转换输入值为整数
	let pageNumber = parseInt(input, 10);

	// 验证输入值
	if (isNaN(pageNumber) || pageNumber < 1 || pageNumber > total_page) {
		// 弹出警告提示
		// 显示超出限制的提示
		tooltip.innerHTML = `超出页面范围`;
		//修改弹出窗的样式
		tooltip.style = "display:block;";
		$('.inputs').val('');
		setTimeout(function() {
			tooltip.style = "display:none";
		}, 2000);
	} else {
		// 更新当前页码
		page_index = pageNumber - 1;
		// 调用 apply 函数更新分页内容
		applys(res);
	}
}

//下一页
function next_page() {
	//k小于总页数-1
	if (page_index < total_page - 1) {
		//每次点击加1
		page_index++;
	}
	//调用渲染函数
	applys(res);
}

//上一页
function back_page() {
	//k大于0
	if (page_index > 0) {
		//每次点击-1
		page_index--;
		//调用渲染
		applys(res);
	}
}

// 改变每页渲染的数据条数
function selects() {
	// 获取下拉框的value 
	let value = $('#show').val();
	// 选中大家下拉框的选项
	$("#mySelect").val(value);
	// 让每页的数据等于下拉框的value值
	num = value;
	// 重新计算总页数
	total_page = Math.ceil(res.length / num);
	if (page_index > total_page - 1) {
		page_index = total_page - 1;
	}
	// 调用渲染函数
	applys(datas);
}

// 点击切换页面数据事件
function sort(j) {
	// 让页数调用点击的页数
	page_index = j;
	// 调用渲染函数
	applys(datas);
}

 它是通过重新封装一个js代码在页面中使用

比如分页的功能,加减功能都可以封装起来,获取接口域名,一些判断,也方便如果代码出问题了,好修改,然后再html里面直接引入js就可以使用了

通过下面的这个方法引入到页面中使用

<script src="./js/pagination.js"></script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/940264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Vue3实战教程》5:响应式基础

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 响应式基础​ API 参考 本页和后面很多页面中都分别包含了选项式 API 和组合式 API 的示例代码。现在你选择的是 组合式 API。你可以使用左侧侧边栏顶部的“API 风格偏好”开关在 API 风格之间切换。 声明响应式状态…

黑马Java面试教程_P8_并发编程

系列博客目录 文章目录 系列博客目录前言1.线程的基础知识1.1 线程和进程的区别&#xff1f;难2频3面试文稿 1.2 并行和并发有什么区别&#xff1f; 难1频1面试文稿 1.3 创建线程的四种方式 难2频4面试文稿 1.4 runnable 和 callable 有什么区别 难2频3面试文稿 1.5 线程的 run…

谷歌浏览器的扩展市场使用指南

谷歌浏览器的扩展市场为用户提供了丰富多样的功能扩展&#xff0c;可以大幅提升浏览体验。本文将为你详细介绍如何使用谷歌浏览器的扩展市场&#xff0c;包括安装、管理和一些推荐的无障碍工具、图标重置方法和便捷操作技巧。&#xff08;本文由https://chrome.py010.cn/的作者…

线程知识总结(一)

1、概述 1.1 进程与线程 进程是程序运行时&#xff0c;操作系统进行资源分配的最小单位&#xff0c;包括 CPU、内存空间、磁盘 IO 等。从另一个角度讲&#xff0c;进程是程序在设备&#xff08;计算机、手机等&#xff09;上的一次执行活动&#xff0c;或者说是正在运行中的程…

【优选算法】Prefix-Kage:前缀和的算法影(上)

文章目录 1.概念解析2.代码实现2.1【模版】前缀和&#xff08;一维&#xff09;2.1.1 原理2.1.2 代码实现 2.2【模版】前缀和&#xff08;二维&#xff09;2.2.1 原理2.2.2 代码实现 希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 本篇是优选算…

CVE-2024-32709 WordPress —— Recall 插件存在 SQL 注入漏洞

漏洞描述 WordPress 是一款免费开源的内容管理系统,适用于各类网站,包括个人博客、电子商务系统、企业网站。其插件 WP-Recall 的 account 存在 SQL 注入漏洞,攻击者可以通过该漏洞获取数据库敏感信息。 WP-Recall 版本 <= 16.26.5 漏洞复现 搭建环境、安装插件、完成…

网络安全概论——虚拟专网VPN技术

一、VPN概述 1、VPN的概念 所谓虚拟专网&#xff08;Virtual Private Network VPN&#xff09;是指将物理上分布在不同地点的网络通过公用网络连接而构成逻辑上的虚拟子网&#xff0c;它采用认证、访问控制、机密性、数据完整性等安全机制在公用网络上构建专用网络。 如何理…

mobilenetv2-inceptionv3-resnet50三大模型对比实现人脸识别反欺诈系统【带UI界面】

完整项目包获取→点击文章末尾名片&#xff01; 关于数据集&#xff1a;超大规模人脸欺诈数据集。共70多G。 关于模型对比&#xff1a; inceptionv3&#xff1a; mobilenetv2&#xff1a; resnet50&#xff1a; 关于系统&#xff1a; 界面&#xff1a;

十一、e2studio VS STM32CubeIDE之宏函数展开

目录 一、概述/目的 二、复杂宏函数举例 三、编译-预处理 四、stm32cubeide和e2studio的预处理 五、source insight和vscode 一、概述/目的 复杂宏函数如何快速展开 二、复杂宏函数举例 #define R_BSP_MODULE_START(ip, channel) {FSP_CRITICAL_SECTION_DEFI…

FreeRTOS的任务调度

1.启动任务调度器 vTaskStartScheduler void vTaskStartScheduler( void ) { BaseType_t xReturn;/* Add the idle task at the lowest priority. */#if ( INCLUDE_xTaskGetIdleTaskHandle 1 ){/* Create the idle task, storing its handle in xIdleTaskHandle so it canbe …

【Java基础面试题024】Java中包装类型和基本类型的区别是什么?

回答重点 基本类型&#xff1a; Java中有8种基本数据类型&#xff08;byte、short、int、long、float、double、char、boolean&#xff09;他们是直接存储数值的变量&#xff0c;位于栈上&#xff08;局部变量在栈上、成员变量在堆上&#xff0c;静态字段/类在方法区&#xf…

SpringBoot3+Vue3开发在线考试系统

项目介绍 项目分为3种角色&#xff0c;分别为&#xff1a;超级管理员、老师、学生。超级管理员&#xff0c;负责系统的设置、角色的创建、菜单的管理、老师的管理等功能&#xff0c;也可以叫做系统管理员&#xff1b;老师角色&#xff0c;负责系统业务的管理&#xff0c;包括学…

第3节 测试套件数据驱动

创建Excel、 CSV测试数据 1. 从主菜单中选择 File > New > Test Data。将显示新的测试数据对话框。输入测试数据的名称并选择数据类型作为Excel File/ CSV File 。单击OK。 2. 浏览到要导入Katalon Studio的Excel File, 选择Excel中的sheetName&#xff0c;或者CSV文件…

跨站点请求伪造(Cross Sites Request Forgery)类漏洞攻击方式与防御措施|软件安全测试技术系列

本系列文章分享JavaScript语言常见的安全漏洞&#xff0c;漏洞的原理&#xff0c;可能导致的安全问题&#xff0c;以及如何防御与避免。本文分享的是跨站点请求伪造&#xff08;Cross Sites Request Forgery&#xff09;。 跨站点请求伪造&#xff0c;指利用用户身份操作用户账…

【图像分类实用脚本】数据可视化以及高数量类别截断

图像分类时&#xff0c;如果某个类别或者某些类别的数量远大于其他类别的话&#xff0c;模型在计算的时候&#xff0c;更倾向于拟合数量更多的类别&#xff1b;因此&#xff0c;观察类别数量以及对数据量多的类别进行截断是很有必要的。 1.准备数据 数据的格式为图像分类数据集…

飞牛os使用ddns-go配合华为云实现内网穿透

DDNS-Go 是一个开源的动态域名解析工具&#xff0c;它支持多种操作系统&#xff0c;包括 Windows、Mac 和 Linux&#xff0c;并且支持 ARM 和 x86 架构。以下是使用 DDNS-Go 的基本步骤&#xff1a; 1. 下载和安装&#xff1a; 访问 DDNS-Go 的 GitHub 仓库&#xff08;&#x…

易语言OCR证件照文字识别

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…

二八(vue2-04)、scoped、data函数、父子通信、props校验、非父子通信(EventBus、provideinject)、v-model进阶

1. 组件的三大组成部分(结构/样式/逻辑) 1.1 scoped 样式冲突 App.vue <template><!-- template 只能有一个根元素 --><div id"app"><BaseOne></BaseOne><BaseTwo></BaseTwo></div> </template><script…

3D工具显微镜的测量范围

一、测量尺寸范围 样品尺寸&#xff1a; 3D工具显微镜通常能够测量各种尺寸和形状的样品&#xff0c;从小至微米级别的微小结构到大至几厘米甚至更大的物体。具体的测量尺寸范围取决于显微镜的载物台大小、镜头焦距以及软件处理能力。测量精度&#xff1a; 3D工具显微镜的测量…

C#—扩展方法

扩展方法 扩展方法是C#中一种特殊的静态方法&#xff0c;它定义在一个静态类中&#xff0c;但是可以像实例方法一样被调用&#xff0c;使得代码看起来更为直观和易于阅读。扩展方法允许你在不修改原始类的情况下&#xff0c;添加新的方法到现有的类型中。 有↓箭头的是扩展方…