CSS3CSS/CSS3

05 - CSS3新增属性汇总

2017-03-04  本文已影响1871人  西巴撸

本文是针对刚学编程的小白,都是一些基础知识,如果想了解更多深层一点的东西,欢迎移步本人博客!!
博客地址 点击跳转

本篇内容只要主要讲解CSS3新增属性,主要有伪类,动画,背景,边框,阴影等效果.CSS3学的好,不用js也一样能做好动画,C3很强大,逼格很高.我们是面向Google,面向Github,面向stackoverflow开发,所以得掌握新技术.现在很多国内的大牛公司都在使用CSS3做动效,像百度,腾讯这类似的公司!So,废话不多说,直接上干货


伪类选择器

伪类选择器就是专门用于修改a标签不同状态样式的

a标签有哪些状态

注意点

超链接美化

注意点

编码规范

示例代码 :

<ul>
    <li><a href="#">我是导航</a></li>
    <li><a href="#">我是导航</a></li>
    <li><a href="#">我是导航</a></li>
    <li><a href="#">我是导航</a></li>
    <li><a href="#">我是导航</a></li>
    <li><a href="#">我是导航</a></li>
    <li><a href="#">我是导航</a></li>
    <li><a href="#">我是导航</a></li>
</ul>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    ul{
        width: 960px;
        height: 30px;
        background-color: red;
        margin: 50px auto;
    }
    ul li{
        list-style: none;
        float: left;
        background-color: pink;
        width: 120px;
        height: 30px;
        text-align: center;
        line-height: 30px;
    }
    ul li a{
        display: inline-block;
        width: 120px;
        height: 30px;

        color: white;
        text-decoration: none;
    }
    /*
    ul li a:link{
        color: white;
        text-decoration: none;
    }
    ul li a:visited{
        color: white;
        text-decoration: none;
    }
    */
    ul li a:hover{
        color: red;
        background-color: #ccc;
    }
    ul li a:active{
        color: yellow;
    }
</style>

效果展示

**超链接美化**

过度模块

过渡三要素

如何给多个属性添加过渡效果

过渡属性连写格式

浏览器的私有前缀

私有前缀

示例代码 :

<div>
    <span>让</span>
    <span>我</span>
    <span>掉</span>
    <span>下</span>
    <span>眼</span>
    <span>泪</span>
    <span>的</span>
    <span>不</span>
    <span>止</span>
    <span>昨</span>
    <span>夜</span>
    <span>的</span>
    <span>酒</span>
</div>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    div{
        height: 150px;
        background-color: red;
        text-align: center;
        line-height: 150px;
        margin-top: 100px;

    }
    span{
        font-size: 50px;
        transition: margin 1s;
    }
    div:hover span{
        margin:0 20px;
    }
</style>

效果展示

**过度效果**

附小Demo一个 以前这种效果都得用Js来实现 现在用C3轻松实现

< ! ---------- HTML ----------- >

<ul>
    <li>![](../素材/ad1.jpg)</li>
   <li>![](../素材/ad2.jpg)</li>
   <li>![](../素材/ad3.jpg)</li>
   <li>![](../素材/ad4.jpg)</li>
   <li>![](../素材/ad5.jpg)</li>
   <li>![](../素材/ad6.jpg)</li>
</ul>

< ! --------- Style --------------- >

<style>
    *{
        margin: 0;
        padding: 0;
    }
    ul{
        width: 960px;
        height: 300px;
        border: 1px solid #000;
        margin: 100px auto;
    }
    ul li{
        list-style: none;
        float: left;
        width: 160px;
        height: 300px;
        background-color: blue;
        /*box-sizing: border-box;*/
        /*border: 1px solid #000;*/
        overflow: hidden;
        transition: width 0.2s;
    }
    ul:hover li{
        width: 100px;
    }
    ul li:hover{
        width: 460px;
    }
</style>

< ! --------- 效果展示 ---------- >

**手风琴效果**

2D维度模块

2D维度模块可以让元素旋转/缩放/平移等操作

transform: scale(缩放值) rotate(旋转度) translate(水平平移, 垂直平移);

2D维度模块 - 形变中心点

水平方向和垂直方向的取值有三种
特殊关键字 left right center bottom top
具体的像素点 0px
百分比

/*transform-origin:50px 50px;*/
/*transform-origin:0px 0px;*/
/*transform-origin:100px 0px;*/
/*transform-origin:right top;*/
transform-origin:100% 0%;

2D维度模块 - 透视

附小Demo一个,可视化近大远小效果

< ! ---------- HTML ----------- >

<div class="box">
    ![](../素材/pk1.png)
</div>

< ! --------- Style --------------- >

