CSS 中有两种盒模型:标准盒模型(content-box
)和IE 盒模型(border-box
)。
盒模型也称为框模型,就是从盒子顶部俯视所得的一张平面图,用于描述元素所占用的空间。
它有两种盒模型,W3C
盒子模型、IE
盒子模型 (IE6以下,不包括IE6以及怪异模式下的IE5.5+) ;
标准盒模型(content-box
):
在标准盒模型下,元素的宽度和高度仅包括内容区域的尺寸,不包括 padding
、border
和 margin
的尺寸。也就是说,元素的实际显示尺寸为 width + padding + border
,内容(content
)、填充( padding
)、边界( margin
)、 边框( border
);。
IE 盒模型(border-box):
在 IE 盒模型下,元素的宽度和高度包括了内容区域、padding
和 border
的尺寸。也就是说,元素的实际显示尺寸为 width
。
区别:理论上两者的主要区别是二者的盒子宽高是否包括元素的边框和内边距。当用CSS
给给某个元素定义高或宽时,IE
的 content
部分把 border
和 padding
计算了进去,而 W3C
盒模型并不会。使用 CSS 的 box-sizing
属性可以指定盒模型的类型,将其设置为 border-box
可以启用 IE
盒模型。
在 CSS 中,合并方法主要是指当对同一元素的相同样式规则使用多个选择器时,如何合并这些规则。CSS 的合并方法有以下几种:
级联顺序:后定义的样式会覆盖先定义的样式,除非使用了
!important
修饰符。特定性:给选择器添加 ID 选择器会增加特定性,因此 ID 选择器的样式优先级最高,其次是类选择器和属性选择器,最后是标签选择器。
重要性:可以通过
!important
修饰符来标记样式规则,它具有最高的优先级。但是,过度使用!important
可能导致样式不可维护,应尽量避免滥用。
将多个CSS文件合并成一个CSS文件有两种方法:手动合并和使用工具合并。
在网页设计过程中,经常会用到多个CSS文件来实现不同的样式效果。但是当我们需要使用多个CSS文件时,就需要将它们合并成一个CSS文件,以便在网页中加载一个CSS文件而不是多个CSS文件。
避免使用
@import
引入多个 css
文件,使用CSS预处理器如Sass
或Less
,可以通过@import
规则合并CSS文件。这种方法可以实现CSS模块化开发。使用
Webpack
、Gulp
、Compass
、CSS Minifier
、CSS Compressor
、Prepros、Grunt
等工具,可以通过配置实现CSS文件的合并、压缩等操作。例如Webpack可以使用css-loader
和mini-css-extract-plugin
实现CSS文件的合并。在服务器端使用
Node.js
模块如css-combo
合并CSS文件。此模块可以将多个CSS文件合并为一个文件供浏览器加载。在HTML文件中使用
<link>
标签引入CSS文件时,可以将多个CSS文件路径写在一个<link>
标签中实现合并。
以上是一些常见的CSS文件合并方法,具体根据项目情况选择合适的实现方案。
其实很多时候,我们写完css规则之后,我们思考的无非就是3件事情:
它有两个主要作用:
通过使用
"for"
属性和"id"
属性,与相关的表单元素进行关联。当用户点击 label 标签时,关联的表单元素就会聚焦或选中。增强可访问性。通过将文字描述与表单元素关联,可以提供更好的屏幕阅读器支持和键盘导航。这对于可访问性要求高的用户群体来说尤为重要。
label元素不会向用户呈现任何特殊效果,但是,它为鼠标用户改进了可用性,当我们在label元素内点击文本时就会触发此控件。也就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。
最常用label标签就是表单中的性别单选框了,当点击文字时也能够自动聚焦绑定的表单控件。
<form>
<label for="male">男</label>
<input type="radio" name="sex" id="male">
<label for="female">女</label>
<input type="radio" name="sex" id="female">
</form>
要美化 checkbox,可以使用 CSS 来自定义样式。以下是一种常见的方法:
隐藏原始 checkbox:设置样式 display: none;
,隐藏默认的 checkbox。
创建自定义样式:使用伪元素 ::before
或 ::after
,根据需求设计美化后的 checkbox 的样式,如大小、颜色和形状等。
使用 label 元素关联:将 checkbox 放在 label 元素内,通过 for
属性关联 checkbox 的 ID。这样,用户点击 label 时,就会触发 checkbox 的选中状态。
利用伪类选择器:使用 :checked
伪类选择器,根据 checkbox 的选中状态设置样式,如背景颜色或勾选图标的显示与隐藏。
下面是一个示例 CSS 代码,用于美化 checkbox:
/* 隐藏原始的 checkbox */
input[type="checkbox"] {
display: none;
}
/* 自定义样式 */
input[type="checkbox"] + label {
position: relative;
padding-left: 30px; /* 为 label 留出位置放置自定义 checkbox */
cursor: pointer;
}
/* 自定义 checkbox 的外观 */
input[type="checkbox"] + label::before {
content: "";
position: absolute;
left: 0;
top: 0;
width: 20px;
height: 20px;
border: 1px solid #000;
background-color: #fff;
}
持续学习总结记录中,回顾一下上面的内容:
CSS两种盒模型以及区别、CSS合并方法、CSS文件合并方法、label的作用是什么?如何美化CheckBox?