选择器的优先级(决定那个样式生效):

important; > 内联样式 > id选择器> 类和伪类 > 元素选择器 > 通配选择器> 继承样式无优先级

最大        >   1000     >    100    >     10       >        1        >        0        >      无

(内联样式,也叫 行内样式)

在 CSS 里面定义自增函数 counter-increment

  • #list li {
    background-color: red; counter-increment: num; // 定义自增函数
    }
    // 相当于
    // function counter(){ var num; num++; } #list li:nth-child(10n)::before {
    content: counter(num); // 调用自增函数 position: absolute;
    top: 30px;
    left: 0px;
    }



id选择器:

  • #nav {
    background-color: yellow;
    }

类选择器:

  • .article {
    background-color: skyblue;
    }

属性选择器:

  • // 含 title 属性的元素
    p[title] { background-color: red; } // title="photos" 的元素
    p[title = "photos"] { background-color: red; } // title 的属性值以 "pho" 开头的元素
    p[title ^= "pho"] { background-color: red; } // title 的属性值以 "s" 结尾的元素
    p[title $= "s"] { background-color: red; } // title 的属性值含有 "pho" 的元素
    p[title *= "pho"] { background-color: red; } // title 的属性值含有 "photos" 单词的元素
    p[title ~= "photos"] { background-color: red; }

伪类选择器:

  • // 最佳顺序 
    :link {
    color: blue;
    } :visited {
    color: pink;
    } :hover {
    color: yellow;
    } :active {
    color: red;
    }
  • :focus {
    background-color: #bfc;
    }
  • 不使用 js 实现轮播图

    • bottom:target {
      /* 操作<a href="#bottom"> 超链接 点击 a元素,跳转到目标元素 */
        /* 给目标元素加样式 */
        border: 1px solid red;
      }
  • 文不能内容选中样式

    • ::selection {
      color:yellow;
      background-color: black;
      }

子元素的伪类选择器(CSS3 结构类):

  • 选中没有任何子节点的元素

    • // <div id="test_box"></div>
      
      #test_box:empty { background-color: skyblue; }
  • 根据索引

    • p:first-child { background-color: blue; }    // 第一个子元素
      p:last-child { background-color: blue; } // 最后一个子元素
      p:only-child { background-color:red; } // 唯一子元素 // 第一个元素的索引为 1
      p:nth-child(1) { background-color: blue; } // 最后一个元素开始计算,索引为 1 的元素
      p:nth-last-child(1) { background-color: red; } // 实质上是从 0 开始计算,但是并没有第 0 个子元素
      // 之所以从 0 开始,是为了 使用表达式选择元素
      p:nth-child(2n){ background-color: blue; } // 偶数索引的元素
      p:nth-child(2n+1){ background-color: blue; } // 奇数索引的元素
      p:nth-child(3n+1){ background-color: blue; } // 索引 1 4 7...的元素 // 偶数索引的元素
      p:nth-child(even) { background-color: blue; } // 奇数索引的元素
      p:nth-child(odd) { background-color: blue; }
  • 根据类型
    • // 1. 先找到 修饰元素 的类型  此处为 li
      // 2. 再找到所有此类型的同类同辈元素,根据表达式计算索引,选中元素
      // 3. n 从 0 开始,从顺数第一个特定类型的元素开始 // 顺数,子元素为 li 的 偶数索引的 子元素
      li:nth-of-type(2n){ background-color: blue; } li:first-of-type(){ background-color: blue; } // 第一个 li
      li:last-of-type(){ background-color: blue; } // 最后一个 li
      li:only-of-type(){ background-color: blue; } // 唯一子元素 li // 1. 先找到 修饰元素 的类型 此处为 li
      // 2. 再找到所有此类型的同类同辈元素,根据表达式计算索引,选中元素
      // 3. n 从 0 开始,从倒数第一个特定类型的元素开始 // 倒数,子元素为 li 的 奇数索引的 子元素
      li:nth-last-of-type(2n+1){ background-color: blue; }

元素的伪类选择器(严格语法要求 ::) : 

  • p::first-letter { background-color: red; }
    
    p::first-line { background-color: blue; }
    
    p::before {
    content: "段前的内容" /* 段前行内伪元素 相当于 <p><span>段前的内容</span> 哈哈哈哈哈哈</p> */
    } p::after {
    content: "段后的内容" /* 段后行内伪元素 相当于 <p>哈哈哈哈哈哈<span>段后的内容</span></p> */
    }

    // 伪元素 与 元素:
    // 1. 无法通过 js 获取其 DOM对象
    // 2. 无法通过浏览器直接查看伪元素
    // 3. 无法被鼠标选中(unable to select)
    // 4. 伪元素的默认类型是 inline // 伪元素 与 伪类:
    // 1. 有两个冒号的 :: 一定是伪元素
    // 2. 伪类修饰元素的状态,而伪元素是一个特殊的元素(假行内元素,默认类型是 inline) // 使用伪元素注意事项:
    // 1. ::before 和 ::after 必须设置 content,否则不生效
    // 2. ::before 和 ::after 显示背景图,必须 display 设置为块元素
    // 3. ::before 和 ::after 设置为 display: inline-block; 时,必须额外设置 vertcal-align: middle;