<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width:310px;
            height: 438px;
            border: 1px solid #000;
            margin: 100px auto;
            background-color: skyblue;
            perspective: 500px;
        }
        .box img{
            /*推荐写法*/
            transform-origin: center bottom;
            transition: all 1s;
        }
        .box:hover img{
            /*不推荐*/
            /*transform-origin: center bottom;*/
            transform: rotateX(70deg);
        }
    </style>

< ! --------- 效果展示 ---------- >

**近大远小效果**

内附Demo一个 照片墙旋转 点击跳转到案例页面

动画模块

动画三要素

示例代码 :

<style>
    *{
        margin: 0;
        padding: 0;
    }
    .box{
        width: 100px;
        height: 50px;
        background-color: red;
        /*告诉系统当前元素需要执行动画, 动画的名称叫做nj*/
        animation-name: nj;
        /*告诉系统当前元素执行动画的时长*/
        animation-duration: 5s;

        position: absolute;
        left: 0;
        top: 0;

    }
    /*告诉系统我们需要自己创建一个叫做nj的动画*/
    @keyframes nj {
        /*
        from{
            margin-left: 0;
        }
        to{
            margin-left: 500px;
        }
        */
        /*
        0%{
            left: 0;
            top: 0;
        }
        25%{
            left: 300px;
            top: 0;
        }
        50%{
            left: 300px;
            top: 300px;
        }
        75%{
            left: 0;
            top: 300px;
        }
        100%{
            left: 0;
            top: 0;
        }
        */
        0%{
            left: 0;
            top: 0;
        }
        30%{
            left: 300px;
            top: 0;
        }
        60%{
            left: 300px;
            top: 300px;
        }
        100%{
            left: 0;
            top: 300px;
        }
    }
</style>

动画模块其它属性

示例代码 :

<style>
    <div class="box1"></div>
    <div class="box2"></div>
    *{
        margin: 0;
        padding: 0;
    }
    .box1{
        width: 100px;
        height: 50px;
        background-color: red;
        animation-name: sport;
        animation-duration: 2s;
        /*动画延迟时间*/
        /*animation-delay: 2s;*/
        /*动画运动曲线*/
        animation-timing-function: linear;
        /*指定动画重复次数*/
        animation-iteration-count: 3;
        /*指定动画时候需要往返, alternate往返 normal默认*/
        animation-direction: alternate;
    }
    .box1:hover{
        /*默认值是running, 如果设置为paused那么动画会暂停*/
        animation-play-state: paused;
    }
    @keyframes sport {
        from{
            margin-left: 0;
        }
        to{
            margin-left: 400px;
        }
    }

    .box2{
        width: 100px;
        height: 100px;
        background-color: blue;
        margin: 100px auto;
        animation-name: xxoo;
        animation-duration: 3s;
        animation-timing-function: linear;
        animation-delay: 2s;
        /*
        动画其实有三种状态, 分别是等待状态/运动状态/结束状态
        none:默认值, 不做任何操作
        backwards: 设置动画等待状态的样式为动画的第一个
        forwards: 设置动画结束状态的样式为动画的最后一个
        both:是backwards和forwards的结合
        */
        animation-fill-mode: both;
    }
    @keyframes xxoo {
        0%{
            transform: rotate(10deg);
        }
        50%{
            transform: rotate(30deg);
        }
        100%{
            transform: rotate(80deg);
        }
    }
</style>

连写格式

附Demo1一个 云层特效 点击跳转到案例页面

附Demo2一个 无限轮播 点击跳转到案例页面

3D维度模块

示例代码 :

<style>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            width: 200px;
            height: 200px;
            background-color: red;
            margin: 100px auto;
            border: 1px solid #000;

            perspective: 300px;
            /*
            1.2D和3D
            默认情况下一个元素的transform-style等于flat, 也就是2D
            如果将transform-style设置为preserve-3d, 那么这个元素所有的子元素都会变成3D的
            2.注意点:
            和透视一样, 如果想看到某个元素的3D效果, 那么就给这个元素的父元素设置 transform-style: preserve-3d;
            */
            transform-style: preserve-3d;
            transform: rotateY(0deg);
        }
        .father .son{
            width: 100px;
            height: 100px;
            background-color: blue;
            margin: 0 auto;
            margin-top: 50px;
            transform: rotateY(45deg);
        }
    </style>

附Demo一个 3D立方体效果 点击跳转到案例页面

背景新增属性

背景尺寸属性

背景绘制位置属性

**背景绘制**

背景裁剪属性

**背景裁剪**

多重背景

