CSS2、CSS3 选择器合集

CSS 选择器是 CSS 规则的第一部分。它是元素和其他部分组合起来告诉浏览器哪个 HTML 元素应当是被选为应用规则中的 CSS 属性值的方式。选择器所选择的元素,叫做“选择器的对象”。

样式的冲突

当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突。

选择器的权重值

选择器权重
!important最高优先级(慎用)
内联样式1000
id选择器100
类(class)和伪类选择器、属性选择器10
元素(又叫标记、标签)选择器、伪元素选择器1
通配选择器、子代选择器0
继承的样式没有优先级(最低)

当多个选择器,选中的是同一个元素,且都为他们定义了样式,如果属性发生冲突了,会选择权重高的来执行。

CSS 选择器的优先级顺序:

内联样式 > ID选择器 > 类选择器 > 标签选择器

优先级的计算:

优先级是由 A、B、C、D 四个值来决定的,具体计算规则如下

  • A={如果存在内联样式则为1,否则为0}
  • B={ID选择器出现的次数}
  • C={类选择器、属性选择器、伪类选择器出现的总次数}
  • D={标签选择器、伪元素选择器出现的总次数}

计算示例:

/*
 A=0 不存在内联样式
 B=0 不存在ID选择器
 C=1 有⼀个类选择器
 D=3 有三个标签选择器
 最终计算结果:{0,0,1,3}
*/
div ul li .red { ... }

计算完成后,我们通过从A到D的顺序进⾏值的⼤⼩⽐较,权重由A到D从⾼到低,只要⽐较出最⼤值即可。例如上⾯的两个样式:

样式⼀的A=0,样式⼆的A=0 【相等,继续往下⽐较】
样式⼀的B=0 < 样式⼆的B=1 【样式⼆的⼤,不继续往下⽐了,即认为样式⼆的优先级更⾼】

元素选择器

以文档语言对象类型作为选择器,即使用结构中元素名称作为选择器。例如body、div、p,img,em,strong,span…等。

所有的页面元素都可以作为选择器。

语法元素名称{属性:属性值;}

/* 例如 */
div{
    width: 200px;
    height: 200px;
}

用法:

  • 如果想改变某个元素得默认样式时,可以使用元素选择器;

    如:改变一个div、p、h1样式

  • 当统一文档某个元素的显示效果时,可以使用元素选择器。

    如:改变文档所有p段落样式

id 选择器

语法#id名{属性: 属性值;}

/* 例如 */
#box{
    width:300px; 
    height:300px;
}

说明

  • 当我们使用id选择器时,应该为每个元素定义一个id属性

    <!-- 例如 -->
    <div id="box"></div>
    
  • id选择器的语法格式是“#”加上自定义的id名

    /* 例如 */
    #box{
        width:300px; 
        height:300px;
    }
    
  • 起名时要取英文名,不能用关键字:(所有的标记和属性都是关键字)

    如:head标记

  • 一个id名称只能对应文档中一个具体的元素对象。(唯一性)

群组选择器

语法选择符1,选择符2,选择符3......{属性: 属性值;}

/* 例如 */
#top1,#nav1,h1{
    width:960px;
}

说明:当有多个选择符应用相同的声明时,可以将选择符用“,”分隔的方式,合并为一组。

margin:0 auto;实现盒子的水平居中

class/类 选择器

语法.class名{属性: 属性值;}

/* 例如 */
.top{
    width: 200px;
    height: 200px;
}

说明:

  • 当我们使用class选择符时,应先为每个元素定义一个class名称

    <!-- 例如 -->
    <div class="top"></div>
    
  • class选择器的语法格式

    /* 例如 */
    .top{
        width:200px; 
        height:100px; 
        background:green;
    }
    

用法:class选择器更适合定义一类样式;

class名字的规则

  • 可以英文、连字符(-)、下划线(_)、英文字母开头
  • 不可以数字开头
  • 一般不可以出现中文 特殊符号
  • 避免出现关键词
  • 严格区分大小写
  • 尽量见名知意
  • 多个单词连接用_ 驼峰 (userName)

*通配符选择器

语法:*{属性: 属性值;}

/* 例如 */
*{
    padding: 0;
    margin: 0;
}

说明:通配选择符的写法是“*”,其含义就是所有元素

*{margin:0; padding:0;}代表清除所有元素的默认边距值和填充值;

后代(或包含)选择器

语法:选择符1 选择符2 {属性:属性值;}

/* 例如 */
div p{
    width:200px; 
    height:100px; 
    background:green;
}

说明:含义就是选择符1中包含的所有选择符2;

