CSS 细节难点综合

对于CSS,要知其然,还要知其所以然。本文将介绍CSS各部分出现的原因,仅限个人理解,如有不妥,欢迎交流

Why CSS

早期的大多数网站标记几乎完全由表格和font元素组成,且对于所要表现的内容不能传达任何实际含义,使文档可用性降低,且不易于维护。于是1995年,W3C发布了CSS草案,试图解决结构与样式混杂的问题

1、如果考虑结构与样式彻底分离,且样式表可能用于多个HTML文件,使用[外部样式表]

2、如果样式表仅用于当前页面,且减少[HTTP]请求数量,使用[内部样式表]
  3、如果只是想为单个元素指定一些样式,可以使用HTML的style属性来设置一个[行间样式]

Why 选择器

通过[CSS选择器],向文档中的一组元素类型应用某些规则

1、通配选择器选择所有元素

2、元素选择器按照HTML标签来选择元素

3、类选择器通过定义类名来选择一类元素

4、ID选择器选择特定ID的元素

5、属性选择器根据元素的属性及属性值来选择元素

6、后代选择器通过HTML层级关系来选择元素

7、分组选择器将具有相同规则的元素合并设置

Why 层叠

CSS(cascading style sheets)中文翻译过来是层叠样式表,最基本的一个特性就是[层叠]。冲突的声明通过层叠进行排序,由此确定最终的文档表示

在下面的例子,元素选择器div和类选择器.test都可以选择出<div class="test"></div>,这就发生了冲突。由于类选择器的特殊性大于元素选择器,所以通过层叠进行排序,最终该元素的样式为{height: 200px;} ,如果去掉 .test{height: 200px;} 这条规则,则元素的样式为{height: 100px;}

<style>
div{height: 100px;}
.test{height: 200px;}    
</style>
<div class="test"></div>

Why 解析顺序

为什么CSS选择器的解析顺序是从右到左呢?先给结论,因为更快

如果正向解析,例如「div div p em」,首先要检查当前元素到 html 的整条路径,找到最上层的 div,再往下找,如果遇到不匹配就必须回到最上层那个 div,往下再去匹配选择器中的第一个 div,回溯若干次才能确定匹配与否,效率很低

逆向匹配则不同,如果当前的 DOM 元素是 div,而不是 selector 最后的 em,那只要一步就能排除。只有在匹配时,才会不断向上找父节点进行验证

正向解析是在试错,而逆向匹配则是在挑选正确的元素。因为匹配的情况远远低于不匹配的情况,所以逆向匹配带来的优势是巨大的

Why Hack

[CSS Hack]是实现浏览器样式兼容的兜底办法,能不用就尽量不要使用。但是,针对一些浏览器的bug,比如老版本IE的bug,有时使用CSS Hack是不得已而为之的做法

比如,对于IE6-浏览器主要使用下划线_和中划线-这两种字符实现hack。如下所示,在IE6浏览器中,div的文本颜色为蓝色,其他浏览器则为红色

div{
color:red;
_color:blue;
}
专门建立的学习Q-q-u-n: 731771211,分享学习方法和需要注意的小细节,不停更新最新的教程和学习技巧
(从零基础开始到前端项目实战教程,学习工具,全栈开发学习路线以及规划)

Why 伪类和伪元素

个人认为,[伪类]和[伪元素]是对HTML元素的一个扩展,通过它们可以丰富元素的样式表现

伪类即假的类,类似于通过添加一个实际的类来达到效果,比如常见的hover鼠标悬停效果

a:hover{background-color:lightblue;}/*浅蓝,鼠标悬停*/

伪元素即假的元素,类似于通过添加一个实际的元素才能达到。当然,添加的不是元素,而是生成内容,生成内容主要指由浏览器创建的内容,比如:before和:after

Why 单位

从广义上讲,单位

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值