background: url("../素材/animal1.png") left top no-repeat,
url("../地址") right top no-repeat;
**多重背景**
<div class="box"></div>
<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 500px;
            height: 190px;
            border: 1px solid #000;
            margin: 100px auto;
            /*添加背景*/
            background-image: url("../素材/bg-plane.png"), url("../素材/bg-sun.png"),url("../素材/bg-clouds.png");
            background-repeat:no-repeat, no-repeat,no-repeat;
            background-position: 50px 150px,300px 50px ,left top;
            background-size:50px 50px, 50px 50px,auto auto;

            /*添加动画*/
            animation: sport 10s linear 0s infinite normal;
        }
        @keyframes sport {
            from{
                background-position: 50px 150px,300px 50px ,left top;
            }
            to{
                background-position: 450px -100px,300px 50px ,-1123px top;
            }
        }
    </style>
**CSS3- 多重背景动画**

边框圆角

格式:

参数

/*第一个参数是水平方向, 第二个参数是垂直方向*/
border-top-left-radius: 100px 50px;
border-top-right-radius: 100px 50px;
border-bottom-left-radius: 100px 50px;
border-bottom-right-radius: 100px 50px;

/*斜杠前面的是设置四个角水平方向的, 斜杠后面的是设置四个角垂直方向的*/
border-radius: 100px 100px 100px 100px/50px 50px 50px 50px;
border-radius: 100px/50px;

附Demo1一个 边框圆角之太极八卦 点击跳转到案例页面

附Demo2一个 边框圆角之跳动的心 点击跳转到案例页面

附Demo3一个 边框圆角之安卓机器猫 点击跳转到案例页面

附Demo4一个 边框圆角之钟表 点击跳转到案例页面


边框图片

<style>
    *{
        margin: 0;
        padding: 0;
    }
    div{
        width: 300px;
        height: 300px;
        margin: 100px auto;
        border: 10px solid #000;
        /*指定边框图片*/
        border-image-source: url("../素材/border.jpg");
        /*slice告诉系统, 如果将边框图片切割为九宫格*/
        border-image-slice: 70 70 70 70;
        /*指定边框图片的宽度, 注意点: 优先级比直接给border添加要大*/
        border-image-width: 70px;
        /*指定除边框四个角以外的图片如何显示*/
        /*border-image-repeat: repeat;*/
        /*border-image-repeat: stretch;*/
        border-image-repeat: round;

        /*让边框图片向外移动多少*/
        border-image-outset: 10px 30px 60px 100px;

        box-sizing: border-box;
        background-color: red;
    }
</style>

vertical-align属性

元素默认情况下是和文字的基线对其的

/* 默认值 */
vertical-align: baseline;
/* 让元素和父元素的底部对齐 */
vertical-align: bottom;
/* 让元素和文字的底部对齐 */
vertical-align: text-bottom;
/* 让元素和文字的顶部对齐 */
vertical-align: text-top;
/* 让元素和父元素的顶部对齐 */
vertical-align: top;
/* 让元素和文字的中线对齐  */
vertical-align: middle;

线性渐变

background: linear-gradient(red, blue);
background: linear-gradient(to right,red, blue);
background: linear-gradient(to top right,red, blue);
background: linear-gradient(0deg, red, blue);
/*默认情况下系统会等分宽度给渐变的颜色, 如果不想等分, 可以直接在颜色后面添加百分比*/
background: linear-gradient(red, blue);
background: linear-gradient(red 50%, blue 60%);
/*注意: 这里指定的百分之多少是用于计算过渡的距离
例如 red 30%, blue 40%, 那么40-30=10, 所有显示完红色之后会有10%的距离用于从红色过渡到蓝色
*/
background: linear-gradient(red 30%, blue 40%, green 60%);

径向渐变

/*background-image: radial-gradient(red, blue);*/
/*
第一个参数: 指定扩散范围
第二个参数: 指定从什么地方开始扩散
*/
/*background-image: radial-gradient(150px at center center, red, blue);*/
background-image: radial-gradient(150px at 50px 50px, red, blue);
/*background-image: radial-gradient(150px at 50px 50px, red 50%, blue 50%);*/

重复渐变

<div class="box1"></div>
<div class="box2"></div>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    .box1{
        width: 300px;
        height: 100px;
        border: 1px solid #000;
        margin: 100px auto;
        background: repeating-linear-gradient(to right,red, blue);
        background-size:100px 100px;
    }
    .box2{
        width: 200px;
        height: 200px;
        border: 1px solid #000;
        margin: 0px auto;
        /*background: repeating-radial-gradient(red, blue, yellow);*/
        background: repeating-radial-gradient(red 10%, blue 20%, yellow 30%);
        /*background-size:100px 100px;*/
    }
</style>

综合案例 叮当猫 点击跳转


CSS3新增一些重要的属性差不多就这么内容,把这些东西学会你就可以在前端玩转任意动画特效咯! 持续更新中,希望大家多多支持 !


上一篇 下一篇

猜你喜欢

热点阅读