美文网首页
CSS选择器详解

CSS选择器详解

作者: 敬酒_不吃 | 来源:发表于2019-03-21 16:37 被阅读0次
    要想将CSS样式应用于特定的HTML元素,首先需要找到该目标元素。在CSS中,执行这一任务的样式规则部分被称为选择器(选择符)。
    

    标签选择器(元素选择器)

    标签选择器是指用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的CSS样式。其基本语法格式如下:

    标签名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }  或者
    元素名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }  
    例:
    h1{
    width:100px;
    height:200px;
    }
    

    标签选择器最大的优点是能快速为页面中同类型的标签统一样式,同时这也是他的缺点,不能设计差异化样式。

    类选择器

    类选择器使用“.”(英文点号)进行标识,后面紧跟类名,其基本语法格式如下:

    .类名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
    
     标签调用的时候用 class=“类名”  即可。
    
    例:
     <div class="box"></div>
    
    .box{
    width:200px;
    height:300px;
    }
    

    类选择器最大的优势是可以为元素对象定义单独或相同的样式。
    1.长名称或词组可以使用中横线来为选择器命名。
    2.不建议使用“_”下划线来命名CSS选择器。
    3.不要纯数字、中文等命名, 尽量使用英文字母来表示。

    多类名选择器

    我们可以给标签指定多个类名,从而达到更多的选择目的。

    注意:

    1. 样式显示效果跟HTML元素中的类名先后顺序没有关系,受CSS样式书写的上下顺序有关。
    2. 各个类名中间用空格隔开。
    

    多类名选择器在后期布局比较复杂的情况下,还是较多使用的。

    <div class="pink fontWeight font20">亚瑟</div>
    <div class="font20">刘备</div>
    <div class="font14 pink">安琪拉</div>
    <div class="font14">貂蝉</div>  
    

    id选择器

    id选择器使用“#”进行标识,后面紧跟id名,其基本语法格式如下:

    #id名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
    

    该语法中,id名即为HTML元素的id属性值,大多数HTML元素都可以定义id属性,元素的id值是唯一的,只能对应于文档中某一个具体的元素。
    用法基本和类选择器相同。

    id选择器和类选择器区别

    W3C标准规定,在同一个页面内,不允许有相同名字的id对象出现,但是允许相同名字的class。

    类选择器(class) 好比人的名字, 是可以多次重复使用的, 比如 张伟 王伟 李伟 李娜

    id选择器 好比人的身份证号码, 全中国是唯一的, 不得重复。 只能使用一次。

    id选择器和类选择器最大的不同在于 使用次数上。

    通配符选择器

    通配符选择器用“*”号表示,他是所有选择器中作用范围最广的,能匹配页面中所有的元素。其基本语法格式如下:

    * { 属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
    

    例如下面的代码,使用通配符选择器定义CSS样式,清除所有HTML标记的默认边距。

    * {
      margin: 0;                    /* 定义外边距*/
      padding: 0;                   /* 定义内边距*/
    }
    

    伪类选择器

    伪类选择器用于向某些选择器添加特殊的效果。比如给链接添加特殊效果, 比如可以选择 第1个,第n个元素。

    为了和我们刚才学的类选择器相区别,  类选择器是一个点 比如 .demo {}   而我们的伪类 用 2个点 就是 冒号  比如  :link{}
    

    链接伪类选择器

    - :link      /* 未访问的链接 */
    - :visited   /* 已访问的链接 */
    - :hover     /* 鼠标移动到链接上 */
    - :active    /* 选定的链接 */
    

    注意写的时候,他们的顺序尽量不要颠倒 按照 lvha 的顺序。 love hate 爱上了讨厌 记忆法 或者 lv 包包 非常 hao

    a {   /* a是标签选择器  所有的链接 */
                font-weight: 700;
                font-size: 16px;
                color: gray;
            }
    a:hover {   /* :hover 是链接伪类选择器 鼠标经过 */
                color: red; /*  鼠标经过的时候,由原来的 灰色 变成了红色 */
    }
    

    结构(位置)伪类选择器(CSS3)

    • :first-child :选取属于其父元素的首个子元素的指定选择器
    • :last-child :选取属于其父元素的最后一个子元素的指定选择器
    • :nth-child(n) : 匹配属于其父元素的第 N 个子元素,不论元素的类型
    • :nth-last-child(n) :选择器匹配属于其元素的第 N 个子元素的每个元素,不论元素的类型,从最后一个子元素开始计数。
      n 可以是数字、关键词或公式
    li:first-child { /*  选择第一个孩子 */
                    color: pink; 
                }
    li:last-child {   /* 最后一个孩子 */
                    color: purple;
                }
    li:nth-child(4) {   /* 选择第4个孩子  n  代表 第几个的意思 */ 
                    color: skyblue;
                }
    

    目标伪类选择器(CSS3)

    :target目标伪类选择器 :选择器可用于选取当前活动的目标元素

    :target {
            color: red;
            font-size: 30px;
    }
    

    并集选择器

    并集选择器(CSS选择器分组)是各个选择器通过逗号连接而成的,任何形式的选择器(包括标签选择器、class类选择器id选择器等),都可以作为并集选择器的一部分。如果某些选择器定义的样式完全相同,或部分相同,就可以利用并集选择器为它们定义相同的CSS样式。

    h1,.box,#box2{
    width:100px;
    height:100px;
    

    后代选择器

    后代选择器又称为包含选择器,用来选择元素或元素组的后代,其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。

    <div class="parent">
    <div class="son"></div>
    </div>
    
    .parent .son{
    width:100px;
    }
    

    子元素选择器

    子元素选择器只能选择作为某元素子元素的元素。其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个 > 进行连接,注意,符号左右两侧各保留一个空格。

    比如:
      .demo > h3 {color: red;}   说明  h3 一定是demo 亲儿子。  demo 元素包含着h3。
    

    属性选择器

    **选择器 **示例 **含义
    **E[attr]****** 存在attr属性即可
    **E[attr=val]****** 属性值完全等于val
    **E[attr*=val]****** 属性值里包含val字符并且在“任意”位置
    **E[attr^=val]****** 属性值里包含val字符并且在“开始”位置
    **E[attr$=val]****** 属性值里包含val字符并且在“结束”位置
    /* 获取到 拥有 该属性的元素 */
    li[type] {
      border: 1px solid gray;
    }
    /* 获取 属性等于某个值的 元素 属性值 可以使用 引号进行包裹 */
    li[type="vegetable"] {
      background-color: green;
    }
    /* 使用空格分隔的 多个属性 其中有某个属性即可获取 */
    li[type~="hot"] {
      font-size: 40px;
    }
    /* 获取以某个属性开头的语法  */
    li[color^='green'] {
      background-color: orange;
    }
    /* 获取以某个值 结尾的属性 */
    li[type$='t']{
      color: hotpink;
      font-weight: 900;
    }
    
    /* 获取 属性中 拥有某个值的 元素 */
    li[type*=ea] {
      font-size: 100px;
    }
    /*  如果属性的值 只有very 也能够获取  用来获取 多个属性 并且 使用-连接 */
    li[price|='very'] {
      background-color: darkred;
    }
    
    <ul>
      <li type='fruit' color='green'>西瓜</li>
      <li type='vegetable' color='greenyellow'>西兰花</li>
      <li type='meat'>牛肉</li>
      <li type='meat hot'>猪肉</li>
      <li type='drink hot'>可乐</li>
      <li type='drink hot'>雪碧</li>
      <li price='very-cheap'>红酒</li>
      <li price='very'>白酒</li>
    </ul>
    

    伪元素选择器(CSS3)

    1. E::first-letter文本的第一个单词或字(如中文、日文、韩文等)
    2. E::first-line 文本第一行;
    3. E::selection 可改变选中文本的样式;
    p::first-letter {
      font-size: 20px;
      color: hotpink;
    }
    
    /* 首行特殊样式 */
    p::first-line {
      color: skyblue;
    }
    
    p::selection {
      /* font-size: 50px; */
      color: orange;
    }
    

    4、E::before和E::after

    在E元素内部的开始位置和结束位创建一个元素,该元素为行内元素,且必须要结合content属性使用。

    div::before {
      content:"开始";
    }
    div::after {
      content:"结束";
    }
    

    E:after、E:before 在旧版本里是伪元素,CSS3的规范里“:”用来表示伪类,“::”用来表示伪元素,但是在高版本浏览器下E:after、E:before会被自动识别为E::after、E::before,这样做的目的是用来做兼容处理。

    ":" 与 "::" 区别在于区分伪类和伪元素

    相关文章

      网友评论

          本文标题:CSS选择器详解

          本文链接:https://www.haomeiwen.com/subject/vaizmqtx.html