CSS3新特性(属性选择器,结构伪类选择器,伪元素选择器,CSS3盒子模型,CSS3渐变,CSS3过渡,CSS3滤镜 filter,calc函数)

2 篇文章 0 订阅
1 篇文章 0 订阅

1、属性选择器

属性选择器可以根据元素特定属性的来选择元素。这样就可以不用借助于类或者id选择器。

E[att]|选择具有att属性的E元素  

E[att:val] 选择具有att属性且属性值等于val的E元素

E[att^=val]匹配具有att属性且值以val开头的E元素  

E[att$=val] 匹配具有att属性且值以val结尾的E元素  

E[att*=val] 匹配具有att属性且值中含有val的E元素

input[type=text] {
    color: green;
}
<input type="password">
<input type="text">

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

2、结构伪类选择器

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

选择符简介
E: first-child匹配父元素中的第一个子元素E
E: last-child匹配父元素中最后一个E元素
E: nth-child(n)匹配父元素中的第n个子元素E
E: first-of-type指定类型E的第一个
E: last-of-type指定类型E的最后一个
E: nth-of-type(n)指定类型E的第n个

  <style>
        /* 1. 选择ul里面的第一个孩子 小li */
        ul li:first-child {
            background-color: pink;
        }
        /* 2. 选择ul里面的最后一个孩子 小li */
        ul li:last-child {
            background-color: pink;
        }
         /* 3. 选择ul里面的第2个孩子 小li */
         ul li:nth-child(2) {
            background-color: skyblue;
        }
        ul li:nth-child(6) {
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <ul>
        <li>我是第1个孩子</li>
        <li>我是第2个孩子</li>
        <li>我是第3个孩子</li>
        <li>我是第4个孩子</li>
        <li>我是第5个孩子</li>
        <li>我是第6个孩子</li>
        <li>我是第7个孩子</li>
        <li>我是第8个孩子</li>
    </ul>

运行结果

 

 重点:E: nth-child(key)

  • key 可以是整数、关键字(even/odd)、公式(n/2n/2n+1

公式取值
2n偶数
2n-1奇数
5n5 10 15 ...
n+5 6 7 8 ...
-n+5前五个

关于 nth-of-type  nth-of-child

  1. div: nth-child 会把所有的盒子都排列序号 执行的时候首先看 :nth-child(1) 之后回去看 前面 div
  2. div: nth-of-type 会把指定元素的盒子排列序号 执行的时候首先看 div指定的元素 之后回去看 :nth-of-type(1) 第几个孩子

区别:

  1. nth—child对父元素里面所有孩子排序选择(序号是固定的)先找到第n个孩子,然后看看是否和E匹配
  2. nth—of—type对父元素里面指定子元素进行排序选择。先去匹配E ,然后再根据E找第n个孩子

3、伪元素选择器

伪元素选择器可以帮助我们利用CSS创建新标签元素,而不需要HTML标签,从而简化HTML结构。

选择符简介
::before在元素内部的前面插入内容
::after在元素内部的后面插入内容

注意:

  • before 和 after 创建一个元素,但是属于行内元素
  • 新创建的这个元素在文档树中是找不到的,所以我们称为伪元素
  • 语法:element:before{}
  • before 和 after 必须有 content 属性
  • before 在父元素内容的前面创建元素, after 在父元素内容的后面插入元素
  • 伪元素选择器和标签选择器一样,权重为 1

   3.1、案例一:伪元素字体图标

   代码:

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

        div {
            position: relative;
            width: 200px;
            height: 35px;
            border: 1px solid red;
        }
        div::after{
            position: absolute;
            top: 10px;
            right: 10px;
            content: '\e91e';
            font-family: 'icomoon';
        }

       
    </style>
</head>

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

运行结果

    3.2、案例二:伪元素遮罩层

代码:

   <style>
        .tudou {
            position: relative;
            width: 444px;
            height: 320px;
            background-color: pink;
            margin: 30px auto;
        }

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

        .tudou::before {
            content: '';
            /* 隐藏遮罩层 */
            display: none;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, .4) url(images/arr.png) no-repeat center;
        }

        /* 当我们鼠标经过了 土豆这个盒子,就让里面before遮罩层显示出来 */
        .tudou:hover::before {
            /* 而是显示元素 */
            display: block;
        }
    </style>
<body>
    <div class="tudou">
        <img src="images/tudou.jpg" alt="">
    </div>
  
</body>

运行结果:

   3.3、案例三:伪元素清楚浮动

代码:

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

 双伪元素清除浮动

.clearfix::before,
.clearfix::after {
    content: '';
    display: block;
}
.clearfix::after {
    clear: both;
}

4、CSS3盒子模型

可以分成两种情况:

  1. box-sizing:content-box 盒子大小为 width + padding + border (以前默认的)
  2. box-sizing: border-box 盒子大小为 width 如果盒子模型我们改为了 box-sizing: border-box ,那padding 和 border就不会撑大盒子了(前提 padding 和 border 不会超过 width 宽度)

5、CSS3渐变

CSS 渐变是 CSS3 图像模块中添加的新类型的图像。CSS 渐变允许您在 两个或多个指定颜色之间显示平滑过渡。 浏览器支持两种类型的渐变:

  • 线性渐变(Linear Gradients):向下/向上/向左/向右/对角方向,用 linear-gradient() 函数定义
  • 径向渐变(Radial Gradients):由它们的中心定义,用 radial-gradient() 函数定义

6、CSS3过渡(重点)

过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不使用Flash动画或JavaScript的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。

过渡动画:是从一个状态渐渐的过渡到另外一个状态 可以让我们页面更好看,更动感十足,虽然低版本浏览器不支持(ie9以下版本)但是不会影响页面布局。

我们现在经常和 :hover 一起搭配使用。

     (1)transition的使用

                  transition: 要过渡的属性 花费时间 运动曲线 何时开始

  1. 属性:想要变化的css属性,宽度高度背景颜色内外边距都可以。如果想要所有的属性都变化过渡,写一个all就可以。
  2. 花费时间:单位是秒(必须写单位)比如 0.5s
  3. 运动曲线:默认是ease (可以省略)
  4. 何时开始:单位是秒(必须写单位)可以设置延迟触发时间默认是Os (可以省略)

代码:

   <style>
        div {
            width: 200px;
            height: 100px;
            background-color: pink;
    /* transition: width 0.5s ,height 0.5s; */
    transition: all 0.5s;
        }
        div:hover {
            width: 400px;
            height: 200px;
            background-color: skyblue;
             
        }
    </style>
</head>
<body>
    <div></div>
</body>

运行结果:

鼠标放上去是宽和高以及颜色渐变过渡的

7、CSS3滤镜(filter)

filter CSS属性将模糊或颜色偏移等图形效果应用于元素。

filter: 函数();

例如: filter: blur(5px); blur 模糊处理数值越大越模糊

代码:

    <style>
        img {
            /* blur是一个函数 小括号里面数值越大,图片越模糊 注意数值要加px单位 */
            filter: blur(15px);
        }
        img:hover {
            filter: blur(0);
        }
    </style>


<body>
   <img src="images/pink.jpg" alt="">
</body>

运行结果:

鼠标放到模糊图片上会变的清晰

8、CSS3     calc函数

此 CSS 函数让你在声明CSS属性值时执行一些计算。

width: calc(100%-30px);
/* 子盒子永远比父盒子小30px */

括号里面可以使用 + - * / 来进行计算。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值