用法:当我的元素存在父级元素的时候,我要改变自己本身的样式,可以不另加选择符,直接用包含选择器的方式解决。

<style>
    .list li{
        background:red;
    }
</style>
<!-- 分割线 -->
<body>
    <ul class="list">
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>

注意

  1. 后面的选择器必须是前面的选择器的后代
  2. 最终作用会作用到最后一个选择器的身上

层级选择器

E>F (子代选择器) 选择匹配的F元素,且匹配的F元素所匹配是E元素的子元素**(CSS2)**

E+F (相邻兄弟选择器) 选择匹配的F元素,且匹配的F元素紧位于匹配的E元素的后面**(CSS2)**

E~F (通用兄弟选择器) 选择匹配的F元素,且位于匹配的E元素后的所有匹配的F元素(同一层级) (CSS3)

后代选择器和子代选择器的区别:

简单的说就是:

后代选择器是提到的后代(包括子代、孙子…),而子代选择器提到的子代只是包含它的下一代。

实例:

<style>
    /* 使用子代选择器 */
    .box>p{
        background-color: red;
    }
</style>
<!-- 分割线 -->
<body>
    <div class="box">
        <p>p1</p>
        <p>p2</p>
        <div>
            <p>p3</p>
        </div>
    </div>
</body>
<style>
    /* 使用后代选择器 */
    .box p{
        background-color: red;
    }
</style>
<!-- 分割线 -->
<body>
    <div class="box">
        <p>p1</p>
        <p>p2</p>
        <div>
            <p>p3</p>
        </div>
    </div>
</body>

效果图

请添加图片描述
请添加图片描述

CSS 伪元素选择器

伪元素是一个附加在选择器末的关键词,允许你对被选择元素的特定部分修改样式。

常见的伪元素

伪元素描述
::before在元素的最前面添加内容
::after在元素的最后面添加内容
::first-letter第一个字符的样式
::first-line第一行的样式
::selection用户选中的内容的样式(css3)

:伪元素的css属性中content属性必须写

