zoukankan      html  css  js  c++  java
  • 02 css3

    # 1. css3选择器 #
    ## 1.1 css3属性选择器 ##

        选择符            简介
        E[att]            选择具有att属性的元素
        E[att= "val"]    选择具有att属性且属性值等于val的E元素
        E[att^="val"]    匹配具有att属性、且值以val开头的E元素
        E[att$="val"]    匹配具有at属性、且值以val结尾的E元素
        E[att*="val"]    匹配具有att属性、且值中含有val的E元

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


    ## 1.2 css3结构伪类选择器 ##

    用法

        选择符            简介
        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个
    代码演示

        

     /* 只选择第一个子标签元素 */
        
        ul li:first-child {
            background-color: pink;
        }
        /* 匹配最后一个子元素 */
        
        ul li:last-child {
            background-color: skyblue;
        }
        /* 匹配第n个子元素 */
        
        ul li:nth-child(2) {
            background-color: black;
        }
        /* 匹配偶数元素 */
        /* n可以是关键词  even是偶数 odd基数*/
        
        ul li:nth-child(even) {
            background-color: aqua;
        }
        /* n可以是公式,但是n从0开始计算 */
        
        ul li:nth-child(2n+1) {
            background-color: yellowgreen;
        }
        /* of - type 指定类型的元素 */
        
        ul span:first-of-type {
            background-color: violet;
        }
        
        ul span:last-of-type {
            background-color: violet;
        }
        
        ul span:nth-child(2n) {
            background-color: gold;
        }


    nth-child:

    - 但是第 0 个元素或者超出了元素的个数会被忽略
    -  选择父元素里面的第几个子元素,不管是第几个类型
    -  本质上就是选中第几个子元素


    ## 1.3伪元素选择器 ##

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

    必须都有content属性

    before 和 after 创建一个元素,但是属于行内元素,行内元素无大小

    伪元素和标签选择器一样,权重为1

    # 2.  2D转换 ##
    ## 2.1 二维坐标系 ##

    x轴 水平向右
    y轴 垂直向下 

    1.  `2D` 转换

       - `2D` 转换是改变标签在二维平面上的位置和形状

       - 移动: `translate`
       - 旋转: `rotate`
       - 缩放: `scale`

    2.  `translate` 语法
        
           - x 就是 x 轴上水平移动
           - y 就是 y 轴上水平移动
        

    css
         
        transform: translate(x, y)
        transform: translateX(n)
        transfrom: translateY(n)

    重点

    - 沿着xy轴移动元素
    - translate最大的优点:不会影响到其他元素的位置
    - translate中的百分比单位是相对于自身元素translate:(50%,50%);
    - 对行内标签没有效果

    ## 2.3 2D旋转 ##

    1. rotate 旋转

       - `2D` 旋转指的是让元素在二维平面内顺时针或者逆时针旋转

    2.  `rotate` 语法

       ```css
       /* 单位是:deg */
       transform: rotate(度数) 
       ```

    3.  重点知识点
       - `rotate` 里面跟度数,单位是 `deg`
       -  角度为正时,顺时针,角度为负时,逆时针
       - 默认旋转的中心点是元素的中心点

    4.  代码演示

       ```css
       img:hover {
         transform: rotate(360deg)
       }
       ```

    设置旋转中心点
        
         

    div {
                 200px;
                height: 200px;
                background-color: pink;
                margin: 100px auto;
                transition: all 1s;
                /* 跟方位名词 
                也可以是百分比  默认是50% 50% 等价于center center */
                /* transform-origin: left bottom;*/
                /* 可以是px */
                transform-origin: 50px 50px;
            }
            
        div:hover {
            transform: rotate(360deg);
        }



    ## 2.4 2D转换之缩放scale ##

    1. `scale` 的作用

       - 用来控制元素的放大与缩小

    2. 语法

       ```css
       transform: scale(x, y)
       ```

    3. 知识要点
       - 注意,x 与 y 之间使用逗号进行分隔
       - `transform: scale(1, 1)`: 宽高都放大一倍,相当于没有放大
       - `transform: scale(2, 2)`: 宽和高都放大了二倍
       - `transform: scale(2)`: 如果只写了一个参数,第二个参数就和第一个参数一致
       - `transform:scale(0.5, 0.5)`: 缩小
       - `scale` 最大的优势:可以设置转换中心点缩放,默认以中心点缩放,而且不影响其他盒子

    4. 代码演示

        ```css
            

    div:hover {
               /* 注意,数字是倍数的含义,所以不需要加单位 */
               /* transform: scale(2, 2) */
           
               /* 实现等比缩放,同时修改宽与高 */
               /* transform: scale(2) */
           
               /* 小于 1 就等于缩放*/
               transform: scale(0.5, 0.5)
           }


        ```

    ## 2.5 2D转换综合写法 ##



    1.  知识要点

       - 同时使用多个转换,其格式为 `transform: translate() rotate() scale()`
       - 顺序会影响到转换的效果(先旋转会改变坐标轴方向)
       - 但我们同时有位置或者其他属性的时候,要将位移放到最前面


    css


      

       div {
                 200px;
                height: 200px;
                background-color: pink;
                transition: all .5s;
            }
            
        div:hover {
            /* 顺序影响效果 */
            transform: translate(50px, 50px) rotate(180deg) scale(1.2);
        }



    # 3.动画 #
    ## 3.1 动画基本使用 ##

    1. 什么是动画

       - 动画是 `CSS3` 中最具颠覆性的特征之一,可通过设置多个节点来精确的控制一个或者一组动画,从而实现复杂的动画效果

    2. 动画的基本使用
       - 先定义动画
       - 在调用定义好的动画

    3. 语法格式(定义动画)

       ```css
        

    @keyframes 动画名称 {
           0% {
                100px;
           }
           100% {
                200px
           }
       }


       ```


    4.  语法格式(使用动画)

       ```

       div {
           /* 调用动画 */
           animation-name: 动画名称;
            /* 持续时间 */
            animation-duration: 持续时间;
       }


       ```


    5. 动画序列

       - 0% 是动画的开始,100 % 是动画的完成,这样的规则就是动画序列
       - 在 @keyframs 中规定某项 CSS 样式,就由创建当前样式逐渐改为新样式的动画效果
       - 动画是使元素从一个样式逐渐变化为另一个样式的效果,可以改变任意多的样式任意多的次数
       - 用百分比来规定变化发生的时间,或用 `from` 和 `to`,等同于 0% 和 100%

    6. 代码演示

    css


       

      <style>
           div {
             width: 100px;
             height: 100px;
             background-color: aquamarine;
             animation-name: move;
             animation-duration: 0.5s;
           }
       
           @keyframes move{
             0% {
               transform: translate(0px)
             }
             100% {
               transform: translate(500px, 0)
             }
           }
         </style>



    ## 3.2 动画序列 ##

    根据节点(实际动画完成这步所需时间)来设置 动画使用顺序 
    如 25% 50% 75%等 

    ## 3.3 动画常用属性 ##


        属性                            描述
        @keyframes                    规定动画。
        animation                    所有动画属性的简写属性,除了animation-play-state属性。
        animation-name                规定@keyframes动画的名称。( 必须的)
        animation-duration            规定动画完成一个周期所花费的秒或毫秒 ,默认是0。 (必须的 )
        animation-timing-function    规定动画的速度曲线,默认是"ease"
        animation-delay                规定动画何时开始,默认是0。animation-iteration-count    规定动画被播放的次数,默认是1,还有infinite
        animation-direction            规定动画是否在下一-周期逆向播放,默认是"normal ",alternate逆播放
        animation-play-state        规定动画是否正在运行或暂停。默认是"running" ,还有"pause"。
        animation-fill-mode            规定动画结束后状态,保持forwards回到起始backwards


        /* 简写属性 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始和结束 */
        animation: move 3s ease-in 1s infinite alternate forwards;

    简写属性里不包含 animation-play-state 
    暂停动画 :animation-play-state:paused;  和鼠标经过和其他配合使用
    想要动画走回来而不是调回来 animation-direction :alternate


        值            描述
        linear        动画从头到尾的速度是相同的。匀速
        ease        默认。动画以低速开始,然后加快,在结束前变慢。
        ease-in        动画以低速开始。
        ease-out    动画以低速结束。
        ease-in-out    动画以低速开始和结束。
        steps()        (指定了时间函数中的间隔数量(步长)

    # 3. 3D转换 #

    ## 3.1 三维坐标系 ##

    - x轴:水平向右     右边正值
    - y轴:垂直向下    下面正值
    - z轴:垂直屏幕    往外面是正值 

    ## 3.2 3D位移 translate3d(x,y,z) ##


    比2D移动多了一个可以移动的反向

    就是 z 轴方向

       - `transform: translateX(100px)`:仅仅是在 x 轴上移动
       - `transform: translateY(100px)`:仅仅是在 y 轴上移动
       - `transform: translateZ(100px)`:仅仅是在 z 轴上移动
       - `transform: translate3d(x, y, z)`:其中x、y、z 分别指要移动的轴的方向的距离
       - **注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充**

     css
            
         

    div {
             200px;
            height: 200px;
            background-color: pink;
            /* transform: translateX(100px); */
            /* transform: translateY(100px); */
            /* 沿着z轴移动 后边单位一般都px translateZ(100px) 向外移动100px*/
            /* transform: translateX(100px) translateY(100px) translateZ(100px); */
            /* 简写 xyz不能省略 没有就写0*/
            transform: translate3d(100px, 100px, 100px);
        }


    ## 3.3 透视 perspective ##

    透视写在被观察元素的父盒子上
    距离视觉点越近的电脑平面成像越大,越远成像越小

    - d:就是视距,视距就是指人的眼睛到屏幕的距离

    - z:就是 z 轴,z 轴越大(正值),我们看到的物体就越大

    ## 3.4 旋转 rotate3d ##
    3D 旋转指可以让元素在三维平面内沿着 x 轴、y 轴、z 轴 或者自定义轴进行旋转

    1. 语法
       - `transform: rotateX(45deg)` -- 沿着 x 轴正方向旋转 45 度
       -  `transform: rotateY(45deg)` -- 沿着 y 轴正方向旋转 45 度
       -  `transform: rotateZ(45deg)` -- 沿着 z 轴正方向旋转 45 度
       - `transform: rotate3d(x, y, z, 45deg)` -- 沿着自定义轴旋转 45 deg 为角度

    rotate3d

    - `transform: rotate3d(x, y, z, deg)` -- 沿着自定义轴旋转 deg 为角度
    - x, y, z 表示旋转轴的矢量,是标识你是否希望沿着该轴进行旋转,最后一个标识旋转的角度
     - `transform: rotate3d(1, 1, 0, 180deg)` -- 沿着对角线旋转 45deg
     - `transform: rotate3d(1, 0, 0, 180deg)` -- 沿着 x 轴旋转 45deg


    transform-style

    -  控制子元素是否开启三维立体环境
    - `transform-style: flat`  代表子元素不开启 `3D` 立体空间,默认的
    - `transform-style: preserve-3d` 子元素开启立体空间
    -  代码写给父级,但是影响的是子盒子

  • 相关阅读:
    数据库Connection.OPEN()异常情况下 耗时很久才回应
    System.Threading.Tasks.TaskExceptionHolder.Finalize() 系统错误c#
    WCF双向通讯netTCP
    并行LINQ PLinq
    winform调用http
    kindle电子书的资源网站
    vscode设置中文语言
    Python拼接路径
    Python查看已安装模块
    Python查看模块版本
  • 原文地址:https://www.cnblogs.com/xujinglog/p/12809769.html
Copyright © 2011-2022 走看看