本文介绍的是CSS世界中务必了解的专业术语,包括属性、值、关键词、变量、长度单位、功能符、属性值、生命、声明块、规则或规则集、选择器、关系选择器、@规则以及CSS世界中的“未定义行为”。
案例:
.vacabulary{
height: 99px;
color: transparent;
}1. 属性
例如上面案例中的高度和颜色就是CSS世界的属性,CSS属性就是魔法师。
2. 值
CSS的各种属性值就是魔法师的魔法技能。
在CSS世界中,值得分类十分广泛,比较常用的有:
- 整数值,如z-index:1中,1属于
,同时也属于 - 数值,如line-height:1.5中的1.5
- 百分比值,如padding:50%中的50%
- 长度值,如99px
- 颜色值,如#999
此外,还有字符串值、位置值等类型。在CSS3新世界中,还有角度值、频率值、时间值等类型。
3. 关键词
- 关键字:CSS中很关键的英文单词。例如上面案例中的transparent(全透明黑色)就是典型的关键词,还有常见的solid(实线的)、inherit(继承)。
- 泛关键字:所有CSS属性都可以使用的关键字,例如initial(默认)、inherit(继承)和unset(不设置)
4. 变量
CSS中目前可以称为变量的比较有效,CSS3中的currentColor就是变量,非常有用:currentColor-CSS3超高校级好用CSS变量;
以及阮一峰老师的自定义CSS变量教程:
CSS 变量教程
5. 长度单位
CSS中的单位有时间单位(如s、ms),还有角度单位(如deg、rad等),但最常见的还是长度单位。长度单位分为:
- 绝对长度单位:彼此固定,不会因为其他元素的尺寸变化而变化。主要有px、cm、mm、Q、in、pc、pt(eg:除px外,其他基本不用)
- 相对长度单位:指定相对于另一长度的长度。主要有em、ex、ch、rem、%和可视区百分比长度单位 vm、vh、vmin、vmax
注意:
- 2%属于数值,这里的%不是长度单位
- “值”里面的<length和长度单位的关系:<numberre>+长度单位=<length>;
6. 功能符
值以函数的形式指定(就是被括号括起来的那种),主要用来表示颜色(rgba和hsla)、背景图片地址(url)、元素属性值、计算(calc)和过渡效果等,如rgba (0,0,0,0)、url(“css-world.png”)、attr(“herf”)、scale(-1)
7. 属性值
属性冒号后面的内容统一称为属性值
8. 声明
属性名+属性值
9. 声明块
声明块就是花括号{}包裹的一系列声明
10. 规则或规则集
出现了选择器,而且后面跟着声明块,如本文最上面的案例。
11. 选择器
用来瞄准目标元素的东西。
- 类选择器:如.umbrella
- ID选择器:如#id
- 属性 选择器:如[attribute] [target] 选择带有 target 属性所有元素
- 伪类选择器:一般前面有一个:
- 伪元素选择器:有两个冒号的原则,::selection ::selection 选择被用户选取的元素部分。
这里放上更详细的介绍:CSS 选择器参考手册
12. 关系选择器
根据与其他元素的关系选择元素的选择器,常见的有:
- 后代选择器 空格连接
- 相邻后代选择器 >连接
- 兄弟选择器 ~连接 (注意:是当前元素后面所有的的合规则的那个同父的兄弟元素)
- 相邻兄弟选择器: +连接 (注意:仅仅选择当前元素相邻的那一个同父元素的合规则的兄弟元素。且适用于IE7以上版本)
13. @规则
指的是以@字符开头的一些规则,例如@media、@font-face、@page或@support
现实世界中,法律约束我们的行为,如果越界,就叫违法;在CSS世界中,有Web标准约束元素的行为,如果越界就称为bug。不过不可能面面俱到,法律会有法律空白,在CSS世界也会有”未定义行为”。
例如以下这个案例:FireFox mousedown干掉:active实例页面
HTML:
正常情况:
<a href="javascript:" class="active-btn">按下</a>
包含JS:
<a href="javascript:" id="button" class="active-btn">按下</a>CSS:
.active-btn {
display: inline-block;
background-color: #cd0000;
}
.active-btn:active {
background-color: #ae0000;
}JavaScript:
var button = document.getElementById("button");
if (button.addEventListener) {
button.addEventListener("mousedown", function(event) {
// 此处省略N行
event.preventDefault();
});
}现象描述:在FireFox浏览器中,点击“正常情况按钮”会出现按钮点击样式,但点击“包含js的按钮”,则不会有按钮点击样式
原因分析:因为规范上并没有对这种场景的具体描述,所以FireFox认为:active发生在mousedown事件之后。(IE/Chrome反之认为)
像这种规范估计不到的细枝末节的实现,就称之“未定义行为”
本文内容我对张鑫旭老师《CSS世界》一书第二章的学习笔记,感谢张鑫旭老师,也感谢阅读本文的你给我的鼓励!
作为一个前端小白,如果学习笔记中有错误的地方,还请不吝指点,谢谢!