1.各个主流浏览器都定义私有属性,webkit类型浏览器(safari,chrome)私有属性以-webkit-前缀开始,Gecko(firefox)的私有属性以-moz-开头,opera浏览器以-o-开头,而ie浏览器以-ms-前缀开头。
2.css的样式代码必须保存在css类型的文本文件中,或者放在网页内<style>标签中,或放在网页标签style属性中。
包括内联样式,内嵌样式,连接样式,导入样式。
内嵌样式:将css写在网页源文件的头部,即在<head>标签中,并放在style标签中。
连接样式:使用<link>标签 <link href="xxx" type="text/css" rel="stylesheet"> 其中rel表示的该标签关联的是样式标签。
导入样式:@import url("xxxx.css") 或者简写为@import "xxx.css" 并且要放在style标签中。
连接样式和导入样式的区别:
①link属于HTML标签,@import属于css提供
②页面被加载时,link标签就会被加载,而@import会在页面加载完后才加载
③@import在ie5上能用,link没有兼容问题
④link权重高于@import
3.css的优先级
!import拥有最高优先级 .e{margin: 0 !important;} 注意要卸载分号前面
标签选择器,权值为1
伪元素选择器,权值为1
属性选择器,权值为10
类选择器,权值为10
id选择器,权值为100
比如:
h3 .f2{...} 加权值:1+10=11
被继承的权重为0,即不管父级样式的优先级有多大,被子集元素集成时,他的权重就是为0,因此有个元素显式声明的样式都可以覆盖继承该样式。
4.对于div,在firefox居中属性margin:0 auto, ie浏览器使用text-align:center
5.css选择器的分类
指定类选择器:把标签和类捆绑在一起定义选择器,就可以限定类适用的标签范围。并且能够提高权值。
例如:
p.f1{.....}
同理,可以应用于id选择器
div#box{...}
通配选择器:
*{...}
包含选择器:适用空格符来表示。表示的是样式作用于前一个选择器下的选择器。
#header p{....} 只作用域p元素
子选择器:作用同上,用>表示
#header > p{....} 只作用域p元素
相邻选择器:表示的必须满足两个元素相邻的关系(必须为兄弟关系),才能作用于后一个元素。用+表示、
p+h1{...} 作用于h1元素
兄弟选择器:用~表示,表示是能匹配后面同级所有元素。
比如:
p+h1{...} 作用于h1元素,如果后面还有h1元素,也能匹配,也就是能匹配多个元素。和相邻选择器的区别:相邻选择器只能匹配一个元素。
分组选择器:也就是能同时作用于多个元素,使用,分割
h1,h2,h3{....}
属性选择器:能够根据标签中定义的属性进行设置样式
具体的类型有:
E[attr] 指定属性名
E[attr="value"] 该属性只有为value的属性值 比如属性value为test1 那么title="test1 test2 test3"就不能匹配,但是下面的情况就可以匹配
E[attr~="value"] 该属性包含value的属性值
E[attr^="value"] 该属性以value属性值开头
E[attr$="value"] 该属性以value属性值结尾
E[attr*="value"] 该属性包含value
E[attr|="value"] 该属性包含value属性值开头或为value
可以匹配多个属性,比如E[attr1][attr2]
伪类选择器:使用:分隔。
常用的伪类选择器: 注意顺序,更改顺序可能出现其他的问题。
.demo a:link{...}
.demo a:visited{...}
.demo a:hover{...}
.demo a:active{...}
:before :after样式 比如添加边框阴影
a.button:before,a,button:after{
content:"";
position:absolute;
left:-1px
}
结构伪类选择器:
:first-child
:last-child
:nth-child()
:nth-last-child()
:nth-of-type() 表示的指定的类型的元素
:nth-last-of-type()
:first-of-type
:last-of-type
:only-child
:only-of-type
:empty
对于nth-child()的各个类型
:nth-child(length) length为具体的数字
:nth-child(n) n是特定用法,表示从0开始进行遍历
:nth-child(n*length) 表示的n的倍数
比如:
:nth-child(2n) 相当于:ntn-child(even)
:nth-child(2n+1) 相当于:nth-child(odd)
否定伪类:主要是为了处理特殊的样式
:not(selector) 选择器匹配非指定元素/选择器的每个元素。
状态伪类:能够匹配指定范围内的元素
:enabled
:disabled
:checked
目标伪类:形式为E:target ,表示匹配E的所有元素,并且匹配元素被URL指向
比如在Url中添加id值#red,那么就会匹配到响应的元素
<style>
div:target{background:red}
<style>
<div id="red">啦啦啦</div>