伪类:
1.指某种特定的行为或者状态,例如鼠标悬停,点击,第一个子元素等
2.以:开头,:hover,:focus
3.伪类不会形成新的元素,只会改变原有的样式
伪元素:
1.伪元素一般用于选择器中创建新的元素,并且对他进行样式化,例如:创建新的内容,改变定位,改变样式等
2.以::双冒号开头,::before选中元素的前面添加内容,::after选中元素的后面加上内容,::first-line只能用于块级元素的第一行文本
3.伪元素在文档中生成了一个虚拟的元素,可以通过样式化该元素来实现一些特定的效果。
content属性用于在内容中插入一些额外的文本,图像等装饰性内容,只能用于伪元素中,不会影响真实的dom结果
#myList li::before {
content: "\2022"; /* 使用Unicode编码创建圆点 */
margin-right: 8px; /* 设置圆点与文本之间的间距 */
}
如果一个元素的字体大小使用了em单位,并且其父元素也使用了em单位来设置字体大小,那么子元素的字体大小将会是相对于其父元素的父元素的字体大小计算的。这种嵌套的关系会导致字体大小的计算变得复杂。
盒子模型:content,margin,padding,border属性
怪异盒子(旧版ie)模型:content包括了padding和border属性
避免出现盒子模型的兼容性问题,可以通过在文档中添加来强制浏览器使用标准的盒子模型。
重绘指元素的样式变化,如:颜色,背景,边框等,浏览器重新绘制整个元素,不会影响元素的布局
回流指元素的布局发生变化,如:大小,间距,位置等,浏览器会重新计算元素之间的位置,导致页面重新渲染,消耗比较大
避免频繁的重绘和回流,可以采取以下几个措施:
CSS 的硬件加速是指利用 GPU(图形处理器)来加速浏览器的渲染过程,提高页面的流畅度,
GPU具有并行计算的能力,对于大量的顶点坐标变换和矩阵运算等工作非常高效。所以,当对象需要进行位置变换时,通常会在GPU上使用着色器(Shader)程序来进行变换计算。一般情况下,可以在着色器中定义变换矩阵,并使用顶点着色器将对象的顶点坐标进行变换计算,然后在后续的渲染过程中将变换后的顶点坐标传递给片元着色器进行颜色插值等处理。
总的来说,GPU在进行位置变换计算时是非常高效且适合的,能够提供流畅的图形变换和渲染效果。因此,对于图形应用程序中的对象位置变换等操作,通常会利用GPU的并行计算能力来进行计算,以提高性能和效率。
有几种方法可以触发硬件加速:
1.transform属性,实现元素的变换效果,可以对元素进行旋转、缩放、平移和倾斜等操作
2.opacity属性,设置透明度
1.将css文件放在头部,确保浏览器解析时可以尽快获取并加载css文件,避免页面的阻塞
2.使用link加载css的方法,可以将link标签引入css文件,并放在head头部中,这样可以减少对html的阻塞,因为CSS文件的下载和解析可以与HTML文档的解析过程同时进行,不会阻塞HTML的渲染。(总的来说,link引入css文件,可以边下载边解析,但是@import引入时,必须等待下载完成才会解析,所以会导致阻塞)
3.使用媒体查询加载,根据link标签内的media属性来设置特定的范围,当条件满足的时候才加载文件,这样可以延迟css文件加载的时间,避免阻塞
4.使用css预处理器来优化css文件,将css代码进行压缩合并操作等优化操作
5.使用浏览器缓存,首次加载的时候,对css的样式进行缓存,下次就可以直接从缓存中获取,无需重新的下载
link:html方式
1.link 标签可以在页面加载时同时下载和渲染外部样式表,并且支持并行下载多个文件
2.使用标签引入的外部样式表文件可以被浏览器缓存,从而优化页面的加载速度。
@import:是css方式
1.而@import语句会阻止页面的并行加载,每个@import语句会按照顺序依次加载外部样式表,并且要等到页面加载完毕了才会加载,每个样式表加载完成后才会加载下一个
2.@import语句引入的样式表没有这个缓存效果,每次都需要重新加载和解析。
行内元素(Inline Element):
块级元素(Block Element):
、
inline-block 是一种元素显示类型,它同时具备行内元素和块级元素的特性。
与行内元素相同的是,inline-block 元素可以和其他行内元素在同一行显示,并且不会独占一行。
与块级元素相同的是,inline-block 元素可以设置宽度、高度、内边距和外边距,并且默认情况下会填充父级容器的宽度。
、
1.进行响应式设计,例如媒体查询:通过屏幕分辨率,尺寸等相关数据,动态的使用相关的css样式来进行适配,媒体查询使得网页能够根据设备特性和特定条件,灵活地调整样式,从而提升用户体验。
2.利用flex弹性布局或者百分比布局
3.使用em代替px
4.使用移动端的适配框架
5.针对不同设备进行兼容性测试
触发 BFC,可以使得父元素包裹的子元素按照父元素的边界进行定位和布局,而不受到外部元素的影响。这样可以实现准确的相对变化,并且不会影响到其他元素的布局和定位。
例如:父元素没有高度,子元素浮动会导致父元素塌陷
子元素外边距会使父元素的塌陷的问题
父元素只要添加其中一个内容,就可以实现BFC