• [转]css选择器优先级深入理解


    转载自:http://www.jb51.net/css/67029.html

    一、基础选择器

    css基础选择器有标签选择器、类选择器、id选择器、通用选择器

    1.标签选择器 

    每个html页面都由很多个标签组成,通过标签选择器可以对某类标签应用相应的样式,如对p标签应用下面的样式,则页面中所有的p标签都会生效 

    p{ font-size:12px; color:red; background:blue; } 

    2.类选择器

    类选择器是css非常常用的选择器,在html中可以为某个标签增加class属性,如

    <div class="error"> </div>

    则可以为对应的class设置样式 

    error{ width:200px; padding:5px; color:red;} 

    类选择器可以复用,如对页面中的p标签也可以应用

    <p class="error"> </p> 

    另外,一个标签可以有多个类选择器,不同的值用空格隔开,这样多个样式便可以应用的一个标签上。 

    3.id选择器

    id选择器和类选择器一样,用的也很频繁,但是id在每个html页面的值必须是唯一的,所以它不可以复用,如: 

    <div id="content"> </div> 

    这里补充说明下id与class的命名规范,命名时尽可能的保持名称与表现形式无关,如 某段提示文字显示为红色,可以命名为red,但是若日后改成蓝色,则red名与之不对应,更好的选择如error或tips。所以应该根据它是什么来命名 而不是根据它的外观如何来命名。 

    4.通用选择器

    不同于上面的三种选择器,通用选择器要强大的多,它可以对页面中的所有html标签应用样式,当然也正是因为如此强大,反而限制了它的灵活性,在实际应用中用的较少。一般简单的css reset会用到,如: 

    *{ margin:0; padding:0;} 
    二、组合选择器

    1.群主选择器

    在使用选择器时,有的元素样式是一样的,每次都为不同的选择器单独定义样式的话太繁琐,这时我们便可以使用群主选择器集中定义样式。不同标签或类以逗号隔开。如: 

    div, h2, .error{ font-size:14px; color:red;} 

    这样我们便同时给div, h2, .error一起定义了样式。 

    2.子选择器

    当我们想让父元素下的某个子元素表现为特定的样式时,我们可以用子选择器,如 

    div>a{ color:blue; text-decoration:none;} 

    此时,div下的子元素a都将变成蓝色字体,无下划线。 

    3.后代选择器

    在上面的例子中,利用子选择器,只可以设置div下的子元素a,但是若想改变div下的所有a标签的样式,就需要用到后代选择器。代码如下: 

    div a{ color:blue; text-decoration:none;}

    4.同胞选择器

    除了上面的子选择器与后代选择器,我们可能还希望找到兄弟两个当中的一个,如一个标题h1元素后面紧跟了两个段落p元素,我们想定位第一个段落p元素,对它应用样式。我们就可以使用相邻同胞选择器。看下面的代码: 

    h1 + p{font-size:14px; background:#ccc; } 
    三、属性选择器说明:以下提到的E表示元素,attr表示属性,val表示属性的值

    1.E[attr]选择器

    匹配所有具有attr属性的E元素,不考虑它的值。如以下代码可以匹配所有含有title属性的p元素。 

    p[title]{font-size:12px; color:#666;} 

    2.E[attr=val]

    匹配所有attr属性值为val的E元素。如匹配所有class值为test的p元素 

    p[class="test"]{color:red;} 

    3.E[attr~=val]

    匹配具有attr属性且属性值为用空格分隔的字符列表,其中一个值等于val的E元素。如: 

    p[class~="name"]{font-size:12px; color:red;}
    <div class="test name">111111</div>
    <
    div class="name">111111</div>

    则第一个div会应用上面的样式。 

    4.E[attr|=val]

    匹配具有attr属性且属性值为用连接符分隔的字符串,并以val开头的E元素。 

    p[class|="test"]{font-size:12px; color:red;} 
    <div class="test">111111</div>
    <div class="test-123">111111</div> 

    则第二个div会应用上面的样式。

    最后不得不提的是IE6不支持子选择器、同胞选择器和属性选择器,因此使用时需注意。

    css优先级

    优先级算是css中的一个非常重要的知识点,也是笔试面试中经常会考到的知识点。

    一、什么是css优先级

    css优先级,即是指CSS样式在浏览器中被解析的先后顺序。

    二、css优先级规则

    比较简单易记的一种方法就是给不同选择器分配不同的值:

    1.id选择器默认优先级最高,其权值为100

    2.class选择器、属性选择器和伪类选择器的权值为10

    3.标签选择器的优先级较低,其权值为1

    所以在比较样式的优先级时,只需统计选择符中的id、class、标签名个数,然后把对应的权值相加即可。根据结果便可得出优先级高低。

    1.结果较大的优先级较高

    2.结果相同,则后定义的样式优先级较高

    3.如果样式值中含有!important,则该值优先级最高

    举例:

    h2{color:blue;}//其权值为1 
    #content{color:#666;}//其权值为100p 
    .test{color:#ccc;}//其权值为1+10=11 
    #main div .test{color:red;}//其权值为100+1+10=111div 
    #main .left #nav{color:#000}//其权值为1+100+10+100=211 
  • 相关阅读:
    关于使用easyui dataGrid遇到的小bug问题
    构造带清除按钮的combo
    ajax方式提交数据时“+”的处理
    JavaScript call方法
    stackoverflow上的一个关于传递类对象的问题
    经典回溯算法(八皇后问题)
    c++构造函数(初始化式)被忽略的东西
    跟着<<C++Primer 学set容器>>
    排序算法(内部排序)总结
    hosts文件无法修改的问题解决方案
  • 原文地址:https://www.cnblogs.com/icyJ/p/4226751.html
Copyright © 2020-2023  润新知