【前端学习笔记】CSS3进阶属性(渐变、过渡、动画)


CSS进阶属性(渐变、过渡、动画)

一、浏览器的认识

  1. 浏览器的认识:市面常见的五大浏览器是:EDGE(IE)、Firefox、Safari、Opera、Google Chrome
  2. 浏览器的内核与浏览器前缀(五大主流浏览器及四大内核)
浏览器名称浏览器名称浏览器前缀
IE浏览器Trident内核-ms-
Firefox浏览器Gecko内核-moz-
Safari浏览器Webkit内核-webkit-
Opera浏览器最初是自己的Presto内核,后来是Webkit,现在是Blink内核-o- / -webkit- / -blink-
Google浏览器以前是Webkit内核,现在是Blink内核-webkit- / -blink-
  1. 渐进增强和优雅降级
    ● 渐进增强:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验
    ● 优雅降级:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容

区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带

.transition{
/*渐进增强写法从小到大*/
-webkit-transition: all .5%; 
	-moz-transition: all .5%;
	-o-transition: all.5%;
	transition: all .5%;
}
.transition{
/*优雅降级写法 从大到小*/
transition: all .5%;
-o-transition: all.5%;
-moz-transition: all .5%;
-webkit-transition: all .5%;
}

二、CSS3属性

  1. 文本属性
    text-shadow	/*文本阴影*/
    box-shadow	/*盒子阴影*/
    
  2. 背景属性
    background-size /*背景尺寸*/
    
  3. 边框属性
    border-radius	/*边框圆角*/
    

三、CSS3渐变属性

CSS3 渐变可以让你在两个或多个指定的颜色之间显示平稳的过渡。以前你必须使用图像来实现这些效果。但是通过使用 CSS3 渐变,你可以减少下载的事件和宽带的使用。此外渐变效果的元素在放大时看起来效果更好,因为渐变是由浏览器生成的。

  1. 线性渐变的使用:指定水平和垂直的起始位置来制作一个对角渐变
标准写法兼容写法
属性backgroundbackground
属性值linear-gradient-浏览器前缀-linear-gradient
方向使用1to 结束的方向值不加to,设置开始的方向
方向使用2to 结束的对角值不加to,设置开始的对角
方向使用2to 结束的对角值不加to,设置开始的对角
注意点方向可以不写(默认是从上到下的)、多个参数之间使用逗号隔开
  1. 径向渐变的使用:带有指定的角度的线性渐变
属性background
属性值-浏览器前缀-radial-gradient
参数1:起点位置默认center(方向值)/ 设置坐标值
参数2:渐变形状ellipse 椭圆形(默认值) / circle 表示圆形
参数3:渐变大小closest-side / farthest-side(最近/远边) closest-corner / farthest-corner(最近/最远角)
注意点径向渐变只有兼容写法、当渐变的形状和大小同时存在的时候之间需要使用空格隔开
  1. 重复渐变的使用:重复线性渐变和重复径向渐变
渐变名称重复线性渐变重复径向渐变
属性backgroundbackground
属性值repeating-linear-gradientrepeating-radial-gradient

四、圆角 border-radius

圆角 border-radius
属性值一个值代表的四个角,如果没有/,只有一个值,代表水平垂直半径相同
属性值两个值分别代表对角(左右下 右上左下)
属性值三个值分别代表左上 右上左下 右下
属性值四个值分别代表顺时针(左上 右上 右下 左下)
水平半径/垂直半径
如果不简写,一定要先写上下,再写左右

/* 只想设置一下右下角 */border-bottom-right-radius: 50px;
思考:如何画一个半圆 如何画一个椭圆 如何画一个四分之一圆(正月)


五、引入图标与字体

(一)、iconfont阿里云图标库

官网:iconfont官网

由于在项目中经常需要使用字体类型和小图标,字体类型有版权问题并且之前使用及精灵图方式实现小图标比较麻烦,现在提供一种安全简单的在线使用方式:阿里巴巴矢量图标库

