CSS3--选择器、动画效果

一、复杂选择器:

(1)兄弟选择器:选择当前元素平级的兄弟元素

      有两种:1)相邻兄弟选择器:仅选择相邻的1个元素: 选择器+选择器

                                相邻兄弟选择器的三个关键词:1. 紧临   2. 平级   3. 之后

             2)兄弟选择器:选择之后的所有元素:选择器~选择器

                      *注意:不要求紧临*

     何时使用:只要选择平级元素时,都要使用兄弟选择器

   (2)属性选择器:按自定义条件选择元素

    何时属性选择器:只要按照任意属性或属性值自定义选择条件时,就用属性选择器。

    如何使用:

       1. [属性名]: 选择所有包含指定属性名的元素——太泛

       2. 其他选择器[属性名]:

              选择首先满足其他选择器的元素,再在其中选择包含指定属性名的元素

       3. 其他选择器[条件]:

              选择首先满足其他选择器的元素,再在其中选择满足条件的元素。

          其中:条件:5种方式:

           属性名="属性值":选择包含指定属性名且属性值与给定值相等。——等值条件

           模糊选择条件:部分匹配

           属性名^="关键字":选择包含指定属性名,且属性值必须以关键字*开头*的元素。

           属性名$="关键字":选择包含指定属性名,且属性值必须以关键字*结尾*的元素。

           属性名*="关键字":选择包含指定属性名,且属性值只要*包含*关键字的元素

           属性名~="单词":选择包含指定属性名,且属性中包含指定*单词*的元素。

      否定伪类:选择不满足属性选择器条件的元素

      如何使用:选择器:not([条件])

伪元素选择器:选择特定位置上的文字的选择器

   伪类选择器:当元素状态发生改变时生效的选择

    *  :target  :选择当前正在被跳转到的锚点元素

            特点1:仅选择一个

            特点2:通过点击,触发其他元素样式的变化

  

     元素状态伪类:——专用于修饰表单中的元素

       :enabled  :匹配每个可用的元素

       :disabled :匹配每个禁用的元素

       :checked  :匹配每个选中的单选/多选按钮

    * 结构伪类:修饰处于特殊位置上的元素样式

       子元素:first-child :作为父元素下的第一个子元素

       比如:tr:first-child

       子元素:last-child  :作为父元素下的最后一个子元素

       子元素:only-child  :作为父元素下的唯一一个子元素

      

       父元素:empty   :选择不包含任何节点的父元素

           强调:看不见得空字符/回车,都是节点

    何时使用:只要选择特殊位置上的子元素,都要用结构伪类

    1. 变形:

旋转:rotate() 位移:translate()缩放:scale()倾斜:skew()

  

   旋转:围绕一个*参照原点*,旋转指定*角度*

   语法:transform:rotate(ndeg)//n>0顺时针,n<0逆时针

   坐标原点:图片左上角:0,0

   参照原点:默认:width/2,height/2

                    50%     50%

   修改参照原点:/*transform-origin: 100% 100%;*/

           /*transform-origin:right bottom;*/

           transform-origin:x坐标 y坐标;

   位移:沿着*坐标轴*,移动指定的*距离*

   语法:transform:translate(x轴移动距离,y轴移动距离);

      坐标轴方向:x向右为正,y向下为正

   变形过程:

     浏览器先加载所有元素,固定所有元素的大小和位置

        变形发生时,提升元素的层级,再变形。

   结论:变形不会挤压周围元素。但可能遮挡其它元素

   其它位移函数:2个:

       仅延x轴位移:translateX(x轴移动距离)

       仅延y轴位移:translateY(y轴移动距离)

   缩放:

   语法:transform:scale(倍数)——等比例缩放

       倍数:0-1,缩小; 1以上,放大

         transform:scale(x坐标缩放倍数,y坐标缩放倍数)

   其它缩放函数:2个

       仅延x轴缩放:scaleX(x坐标缩放倍数)

       仅延y轴缩放:scaleY(y坐标缩放倍数)

   *强调:缩放同样也会受参照原点的影响

         参照原点的位置,在变形中永远不变!*

  

3d变形:

    perspective 属性:

     假定的人眼位置到投影平面(网页)的距离

    如何使用:在3d变换元素的父元素上定义perspective属性

    3d位移:特指延z轴位移。向网页外为正,向网页内为负

    语法:transform:translateZ(延z轴位移距离)

          transform:translate3d(x,y,z)

    注意:延z轴位移,导致其他坐标轴刻度缩小或放大。

    3d旋转:特指延任意一个坐标轴旋转

    语法:transform:rotateX(ndeg)

           n>0,向后倒;n<0,向前倒

          transform:rotateY(ndeg)

           n>0,向右转;n<0,向左转

          transform:rotateZ(ndeg)-->transform:rotate()

    了解:rotate3d(x,y,z,deg);

         其中x,y,z表示1(正向)或-1(反向).

    3d缩放:transform:scaleZ(倍数)

     将对应坐标轴上的坐标*相应倍数

    了解:transform:scale3d(x,y,z)

transform属性后,可同时使用多种变化函数。

   浏览器会从左向右依次变化!

比如:transform:translateX(100px) rotate(30)

     transform:rotate(30) translateX(100px)

   *rotate()函数本质,旋转坐标轴,而不是仅旋转图片*

1. transition:过渡/渐变

    从*开始样式*,经过指定*时间*后,缓慢过渡到*结束样式*

   语法:

transition:需要过渡的属性名 经过多长时间 变化类型 延迟

     强调:和开始样式写在一起!

   多个属性同时过渡:简写:

   transition: 属性名1 时长 变化类型 [延迟],

               属性名2 ... ...      ,

               属性名n ... ...

   过渡子属性:——了解

     1. 专门设置过渡属性名:

        transition-property:属性名1 属性名2 ...;

     2. 专门设置过渡持续时间:

        transition-duration:ns/nms ... ...

     3. 专门设置过渡类型:

        transition-timing-function:

        备选值:ease:先加速再减速

                linear: 匀速

                ease-in: 加速

                ease-out: 减速

                ease-in-out: 先加速再减速

     4. 专门设置过渡开始前的延迟时间:

        transition-delay:ns/nms ... ...

2. 关键帧动画:

      关键帧:动画运行过程中的关键样式状态

      关键帧动画:动画在多个关键帧之间顺序变化

   如何实现:2步:

     1. 定义动画,设计动画中的关键帧

      @keyframes 动画名{

        from{动画初始状态}

     n%{动画运行到n%位置时的状态}

     ... ...

     to{动画结束状态}

      }

     2. 需要触发动画的位置,触发动画

      animation:动画名 动画持续时间 变化类型

     动画子属性:

       1. 专门设置动画名:animation-name

       2. 专门设置动画时间:animation-duration

       3. 专门设置变化类型:animation-timing-function

       4. 专门设置动画保持结束状态:

            animation-fill-mode:forwards

       5. 专门设置重复次数:animation-iteration-count:n

            infinite:无限次

       6. 专门设置播放方向:animation-direction:

            alternate: 奇数次正向播放,偶数次反向播放

     暂停动画:animation-play-state:paused;

    

            

原文地址:https://www.cnblogs.com/baiyanfeng/p/5042894.html