content属性作用:伪元素要添加的内容(添加了内容之后默认为行内元素

注意:::before、::after、::first-letter、::first-line、::selection这四个的双冒号可以改为单冒号(例::before)

::selection只能使用双冒号,并且只能改变文本颜色和背景颜色

属性选择器

css2

属性选择器描述
E[attr]选择具有attr属性的元素E
E[attr="value"]选择具有attr属性,并且属性值是value的元素E

css3

属性选择器描述
E[attr$="value"]选择具有attr属性,并且属性值是value结尾的元素E
E[attr^="value"]选择具有attr属性,并且属性值是value开头的元素E
E[attr*="value"]选择具有attr属性,并且属性值中有value的元素E

伪类选择器(CSS3)

CSS 伪类 是添加到选择器的关键字,指定要选择的元素的特殊状态。

结构伪类选择器

nthchild选择器
nthchild选择器描述
E:nth-child(n)同级中第n个元素,并且这个元素是E
E:nth-last-child(n)同级中倒数第n个元素,并且元素是E
E:first-child同级中第1个元素,并且这个元素是E
E:last-child同级中最后1个元素,并且这个元素是E
    <style>
        li:nth-child(3){
            background-color: red;
        }
        li:nth-last-child(2){
            background-color: blue;
        }
        li:first-child{
            background-color: yellow;
        }
        li:last-child{
            background-color: green;
        }
    </style>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
</body>

效果图:

请添加图片描述

nthtype选择器
nthtype选择器描述
E: nth-of-type(n)同级中同类型的第n个元素,并且这个元素是E
E: nth-last-of-type(n)同级中同类型的倒数第n个元素,并且这个元素是E
E: frist-of-type同级中同类型的第1个元素,并且这个元素是E
E:last-of-type同级中同类型的最后个元素,并且这个元素是E
E:only-of-type同级中同类型的唯一一个元素,并且这个元素是E
<style>
    p:nth-of-type(3) {
        background-color: red;
    }
    p:nth-last-of-type(1) {
        background-color: pink;
    }
    a:first-of-type {
        background-color: green;
    }
    a:last-of-type {
        background-color: yellow;
    }
    b:only-of-type {
        background-color: cyan;
    }
</style>
<body>
    <div>
        <p>p1</p>
        <p>p2</p>
        <a href="">去百度1</a>
        <a href="">去百度2</a>
        <span>span1</span>
        <span>span2</span>
        <p>p3</p>
        <p>p4</p>
        <a href="">去百度3</a>
        <a href="">去百度4</a>
        <span>span3</span>
        <span>span4</span>
        <b>b</b>
    </div>
</body>

效果图

请添加图片描述

E:nth-child(n)和E:nth-of-type(n)区别

  • E:nth-child(n):是同级中第n个元素,并且这个元素是E
  • E:nth-of-type(n):是这个元素是E,并且是同级中同类型的第n个元素
其他结构伪类选择器
结构伪类选择器描述
:root选择根元素 html
:empty选择空元素
E:only-child同级中唯一一个元素,并且这个元素是E
<style>
    div {
        width: 100px;
        height: 100px;
        background-color: pink;
    }
    div:empty {
        border: 5px solid #000;
    }
    div:only-child {
        border: 5px solid red;
    }
</style>
<body>
    <div></div><br>
    <div>
        <div>div1</div>
    </div><br>
    <div>
        <div>div2</div>
        <div>div3</div>
    </div>
</body>

效果图

请添加图片描述

交集结构伪类选择器

E:nth-child(n)

n可以为数字、表达式 (2n 2n+1 3n 3n+1…)、关键词:odd 奇数、even 偶数

<style>
    .box {
        width: 500px;
    }
    .box div {
        width: 80px;
        height: 80px;
        border-radius: 40px;
        background-color: green;
        float: left;
        text-align: center;
        line-height: 80px;
        color: #fff;
        margin-right: 20px;
        margin-bottom: 20px;
    }
    /* 核心代码 */
    .box div:nth-child(2n) {
        background-color: #000;
    }
</style>
<body>
    <!-- div.box>div*10{$} -->
    <div class="box">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <div>6</div>
        <div>7</div>
        <div>8</div>
        <div>9</div>
        <div>10</div>
    </div>
</body>

效果图

请添加图片描述

目标伪类选择器

E:target 选择锚点元素,锚点必须处于激活状态,元素是E

<style>
    div {
        width: 200px;
        height: 200px;
        border: 3px solid #000;
        float: left;
        font-size: 28px;
        text-align: center;
        line-height: 200px;
    }
    /* div这个锚点处于激活状态的时候 */
    div:target {
        background-color: pink;
    }
</style>
<body>
    <a href="#box1">box1</a>
    <a href="#box2">box2</a>
    <a href="#box3">box3</a>
    <div id="box1">1</div>
    <div id="box2">2</div>
    <div id="box3">3</div>
</body>

效果图

请添加图片描述

UI状态伪类选择器

  • E:enabled 元素处于可用状态 — 表单控件可以用
  • E:disabled 元素处于禁用状态 — 表单控件可以用,元素要设置disabled属性
  • E:checked 元素处于选中状态 — 单选框、多选框
<style>
    input[type="text"]:enabled {
        background-color: pink;
    }
    input[type="password"]:disabled {
        background-color: yellow;
    }
    input[type="checkbox"]:checked {
        width: 20px;
        height: 20px;
    }
</style>
<body>
    <p>
        <input type="text">
        <input type="password" disabled>
    </p>
    <p>
        <input type="checkbox">足球
        <input type="checkbox">篮球
        <input type="checkbox">羽毛球
    </p>
</body>

效果图

请添加图片描述

否定伪类选择器

E:not(val) 选中不是val选择器的元素E

<style>
    li {
        width: 400px;
        height: 40px;
        line-height: 40px;
    }
    li:not(:last-of-type) {
        border-bottom: 1px solid #000;
    }
</style>
<!-- 分隔符 -->
<body>
  <ul>
    <li>文本文本文本</li>
    <li>文本文本文本</li>
    <li>文本文本文本</li>
    <li>文本文本文本</li>
    <li>文本文本文本</li>
  </ul>
</body>

效果图

请添加图片描述

a标签的伪类选择器(CSS2)

通过观察发现a标签存在一定的状态。

  1. 默认状态,从未被访问过;
  2. 被访问过的状态;
  3. 鼠标长按的状态;
  4. 鼠标悬停在a标签上的状态。
1.什么是a标签的伪类选择器?

作用:专门用来修改a标签不同状态的样式的。

2.格式

:link 修改从未被访问过的状态下的样式;(默认)
:visited 修改被访问过状态下的样式;
:active 修改鼠标长按的状态下的样式;
:hover 修改鼠标悬停在a标签上的状态下的样式。

这个伪类选择器除了可以用在a标签上,还可以用在其它的任何标签上

3.注意点
  1. a标签的伪类选择器可以单独出现也可以一起出现;

  2. a标签的伪类选择器如果一起出现,那么有严格的顺序要求。(编写的顺序必须遵守爱恨原则love hate l、v、h、a)lvha

  3. 如果默认状态的样式和被访问过状态的样式一样,可以缩写:

    a{
        color: skyblue;
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值