H5C3—入门第二节

1. CSS3的兼容情况

  • Webkit引擎浏览器使用“-webkit-”作为私有属性,像Safari和Chrome浏览器。

  • Gecko引擎浏览器使用“-moz-”作为私有属性,像Firefox浏览器。

  • Presto引擎浏览器使用“-o-”作为私有属性,像Opera浏览器。

  • Trident引擎浏览器使用“-ms-”作为私有属性,只有IE8以上支持,像IE浏览器

2.1 选择相邻兄弟(+)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 相邻兄弟选择器  +  */
        span+div {
            color: red;
        }
    </style>
</head>

<body>
    <div class="content">
        <span>哈哈</span>
        <div>你好</div>
        <span>今天天气不错</span>
    </div>
</body>

</html>

2.2 匹配选择器(~)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        /* 匹配选择器 ~ */
        /* 位于div后面的所有span */
       div ~ span{
           color: red;
       }

      .content div~span{
          color: springgreen;
      }
    </style>
</head>
<body>
    <div class="content">
        <span>123</span>
        <span>123</span>
        <span>123</span>
        <span>123</span>
        <div>哈哈哈</div>
        <span>123</span>
    </div>
    <div class="content1">
        <span>123</span>
        <span>123</span>
        <div>哈哈哈</div>
        <span>123</span>
    </div>
</body>
</html>

2.3 属性选择器(重点)

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

选择器描述
[attribute]用于选取带有指定属性的元素。
[attribute=value]用于选取带有指定属性和值的元素。
[attribute^=value]匹配属性值以指定值开头的每个元素。
[attribute$=value]匹配属性值以指定值结尾的每个元素。
[attribute*=value]匹配属性值中包含指定值的每个元素。
[attribute~=value]用于选取属性值中(包含)指定词汇的元素,还可以空格为分隔符。
[attribute|=value]用于选取带有以指定值(开头)的属性值的元素,还可以连字符为分隔符。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
       [title]{
           color: red; /*睡觉还看电视*/
       }

       [class="box"]{
           color: aqua; /*哈哈*/
       }
       [class^="box"]{
           font-weight: bold;
       }
       [class$="2"]{
           font-style: oblique; /*睡觉还看电视  大框架*/
       }

       [class*="x"]{
           color: saddlebrown; /*所有*/
       }

       [class~="box2"]{
           color: orange;/*睡觉还看电视  大框架*/
       }

       [class|="box"]{
           font-family: "华文彩云";/*哈哈 啦啦啦啦*/
       }
    </style>
</head>
<body>
    <div class="box">哈哈</div>
    <div class="box1">霓虹</div>
    <div class="box pc">懒蛋</div>
    <div class="box2" title="">睡觉还看电视</div>
    <div class="box box2">大框架</div>
    <div class="box box123">烧仙草</div>
    <div class="box box-data">额外热</div>
    <div class="box2-box-data">额外热</div>
    <div class="box-box-data">啦啦啦啦</div>
</body>
</html>

2.4 结构性伪类选择器

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

2.4.1 整体结构类型

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
      .content h1:first-child{
          color: springgreen;/*雨过天晴*/
      }

      .content h1:last-child{
          color: pink;  /*h1中的最后一个*/
      }

    </style>
</head>
<body>
    <div class="content">
        <h1>雨过天晴</h1>
        <h1>阳光总在风雨过</h1>
        <h1>阳光总在风雨过</h1>
        <h1>阳光总在风雨过</h1>
        <h1>阳光总在风雨过</h1>
        <h1>阳光总在风雨过</h1>
    </div>
    <div class="content">
        <p>哈哈哈哈哈哈哈哈</p>
        <h1>雨过天晴</h1>
        <h1>阳光总在风雨过</h1>
        <h1>阳光总在风雨过</h1>
        <h1>阳光总在风雨过</h1>
        <h1>阳光总在风雨过</h1>
        <h1>阳光总在风雨过</h1>
    </div>
</body>
</html>

