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` 子元素开启立体空间
    -  代码写给父级,但是影响的是子盒子

  • 相关阅读:
    document.getElementById("mytxt").style.left=""style.left在IE的FF中注意
    asp.net 用户控件中 使用相对路径的解决方法 图片路径问题(用户控件、图片路径) ,ResolveUrl
    探索 Block (一) (手把手讲解Block 底层实现原理)
    iOS 多线程开发 (概念与API简介)
    iOS 性能小点
    iOS runtime (二)(runtime学习之AutoCoding源码分析)
    探索 NSRunLoop (二)(NSRunLoop 自己动手实现SimpleRunLoop)
    iOS NSNotificationCenter (自己实现一个通知中心XMCNotificationCenter)
    iOS runtime (三)(runtime学习之YYModel源码分析)
    iOS runtime(一)(runtime 分析理解)
  • 原文地址:https://www.cnblogs.com/xujinglog/p/12809769.html
Copyright © 2011-2022 走看看