CSS / CSS3新特性-新增的选择器

目录

CSS3的现状

新增的选择器

属性选择器

结构伪类选择器

伪元素选择器


CSS3的现状

新增的css3特性有兼容性问题,ie9+才支持

移动端的支持优于PC端

新增的选择器

属性选择器

可以根据元素特定的属性来选择元素

用[]来选择

input[value] {} ,选中包含value属性的input元素

input[value="aaa"] {} ,选中包含value属性且value值为aaa的input元素

input[value^="bbb"] {} ,选中包含value属性且值以bbb开头的input元素

input[value$="ccc"] {} ,选中包含value属性且值以ccc结尾的input元素

input[value*=“ddd”] {},选中包含value属性且值包含ddd的input元素

标签选择器权重为1

类选择器、属性选择器、伪类选择器的权重都为10

结构伪类选择器

结构伪类选择器主要根据文档结构来选择元素,常用于根据父级选择器里面的子元素

  • E:first-child 匹配父元素中的第一个子元素E ul(空格):first-child (省略了子元素的名字) ul li:fist-child
  • E:last-child 匹配父元素E中的最后一个子元素
  • E:nth-child(n) 如 ul li:nth-child(3) n可以是数字 关键字 和公式

        数字:n如果是数字则指第n个子元素,从1开始

        关键字:even偶数 odd奇数

        公式:括号中字母必须为n n从0开始,每次+1,依次运算 2n偶数 2n+1奇数 n为所有 5n 五的倍数 n+5 从第五个开始 -n+5 从第五个往前(前五个,包含第五个)不能写成5-n

    <style>
        ul li:nth-child(-n+5) {
            background-color: pink;
        }
    </style>
</head>

<body>
    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>
  • E:first-of-type 指定类型E的第一个
  • E:last-of-type 指定类型E的最后一个
  • E:nth-of-type(n) 指定类型E的第n个

区别:当父元素里有多个类型的子元素

nth-child会把所有的盒子都排列序号,序号是固定的,执行时先找到第n个子元素,再看元素类型,必须第n个元素和指定的元素类型匹配才有样式显示。

nth-of-type会先看元素类型,找到该元素类型的第n个子元素

如:section父元素里既有p子元素又有div1 div2子元素  div1为div:nth-of-type(1)

无序列表中ul只会包含li,用nth-child更多

权重为10

伪元素选择器

利用CSS创建新标签元素,而不需要html标签,从而简化html结构

element::before{} 在父元素内容前面创建元素

::after 在父元素element内容后面创建元素 一定在element里面

  • 创建的是行内元素
  • 新创建的元素在文档中是找不到的,所以称为伪元素
  • before和after必须包含content属性 content:'' 即使空着也不能省略
  • 伪元素选择器和标签选择器权重一样 为1

div::after 权重为2

伪元素字体图标

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>


    <style>
        /* 字体声明 */
        @font-face {
            font-family: 'icomoon';
            src: url('../DAY12/fonts/icomoon.eot?zdtxwn');
            src: url('../DAY12/fonts/icomoon.eot?zdtxwn#iefix') format('embedded-opentype'),
                url('../DAY12/fonts/icomoon.ttf?zdtxwn') format('truetype'),
                url('../DAY12/fonts/icomoon.woff?zdtxwn') format('woff'),
                url('../DAY12/fonts/icomoon.svg?zdtxwn#icomoon') format('svg');
            font-weight: normal;
            font-style: normal;
            font-display: block;
        }

        div {
            position: relative;
            width: 200px;
            height: 40px;
            border: 1px solid red;
        }

        div::after {
            position: absolute;
            top: 10px;
            right: 10px;
            font-family: 'icomoon';
            content: '';

        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

content里可以不复制特殊字符 直接用反斜杠\+编号  如\e91e

仿土豆播放器视频遮罩

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            margin: 100px auto;
            position: relative;
            width: 400px;
            height: 300px;

        }

        .video img {
            width: 100%;
            height: 100%;
        }

        /* .black div { */
        .video::before {
            /* 伪元素选择器必有 */
            content: '';

            display: none;
            position: absolute;
            width: 100%;
            height: 100%;
            top: 0px;
            left: 0px;
            background: rgba(0, 0, 0, 0.3) url(arr.png) no-repeat center;
        }

        /* .black .arr {
            position: absolute;
            width: 34px;
            height: 34px;
            left: 50%;
            margin-left: -14px;
            top: 50%;
            margin-top: -14px;
        } */

        /* 
        .black {
            display: none;
        } */

        .video:hover::before {
            display: block;
        }
    </style>
</head>

<body>
    <div class="box">
        <a href="#" class="video"><img src="tudou.jpg"></a>
        <!-- <a href="#" class="black">
            <div></div>

            <img src="arr.png" class="arr">
        </a> -->
    </div>
    </div>

    </div>
</body>

</html>

父类:hover::before 鼠标经过显示伪元素

伪元素清除浮动

单:插入元素必须是块级元素 高度和hidden是为了隐藏元素 

        .clearfix:after {
            content: "";
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;

        }

        .clearfix {
            *zoom: 1;
            /* IE6 7使用 */
        }

双:浮动前后都插入伪元素,table是为了转化成块级元素 并在一行显示,如果用inline-block会有空隙,而table中没有内容是默认看不见的

        .clearfix:before,
        .clearfix:after {
            content: "";
            display: table;
        }

        .clearfix:after {
            clear: both;
        }

        .clearfix {
            *zoom: 1;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值