问题描述,想从图1写成图2的效果:
图1
图2
HTML的布局:
<div class="pic"> <ul> <li class="pic1"> <a href="javscript:;"> <!--空链接用来跳转,但是不需要跳转--> <div class="txt"> <p class="p1">作者 :潘安</p> <p class="p2">文艺风的生活</p> </div> </a> </li> <li class="pic4"> <a href="javscript:;"> <!--空链接--> <div class="txt"> <p class="p1">作者 :妮妮</p> <p class="p2">这是一个风景</p> </div> </a> </li> </ul> </div>css中的样式:
.pic ul li{ float: left; width: 100px; height:375px; } .pic ul .pic4{ background-image: url("../layer/4.jpg"); width: 600px; /*.pic ul li的权重比.pic4高,所以Pic4设置的不起作用, 权重是加和比较的,内联:1000 id:100 class:10 标签:1 所以这里设置 .pic ul .pic4 权重是21 .pic ul li 权重是10+1+1=12 }
分析:
因为灰色div(文字)宽度为100px,所以把li的样式设置为100px,则四个div默认都是100px,是图1的效果,
现在想让第四张图完全显示,所以直接写了
.pic4{********}
没有效果,想到这是权重惹的货!
====================================================================================================================================
关于权重的知识补充:
CSS权重是由四个数值决定:
图里是英文的,翻译一下,4个等级的定义如下:
第一等:代表内联样式,如: style=””,权值为1000。
第二等:代表ID选择器,如:#content,权值为100。
第三等:代表类,伪类和属性选择器,如.content,权值为10。
第四等:代表类型选择器和伪元素选择器,如div p,权值为1。
最后把这些值加起来,再就是当前元素的权重了。
权重算出来了,但是某个元素到底用哪个样式,还有3个规则,:
1,如果样式上加有!important标记,例如:
1
|
p{ color : gray !important } |
那么始终采用这个标记的样式。
2,匹配的内容按照CSS权重排序,权重大的优先;
可以看到,CSS权重只是决定应用哪个样式的其中一个步骤,不过这个步骤是最复杂的,上面已经说过了。
3,如果权重也一样,按照它在CSS样式表里声明的顺序,后声明的优先,例如:
1
2
|
h 1 { color : blue } h 1 { color : red } |
最终胜出的是color: red。