css 从右边往左开始解析,过多的嵌套会影响性能,最好不要超过三层。css 尽量的复用代码块,减小重复代码css
css Specificity中文通常译为css优先级、css权重。相比权重,优先级更好理解。简单理解就是一个DOM元素有多个css样式设置,优先级高的那个样式被应用,其余css设置不生效的问题,这是由于在其余地方定义了一个更高的优先级样式,从而致使其余地方设置的样式不生效。html
根据w3c标准 这个优先级是根据计算选择者的特性来决定,能够理解为根据选择器的类型来决定,他们的类型分为a、b、c,他们的数目计算规则以下,在比较权重时, 按照 a => b => c 的顺序进行比较。api
style="font-weight:bold"
) 总会覆盖外部样式表的任何样式 ,所以可看做是具备最高的优先级。1 * / * a = 0 b = 0 c = 0->特异性= 0 * / 2 LI / * a = 0 b = 0 c = 1->特异性= 1 * / 3 UL LI / * a = 0 b = 0 c = 2->特异性= 2 * / 4 UL OL + LI / * a = 0 b = 0 c = 3->特异性= 3 * / 5 H1 + * [REL = up] / * a = 0 b = 1 c = 1->特异性= 11 * / 6 UL OL LI.red / * a = 0 b = 1 c = 3->特异性= 13 * / 7 LI.red.level / * a = 0 b = 2 c = 1->特异性= 21 * / 8 #x34y / * a = 1 b = 0 c = 0->特异性= 100 * / 9 #s12:not(FOO)/ * a = 1 b = 0 c = 1->特异性= 101 * /
根据最新的标准这个是错误的浏览器
有些样式能够直接继承父元素的样式,不能继承的默认是初始值。常见可继承属性以下dom
font-family:字体系列函数
font-weight:字体的粗细布局
font-size:字体的大小性能
font-style:字体的风格字体
text-indent:文本缩进spa
text-align:文本水平对齐
line-height:行高
word-spacing:单词之间的间距
letter-spacing:中文或者字母之间的间距
text-transform:控制文本大小写(就是uppercase、lowercase、capitalize这三个)
color:文本颜色
visibility:控制元素显示隐藏
list-style:列表风格,包括list-style-type、list-style-image等
cursor:光标显示为什么种形态
css 能够自定义属性(一般叫css 变量),好比: --main-color: black; 由var() 函数用于读取值
1 color: var(--main-color);
1 // 获取任意 Dom 节点上的 CSS 变量 2 getComputedStyle(element).getPropertyValue("--my-var"); 3 // 修改一个 Dom 节点上的 CSS 变量 4 element.style.setProperty("--my-var", jsVar + 4); 5 6 //读取全局 7 let root = getComputedStyle(document.documentElement);
8 let color = root.getPropertyValue('--color').trim();
9 console.log(color); 10 11 //改变 12 document.documentElement.style.setProperty('--color', 'yellow'); 13 let color = root.getPropertyValue('--color').trim();
14 console.log(color); 15 //删除 16 document.documentElement.style.removeProperty('--color'); 17 let color = root.getPropertyValue('--color').trim(); 18 console.log(color);
1 :root { 2 --bg1: red; 3 --mt1: 20; // 数值须要与calc*()函数拼接 4 // --ml1: "20px"; // 无效,带有单位不要写成字符串 5 --ml1: 20px; // 带有单位时不要写成字符串 6 }
1 .wrap2 { 2 // 无效 3 // margin-top: var(--mt1) 4 margin-top: calc(var(--mt1) * 1px); 5 margin-left: var(--ml1); 6 }
相较于传统的 LESS 、SASS 等预处理器变量,CSS 变量的优势在于:
CSS 自定义属性可让 JavaScript 与 CSS 通讯了。
当咱们对 DOM 的修改致使了样式的变化、却并未影响其几何属性(好比修改了颜色、背景色等),浏览器不需从新计算元素的几何属性、直接为该元素绘制新的样式,这个过程叫作重绘。
当咱们对 DOM 的修改引起了 DOM 几何尺寸、结构的变化(好比修改元素的宽、高或隐藏元素等),浏览器须要从新计算元素的几何属性(其余元素的几何属性和位置也会所以受到影响)从新生成渲染树,而后再将计算的结果绘制出来,这个过程就是回流(也叫重排)
回流必定会产生重绘,重绘不必定会回流,好比只有颜色改变就只会发生重绘而不会引发回流,每一个页面至少经历一次回流(在页面第一次加载)
作移动页面开发时,若是使用 vw、wh 设置字体大小(好比 5vw),在竖屏和横屏状态下显示的字体大小是不同的。
因为 vmin 和 vmax 是当前较小的 vw 和 vh 和当前较大的 vw 和 vh。这里就能够用到 vmin 和 vmax。使得文字大小在横竖屏下保持一致。