2. 新增选择器

CSS3新增了许多灵活查找元素的方法,极大的提高了查找元素的效率和精准度。

2.1 选择相邻兄弟

如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器,

h1 + p {
    margin-top:50px;
}

2.2 匹配选择器

匹配所有在#div元素之后的同级p元素。

 div ~ p {
    background-color: #f00;
 }

2.3 属性选择器(重点)

CSS3新增加了属性选择器,使选择器引入了通配符的概念。这3中常用的属性选择器如下所示:

选择器描述
[attribute]用于选取带有指定属性的元素。
[attribute=value]用于选取带有指定属性和值的元素。
[attribute^=value]匹配属性值以指定值开头的每个元素。
[attribute$=value]匹配属性值以指定值结尾的每个元素。
[attribute*=value]匹配属性值中包含指定值的每个元素。
[attribute~=value]用于选取属性值中(包含)指定词汇的元素,还可以空格为分隔符。
[attribute|=value]用于选取带有以指定值(开头)的属性值的元素,还可以连字符为分隔符。

2.4 结构性伪类选择器(重点)

结构性伪类选择器是CSS3中新增加的类型选择器。常用的的结构性伪类选择器如下所示:

2.4.1 整体结构类型

  • :first-child 匹配的是某父元素的第一个子元素,可以说是结构上的第一个子元素。

  • :last-child 匹配的是某父元素的最后一个子元素,可以说是结构上的最后一个子元素。

2.4.2 标签结构类型

  • :first-of-type 匹配的是某父元素下相同类型子元素中的第一个,比如 p:first-of-type,就是指所有类型为p的子元素中的第一个。这里不再限制是第一个子元素了,只要是该类型元素的第一个就行了。

  • :last-of-type 匹配某个父元素中最后一个某一类型的元素。

2.4.3 指定子元素的序号(重点)

  • :nth-child(n) 对指定序号的子元素设置样式(从前往后数)。参数可以是数字(1、2、3)、关键字(odd、even)、公式(2n、2n+3 :使用公式时,n从0开始),参数的索引起始值时1,而不是0。

  • :nth-last-child(n) 对指定序号的子元素设置样式(从后往前数)。参数同上。

  • :nth-of-type(n) 匹配指定序号的同一种类型的子元素(从前往后数)。参数同上。

  • :nth-last-of-type(n) 匹配 指定序号的同一种类型的子元素(从后往前数)。参数同上。

2.4.4 其他伪类选择器(了解)

  • :root:将样式应用到页面的根元素中。root选择器就是将样式应用到根元素中。在整个HTML页面中,指的就是整个“html”部分。

  • :empty 指定当元素内容为空白时使用的样式。

  • :not(selector)排除selector选择器选中的元素,不对它们应用样式解析。

  • :target 对页面中某个target元素指定样式,该样式只在用户单击了页面中的链接,并且跳转到target元素后生效。

2.5 文本选择伪元素(了解)

  • ::selection指定当前元素处于选中状态部分的样式。只能向选择器应用少量CSS属性:color、background等。

2.6 表单中使用的状态伪类选择器

  • :disabled 指定当前元素处于不可用状态时的样式。

  • :enabled 指定当前元素处于可用状态时的样式。

  • :checked 指定表单中单选框或复选框处于选中状态时的样式。

权重回顾

0,0,0,0

css的权重:行内样式,ID选择器,类选择器,标签

!important > 行内样式>ID选择器 > 类选择器|伪类|属性选择器 > 标签> 通配符 > 继承 > 浏览器默认属性

2.7 内容追加伪元素(重点)

  • ::before:向当前的元素前面追加内容(创建一个伪元素,其将成为匹配选中的元素的第一个子元素)

  • ::after:向当前的元素内容后面追加内容(创建一个伪元素,作为已选中元素的最后一个子元素)

    //在每个 <p> 元素前面插入内容,并设置所插入内容的样式:
    ​
    p:before
    { 
        content:"开心";
        background-color:yellow;
        color:red;
        font-weight:bold;
    }
    a::after {
      content: "每一天";
    }
多学一招

:before和::before写法的区别

  • 相同点

1.都可以用来表示伪类对象,用来设置对象前的内容,:before和::before写法是等效的

2.伪类对象要配合content属性一起使用

3.伪类对象不会出现在DOM中,所以不能通过js来操作,仅仅是在 CSS 渲染层加入

4.所以不要用:before或:after展示有实际意义的内容,尽量使用它们显示修饰性内容,

  • 不同点

    :before是css2的写法,::before是css3的写法,在H5开发中建议使用::before比较好。

伪元素和伪类区别

  • 伪元素/伪对象:不存在在DOM文档中,是虚拟的元素,是创建新元素。代表某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。

  • 伪类:存在DOM文档中,逻辑上存在但在文档树中却无须标识的“幽灵”分类。

2.8 JS新增的选择器(重点)

  • querySelector();

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        window.onload = function() {
            var div1 = document.querySelector("[myselect=hello]");
            div1.style.background = "red";
        }
    </script>
</head>
<body>
    <div id="div1" myselect="hello">哈哈哈</div>
</body>
</html>
  • querySelectorAll();

window.onload = function() {
        var boxs = document.querySelectorAll(".box");
        console.log(boxs);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值