CSS class 和 id 两个选择器,哪个优先级高

html-css09

CSS class 和 id 两个选择器,哪个优先级高,第1张

CSS样式选择器分为4个等级,a、b、c、d,可以以这四种等级为依据确定CSS选择器的优先级。

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}(不建议使用)。