总结收集CSS的一些关键知识点
3种
<style>
.classA{ color:blue;}
.classB{ color:red;}
</style>
<body>
<p class='classB classA'> 123 </p>
</body>
<p>
标签内的文字的颜色是red,优先级相等的时候与文件中样式定义的先后顺序有关,即是后面的覆盖前面的,与在class定义中的先后关系无关。
下面列表中,选择器类型的优先级是递增的:
h1
)和伪元素(例如, ::before
).example
),属性选择器(例如, [type="radio"]
),伪类(例如, :hover
)#example
)*
), 关系选择符 (+, >, ~, ' '
) 和否定伪类(:not()
) 对优先级没有影响。(但是,在:not()
内部声明的选择器是会影响优先级)。style="font-weight:bold"
) 总会覆盖外部样式表的任何样式 ,因此可看作是具有最高的优先级。例外的!important
规则
!important
规则时,此声明将覆盖任何其他声明。一些经验法则
!important
!important
!important
!important
木已成舟!怎样覆盖!important
!important
的CSS规则!important
由于不同厂商的浏览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等), 对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。 我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本编写特定的CSS样式, 我们把这个针对不同的浏览器/不同版本写相应的CSS的过程,叫做CSS Hack。
分类
_
和星号*
,IE7能识别星号*
,但不能识别下划线_
,IE6~IE10都认识\9
,但firefox前述三个都不能认识。*html
.class{}
,IE7能识别*+html.class{}
或者*:first-child+html
.class{}
。<!--[if IE]>IE浏览器显示的内容 <![endif]-->
,针对IE6及以下版本:<!--[if lt IE 6]>只在IE6-显示的内容 <![endif]-->
。这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。一般情况下,我们尽量避免使用CSS hack,但是有些情况为了顾及用户体验实现向下兼容,不得已才使用hack。
使用hack虽然对页面表现的一致性有好处,但过多的滥用会造成html文档混乱不堪,增加管理和维护的负担。
display:none
元素完全从渲染树中消失,渲染的时候不占据任何空间。visibility: hidden
不会让元素从渲染树消失,渲染师元素继续占据空间,只是内容不可见。display: none
是非继承属性,子孙节点消失由于元素从渲染树消失造成,通过修改子孙节点属性无法显示。visibility: hidden
是继承属性,子孙节点消失由于继承了hidden,通过设置visibility: visible;
可以让子孙节点显示。display: none;
元素内容;会读取visibility: hidden;
元素内容。Sass、LESS、Stylus均是CSS预处理器。
CSS 预处理器用一种专门的编程语言,进行 Web 页面样式设计,然后再编译成正常的 CSS 文件,以供项目使用。CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题。 它支持嵌套、变量、混入、继承、函数等。
优势
CSS的一个重要优势是它可以帮助你将文档内容和其样式分离。但是有时候在样式而非文档中定义一些内容也是很有用的。
CSS可以在元素的前后插入文本:在选择器的后面加上::before
或者::after
。在声明中,指定 content 属性,并设置文本内容。
可以通过将content 属性值设置为某个图片的URL,可以将图片插到元素的前面或后面。