否定伪类选择器:

  • p:not(.white_boy) { background-color: blue; }
    
    ul :not(span){ background-color: red; }

元素选择器:

  • div {}

统配选择器:

  • * {}
    
    div > * {}

后代元素选择器:

  • div span{} 

子元素选择器:

  • div>span {}

紧接着的兄弟元素选择器:

  • span + p {}

后所有的兄弟元素选择器:

  • span ~ p {} 

(18)0907_CSS选择器详解的更多相关文章

  1. CSS选择器详解(伪类) 转 http://blog.csdn.net/Panda_m/article/details/50084699

    CSS选择器详解 之 伪类 伪类对大小写不敏感 结构伪类选择器 结构伪类是CSS3新增的类型选择器,利用DOM树实现元素过滤,通过文档结构的相互关系来匹配元素,可以减少class和id属性的定义,使文 ...

  2. CSS3 基础(1)——选择器详解

    CSS3选择器详解 一. 属性选择器 在CSS3中,追加了三个属性选择器分别为:[att*=val].[att^=val]和[att$=val],使得属性选择器有了通配符的概念. 选择器 示例 描述 ...

  3. Jquery 选择器 详解 js 判断字符串是否包含另外一个字符串

    Jquery 选择器 详解   在线文档地址:http://tool.oschina.net/apidocs/apidoc?api=jquery 各种在线工具地址:http://www.ostools ...

  4. CSS系列(8) CSS后代选择器和子选择器详解

    一.CSS后代选择器详解 1,  生动介绍基本概念 一个标签嵌B在另一个标签A内部,B就是A的后代. 而且,B的后代也是A的后代,这就叫“子子孙孙无穷尽也”. 比如: <div> < ...

  5. web前端学习(三)css学习笔记部分(6)-- 选择器详解

    9.选择器详解 9.1  属性选择器 CSS3 属性选择器,在 CSS3 中,追加了三个属性选择器分别为:[att*=val].[att^=val]和[att$=val],使得属性选择器有了通配符的概 ...

  6. web前端学习(三)css学习笔记部分(4)-- CSS选择器详解

    4.  元素选择器详解 4.1  元素选择器 4.2  选择器分组 用英文逗号","相连,使用相同的样式表 使用通配符对所有元素进行通用设定. 4.3  类选择器详解 4.3.1. ...

  7. 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法

    第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一.    案例说明 本节定义了类Sta ...

  8. css 10-CSS3选择器详解

    10-CSS3选择器详解 #CSS3介绍 CSS3在CSS2基础上,增强或新增了许多特性, 弥补了CSS2的众多不足之处,使得Web开发变得更为高效和便捷. #CSS3的现状 浏览器支持程度不够好,有 ...

  9. 18.Java 封装详解/多态详解/类对象转型详解

    封装概述 简述 封装是面向对象的三大特征之一. 封装优点 提高代码的安全性. 提高代码的复用性. "高内聚":封装细节,便于修改内部代码,提高可维护性. "低耦合&quo ...

随机推荐

  1. nodemon 热更新

    sudo npm i -g nodemon nodemon app.js

  2. JDBC 关闭数据库连接与自动提交【转】

    // Jdbc关闭数据库连接时,会隐含一个提交事务的操作 private final static String DB_DRIVER = "oracle.jdbc.driver.Oracle ...

  3. Docker下安装rabbitmq

    拉取镜像 docker pull rabbitmq:-management 启动镜像(默认用户名密码),默认guest 用户,密码也是 guest docker run -d --: -p : rab ...

  4. MyBatis # $区别

    方式一: <select id="getUserById" resultType="User" parameterType=”int”> SELEC ...

  5. [再寄小读者之数学篇](2014-06-23 Hardy 空间、BMO空间与 Triebel-Lizorkin 空间)

    $$\bex 0<p<\infty\ra H_p=\dot F^0_{p,2};\quad BMO=\dot F^0_{\infty,2}. \eex$$ see [H. Triebel, ...

  6. jQuery1.9及以上版本检测IE版本号

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更新的 2.0 版本中,将不再支持 IE 6/7/8. ...

  7. artDialog记录

    //在子页面加按钮的方式 var api = frameElement.api, W = api.opener; api.button({ id: 'valueOk', name: '确定', cal ...

  8. redis 数据结构及应用场景

    1. String 常用命令: get.set.incr.decr.mget等 应用场景: String是最常用的数据类型,普通的key/value都可以归为此类,value其实不仅是String,也 ...

  9. Django ----- app 和 ORM的操作和介绍

    创建APP ORM 介绍 ORM的操作 说明一下 GET 和 POST 的区别: , GET ①获取一个页面 ②提交数据 数据显示在URL ?user=alex&pwd=alexdsb ,PO ...

  10. AngularJS初识

     AngularJS 简介 AngularJS是一个javaScript框架,是一个用JavaScript编写的库,通过指令扩展了HTML,且通过表达式绑定数据到HTML中. AngularJS使开发 ...