1.如果样式是行内样式(通过Style=””定义),那么a=1
2.b为ID选择器的总数
3.c为Class类选择器的数量。
4.d为类型选择器的数量
5.属性选择器,伪类选择器和class类选择器优先级一样,伪元素选择器和类型选择器一样
6.!important 权重最高,比 inline style 还要高
CSS权重是由四个数值决定,看一张图比较好解释:
图里是英文的,我翻译过来分别说一下,4个等级的定义如下:
第一等:代表内联样式,如: style=””,权值为1000。
第二等:代表ID选择器,如:#content,权值为100。
第三等:代表类,伪类和属性选择器,如.content,权值为10。
第四等:代表类型选择器和伪元素选择器,如div p,权值为1。
最后把这些值加起来,再就是当前元素的权重了。
权重算出来了,但是某个元素到底用哪个样式,还有3个规则,:
1,如果样式上加有!important标记,例如:
p{ color: gray !important}那么始终采用这个标记的样式。
2,匹配的内容按照CSS权重排序,权重大的优先;
可以看到,CSS权重只是决定应用哪个样式的其中一个步骤,不过这个步骤是最复杂的,上面已经说过了。
3,如果权重也一样,按照它在CSS样式表里声明的顺序,后声明的优先,例如:
h1 {color: blue}h1 {color: red}
最终胜出的是color: red。
具体解释见这里:http://www.w3school.com.cn/css/pr_class_position.asp
下面我从实际使用中说一下:
【static】定位模式用的不多,既然他的意思是没有定位,通常就不实用他。但css是层叠样式表,所谓层叠,意思就是哪个属性离当前html元素最近就执行那个属性。所以,同级选择器时css的行越往下权重越高。id比class的权重高。行内css权重大于页内css大于文件css。那么,如果起初定义过定位属性,后面又需要取消定位属性,在保证css结构的情况下,可以用这个属性来重置定位(取消起初定义的定位)。
【绝对定位absolute】绝对定位的意思是,不使用外边距和内边距修饰的定位。所以,你可以看到外边距是:margin-【left、right、top、bottom】,内边距是padding-【left、right、top、bottom】,而绝对定位只有【left、right、top、bottom】,所以就是绝对定位,绝对定位默认情况下是参照浏览器的窗口大小的。但,如果其父级元素有定位属性,则参照其父级元素的左上角。绝对定位会丢失元素自身的宽高值和原始位置,漂浮于其他层上方或下方。
【相对定位relative】相对定位是参照附近的元素进行定位,他可以使用内外边距,也可以使用绝对的方位值,和绝对定位不同的是,相对定位会保留元素自身的尺寸位置,而不浮动定位。
【关于绝对定位和相对定位】通常建议:
如果是全屏内容,可以直接使用绝对定位,如弹窗、浮动回到顶部、客服等
如果是希望固定区域内自由布局,则需要对父级指定相对定位属性(或者绝对定位属性)。
绝对定位的元素和其他元素出现了遮挡,可以为其他元素设置相对定位属性,同时设置z-index的值。
【固定定位fixed】fixed是把某个元素按照固定的位置呈现,它也是参照浏览器窗口的,和绝对定位差不多,但又不同,不同之处在于,他不随窗口的滚动移动位置。常用于固定导航条和回到顶部等模块中。
具体的,你可以写一个练习文件,中间放置一个960*960的div,设置下背景色,居中对齐,里面放置9个小div,设置宽度高度,外面放置4个div,也设置宽高。
中间的大div给予相对定位属性,里面的9个小div设置绝对定位,分别调整9个div为左上角、顶部居中、右上角、右侧垂直居中、右下角、底部居中、左下角、左侧垂直居中和绝对居中。
外部的四个div分别尝试使用绝对定位、相对定位和固定定位。
最后使用static重置一下。然后找一个游戏界面(自由零散布局),大致看下他的界面布局,理解下如何布局,然后看一些UI界面(自由规矩布局),理解下,最后回到网页(绝对规矩布局)。理解了这些,就可以用html当PS玩了。
float两个元素绝对靠紧,需要使用到margin和padding重置(有专门的css reset,来重置html元素的默认属性,html默认是有属性的,每个浏览器都不一样),重置后试试,实在不行尝试下使用 * {margin:0padding:0}(不建议使用)。