2.4.2 标签结构类型

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

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

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
    
          .content h1:first-of-style{
              color: springgreen;/*雨过天晴*/
          }
    
          .content h1:last-of-style{
              color: pink;  /*h1中的最后一个*/
          }
        </style>
    </head>
    <body>
        <div class="content">
            <h1>雨过天晴</h1>
            <h1>阳光总在风雨过</h1>
            <h1>阳光总在风雨过</h1>
            <h1>阳光总在风雨过</h1>
            <h1>阳光总在风雨过</h1>
            <h1>阳光总在风雨过</h1>
        </div>
        <div class="content">
            <p>哈哈哈哈哈哈哈哈</p>
            <h1>雨过天晴</h1>
            <h1>阳光总在风雨过</h1>
            <h1>阳光总在风雨过</h1>
            <h1>阳光总在风雨过</h1>
            <h1>阳光总在风雨过</h1>
            <h1>阳光总在风雨过</h1>
        </div>
    </body>
    </html>

2.4.3 指定子元素的序号

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

    .content p:nth-child(2n){
                font-family: "华文彩云"; /*在p标签中偶数改变字体家族*/
            }

  • :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指定当前元素处于选中状态部分的样式。

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

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

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

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

权重回顾

0,0,0,0

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

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

2.7 内容追加伪元素

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

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

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
          .content:before{  /*添加到前面*/
              content: "欢迎来到这里";
              background-color: pink;
          }
          .content:after{  /*添加到后面*/
              content: "下次再来";
              background-color: pink;
          }
        </style>
    </head>
    <body>
        <div class="content">
            哈哈哈哈
        </div>
    </body>
    </html>
注意:

: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();获取标签

  • querySelectorAll();获取所有

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div class="content">
        <div class="box"></div>
        单选按钮:<input type="radio">
    </div>
    <div class="box2">
        <h3>1234567890</h3>
        <h3>1234567890</h3>
        <h3>1234567890</h3>
        <h3>1234567890</h3>
        <h3>1234567890</h3>
    </div>
    <script>
    // querySelector();//获取标签
      var box=document.querySelector(".box");//<div class="box"></div>
      console.log(box);
      
      //获取表单
      var input=document.querySelector("[type='radio']");
      console.log(input); //<input type="radio">

    // 获取所有h3
      var _h3=document.querySelectorAll('h3');
      console.log(_h3);
      
    </script>
</body>
</html>

3. CSS3新增样式属性

3.1 background-image多重背景

在CSS3中可以在一个元素里显示多个背景图像,还可以将多个背景图像进行重叠显示(之间用逗号隔开)。(最后写在最下面)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
      .box{
          width: 500px;
          height: 500px;
          border: 1px solid aqua;
          background-image: url(./a.jpg),url(./2a.jpg),url(./bj.jpg);/*可以获取多张图片*/
          background-repeat: no-repeat;
          background-size: 150px 150px;
          background-position: 0px 0px,center center,right bottom;
      }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

3.2 background-image的渐变

background-image: linear-gradient(方向,颜色1, 颜色2,...);

#grad {
  background-image: linear-gradient(to bottom right, red , yellow);
}
#grad {
  background-image: linear-gradient(to right, red , yellow);
}

3.2.2 径向渐变

径向渐变由它的中心定义。

为了创建一个径向渐变,你也必须至少定义两种颜色节点。颜色节点即你想要呈现平稳过渡的颜色。同时,你也可以指定渐变的中心、形状(圆形或椭圆形)、大小。默认情况下,渐变的中心是 center(表示在中心点),渐变的形状是 ellipse(表示椭圆形)。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .content {
            /* 径向渐变 */
            width: 200px;
            height: 200px;
            /* background-image: radial-gradient(circle, red, yellow, green); */
            /* background-image: radial-gradient(black,white); */
            /* background-image: radial-gradient(circle, black, white); */
            background-image: radial-gradient(#00FFFF, #00FA9A, #000000);
        }
    </style>
</head>

<body>
    <div class="content"></div>
</body>

</html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值