em、rem、vm、vw分别如何计算尺寸的?
em
:相对长度单位,通常是所继承字体大小的倍数,如果未设置字体大小,则为浏览器默认字体大小的倍数。
rem
:相对长度单位,根元素(html节点)字体大小的倍数,不设置时为浏览器默认字体大小倍数。
vm
:相对于视口的宽度或高度中较小的那个。
vw
:窗口宽度的百分比,1vw默认为视窗宽度的1%。类似的有vh,窗口高度的百分比。
颜色有几种写法?透明色如何表示?透明效果如何实现?currentColor如何来用?
- 颜色关键字:
color: blue;
- 十六进制值:
color: #ffffff
- RGB:
color: rgb(224,176,77);
(三个字母分别表示色相、饱和度、亮度,基于rgb值得来) - HSL:
color: hsl(276,100%,85%);
- RGBA&HSLA:A是阿尔法通道,代表颜色的透明度
- 透明色可以设置阿尔法值为0或者使用transparent关键字(透明色只能设置背景色为透明,元素本身不是透明的,透明色和元素透明度是不同的)
- currentColor关键字:如果你想设置当前元素颜色和所继承的父元素颜色一样时,使用currentColor。
- Opacity属性:设置整个元素为透明
CSS 中calc是什么?
通常用于计算,例如实现一个footer 固定底部的效果:
注:cslc(100% - 90px)中空格不能省
为什么不能轻易的使用height: 100%;
如果元素要使用height: 100%
,其父元素必须显示去指明一个高度,若父容器的height也为100%,那么其父父容器必须指明高度,否则元素高度不会被撑开。
CSS样式的来源
- 使用不同选择器设置的样式
- 浏览器默认样式(user agent stylesheet)
- 继承的样式(inherited form xxx)
权重:用户设置样式 > 浏览器默认样式 > 继承的样式
什么是CSS继承?哪些属性能继承,哪些不能?
通过 CSS 继承,子元素将继承最高级元素所拥有的属性如设置body{font-family:Verdana;}
,不需要另外的规则,所有 body 的子元素都应该显示 Verdana 字体,子元素的子元素也一样。而比如p不想继承高级元素body的字体属性,只需要针对自身的特殊规则,如p{font-family:Times}
,即可摆脱父元素的规则,这就是CSS继承。
继承属性:color
、font-size
、font-family
、font-style
、letter-spacing
、white-spacing
、text-decoration
、text-align
、text-indent
等。
非继承属性:display
、height
、width
、padding
、border
、margin
、min-width
、max-width
、min-height
、max-height
、background
、overflow
、position
、float
、clear
、top
、right
、bottom
、left
、vertical-align
等。
注:inherit
关键字可用于继承性/非继承性属性。
CSS的权重如何计算
- 最高权重为添加
!important
- Specificity 特异性
分数 | 条件 |
---|---|
1000 | +1/在style属性内或在 |