矢量:矢量图像,又称为向量,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点,在计算机中,矢量图可以无限放大永不变形

字体图标 www.iconfont.cn 以图形的方式表示的文字
1,找到图标-添加入库-添加至项目
2,字体图标可以进行修改,也可以添加,但是需要在网站上进行操作,下载至本地
3,解压,建议文件夹命名为font
4,用link引用iconfont.css 如
5,在任意标签上用class引用iconfont
class调用

  • 魂牵梦萦
  • Unicode调用
  • (二)、fontawesome字体库

    官网:fontawesome

    (三)、字体引入

    @font-face语法
    @font-face{
    font-family:;
    src:url();/先下载该字体/
    }
    1、yourwebfontname:此值指的技术自定义的字体名称,Web元.中nfont-famih,如"font-fammih yourWvebfontMamme"."
    2、s0urce此值指的是你自定义的字件的存效路径,可以是相对路径也可以是的路径;
    3,format:此值指的是你白定火的字体的格式,主要用来想助浏览器识别,其值主要有以下几种学型,
    truetyneopentyoe truetwoe aat embedded-opentypeavg s :
    4、weight和style:这两个值大家一定很热悉,weight定交字体是否为姐体,style主要定义字体样式,如斜体,


    六、背景渐变

     <!-- 
            背景渐变(gradient)
                1,线性渐变(由两个或两个以上的颜色) 从一个方向向(颜色)另外一方向(颜色)的渐变
                    background-image:linear-gradient(方向,颜色1,颜色2,......) 
                    background-image可以省略为background:linear-gradient(方向,颜色1,颜色2,......) 
                   方向: 向上  向下  向左 向右 对角的渐变(left top  deg 度数  可以取负值)
                        to 到...  to可以省略不写,但要加前缀
                    默认值是从上到下的渐变(to bottom)
            重复线性渐变
                    background-image:repeating-linear-gradient(方向,颜色1,颜色2,......)
    
               2, 径向渐变(由两个或两个以上的颜色) 从中心向四周的渐变   
                 background-image: radial-gradient(方向,起始的颜色1,颜色2,.....);  
                  方向:默认的是center或50%
                  center可以省略不写,如果写加前缀
                
         -->
    

    CSS3 渐变可以让你在两个或多个指定的颜色之间显示平稳的过渡。以前你必须使用图像来实现这些效果。但是通过使用 CSS3 渐变,你可以减少下载的事件和宽带的使用。此外渐变效果的元素在放大时看起来效果更好,因为渐变是由浏览器生成的。

    1. 线性渐变的使用:指定水平和垂直的起始位置来制作一个对角渐变
    标准写法兼容写法
    属性backgroundbackground
    属性值linear-gradient-浏览器前缀-linear-gradient
    方向使用1to 结束的方向值不加to,设置开始的方向
    方向使用2to 结束的对角值不加to,设置开始的对角
    方向使用2to 结束的对角值不加to,设置开始的对角
    注意点方向可以不写(默认是从上到下的)、多个参数之间使用逗号隔开

    2.径向渐变的使用:带有指定的角度的线性渐变

    属性background
    属性值-浏览器前缀-radial-gradient
    参数1:起点位置默认center(方向值)/ 设置坐标值
    参数2:渐变形状ellipse 椭圆形(默认值) / circle 表示圆形
    参数3:渐变大小closest-side / farthest-side(最近/远边) closest-corner / farthest-corner(最近/最远角)
    注意点径向渐变只有兼容写法、当渐变的形状和大小同时存在的时候之间需要使用空格隔开

    3.重复渐变的使用:重复线性渐变和重复径向渐变

    渐变名称重复线性渐变重复径向渐变
    属性backgroundbackground
    属性值repeating-linear-gradientrepeating-radial-gradient

    七、背景显示位置

      /* 背景图的显示位置
                    background-origin:padding-box border-box content-box
                */
                /* background-origin: content-box; */
                /* 背景图的显示位置
                  background-clip:padding-box border-box content-box
                */
    

    八、过渡属性

    过渡(慢慢的变化过程) transition
    注意:不是所有的css属性都能够进行过渡,比如display:none display:block visibility:hidden;
    过渡必须要有事件(鼠标悬停,点击,双击,右击…)
    过渡必须要有过渡的属性和过渡的时间

            初始的状态 (默认的状态)
            结束的状态 (鼠标悬停)
    
    <!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>
            li{
                width:100px; height: 60px;
                background: red;
                margin-bottom: 10px;
               
            }
            ul:hover li{
                width:1000px;
            }
            ul li:nth-child(1){
                transition: all 5s ease;
            }
            ul li:nth-child(2){
                transition: all 5s linear;
            }
            ul li:nth-child(3){
                transition: all 5s ease-in;
            }
            ul li:nth-child(4){
         transition: all 5s ease-out;
     }
     ul li:nth-child(5){
          transition: all 5s ease-in-out;
      }
      ul li:nth-child(6){
          transition: all 5s steps(5);
      }
      ul li:nth-child(7){
          transition: all 5s cubic-bezier(0, 1.32, 0.51,-0.11);
      }
        </style>
    </head>
    <body>
        <ul>
            <li>ease 慢速开始,然后变快,然后慢速结束</li>
            <li>linear 匀速</li>
            <li> ease-in 加速(以慢开始)</li>
            <li> ease-out 减速(以慢结束)</li>
            <li> ease-in-out 先加速再减速</li>
            <li> steps 步值</li>
            <li> 贝塞尔曲线</li>
        </ul>
    </body>
    </html>
    
    属性说明
    transition-property参与过渡的属性,默认是all
    transition-duration过渡的时间,单位使用s
    transition-delay过渡的延迟时间,单位使用s
    transition-timing-function过渡运动的方式:ease(慢速开始)/linear(匀速)/ease-in(慢变快)/ease-out(快变慢)/ease-in-out
    transition复合属性/简写方式

    网站

    cubic-bezier(.17,.67,.83,.67) ✿ cubic-bezier.com

    案例1:验证过渡的默认运动方式

    案例2:奇虎导航案例


    九、2D的属性

    2D的属性(X,y) transform 改变 更换

    1. 偏移

    x 水平方向 取值为正往右偏移取值为负往左偏移
    Y 垂直方向 取值为正往下偏移取值为负往说偏移
    方法一:transform : translate(水平方向,垂直方向);
    方法二:transform:translateX(100px)translateY(100px)

    1. 缩放 scale() 默认 X Y 不加单位 可以取负值

    比1小则表示的是缩小
    比1大则代表的是放大
    如果1表示不变
    X相当于把宽度缩放了多少
    Y相当于把高度缩放了多少
    方法一:transform:scale(2,0.5);
    方法二:transform:scaleX(2) scaleY(0.5);

    1. 旋转(翻转) rotate()默认是Z轴 单位deg 可以取负值

    x轴可以看成上下旋转
    Y可以看成左右旋转
    方法:

    transform: rotateX(45deg) rotateY(55deg);
    以下这种写法是错误的
    transform: rotate(360deg,45deg);

    1. 倾斜

    倾斜 skewX() 默认是X轴 单位是deg,可以取负值
    transform: skewY(15deg) skewX(20deg);
    transform: skew(15deg,25deg);


    十、3D属性

    3d的属性(X Y Z) transform 改变 变换

    1. 偏移 translate() 默认值X轴 单位 px %是自己的,不是父元素的 可以取负值

    X 水平方向 取值为正往右偏移 取值为负往左偏移
    Y 垂直方向 取值为正往下偏移,取值为负往上偏移
    Z 前后方向 取值为正往前偏移,取值为负往后偏移
    方法一

    transform: translate3d(100px,200px,200px);
    方法二
    transform: translateX(100px) translateY(100px) translateZ(100px);

    1. 缩放 scale() 默认是X Y 不加单位 可以取负值

    比1小则代表的是 缩小
    比1大则代表的是 放大

    如果1表示不变
    X轴相当于把宽度缩放了多少
    Y轴相当于把高度缩放了多少
    Z轴相当于把厚度缩放了多少 缩放单独只看Z轴看不出效果,需要配合旋转一起
    方法一

    transform: scale3d(2,0.5,1);
    方法二
    transform: scaleX(2) scaleY(0.5) scaleZ(1);

    1. 旋转(翻转) rotate() 默认是Z轴 单位deg 可以取负值

    X轴可以看成是上下旋转
    y轴可以看成是左右旋转

    方法
    transform: rotateX(45deg) rotateY(55deg);
    transform: rotate3d(1,1,1,15deg); X y Z
    1代表的是旋转
    0代表的不旋转

    3d要改变的属性和2d是一样的,在2d的基础上增了一个Z轴,声明为3d
    3d里没有倾斜 缩放单独只看Z轴看不出效果
    perspective 如何查看透视图(专业点景深) 可以加给父元素也可以加给子元素,建议一般加在父元素,取值一般在800-1000之间

    立方体

    
    <!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>
        <link rel="stylesheet" href="basic.css">
        <!-- 
            立方体
            分析
                1,立方体有几个面 6
                2,上下  前面  左右
                3,声明为3d
                4,需要用到偏移和旋转的属性
         -->
         <style>
            ul{
                width:200px; height: 200px;
                background: red;
                position: absolute;
                left: 0; right:0;bottom:0; top:0; margin: auto;
                transform-style: preserve-3d;
                /* 为了方便查看 */
                transform: rotateX(20deg) rotateY(25deg);
            }
            ul li{
                width:200px; height: 200px;
                background: rgba(0,255,255,0.5);
                position: absolute;
                border: solid 1px #000;
            }
            /* 前面 */
            ul li:nth-child(1){
                transform: translateZ(100px);
            }
            ul li:nth-child(2){
                transform: translateZ(-100px);
            }
            /* 上下 */
            ul li:nth-child(3){
                /* transform: translateY(100px) rotateX(90deg); */
                /* 演变 */
                transform: rotateX(90deg) translateZ(-100px);
            }
            ul li:nth-child(4){
                /* transform: translateY(100px) rotateX(90deg); */
                /* 演变 */
                transform: rotateX(90deg) translateZ(100px);
            }
            /* 左右 */
            ul li:nth-child(5){
                transform: translateX(100px) rotateY(90deg);
            }
            ul li:nth-child(6){
                transform: translateX(-100px) rotateY(90deg);
            }
            /* 
            添加过渡效果+旋转
                ul:hover li{}
            */
         </style>
    </head>
    <body>
       <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
       </ul> 
    </body>
    </html>
    

    基(原)点的位置
    transform-origin:X y z; 其中Z轴不能取方向值
    注意:想改变原点的位置必须要有transform属性


    十一、动画

    动画可以添加事件,也可以不添加事件
    过渡
    初始的
    结束的

    动画 可以添加事件,也可以不添加事件,可以实现帧动画
    初始的

     结束的
    /* 创建动画  方法一 */
        @keyframes 自己取的动画名字{
         from{
          /*  初始的 */
            自己修改的css代码(一段,符合CSS语法)  
          }
          to{
              /*  结束的 */
            自己修改的css代码(一段,符合CSS语法)  
              }
         }
    /* 创建动画 方法二 帧动画 */
      @keyframes go{
       0%{
         /*  初始的 */ 
          background:pink 
          自己修改的css代码(一段,符合CSS语法)
          }
    ......
    100%{
    /* 结束的 */
    background: green;
    自己修改的css代码(一段,符合CSS语法)  
    }
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ein hübscher Kerl.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值