css过渡模块和2d转移模块彩民之家高手论坛

2019-10-13 04:33 来源:未知

1. 2D转换之移动(translate)

案例:

        div{
            width: 200px;
            height: 200px;
            background-color: #090;
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%,-50%);/*左-上 移动自身50%*/
        }

      1、通过浮动做好基本布局,如图:

动画--过渡延迟时间 transition-delay

transition-delay属性transition-duration属性极其类似,不同的是transition-duration是用来设置过渡动画的持续时间,而transition-delay主要用来指定一个动画开始执行的时间,也就是说当改变元素属性值后多长时间开始执行。

有时我们想改变两个或者多个css属性的transition效果时,只要把几个transition的声明串在一起,用逗号(“,”)隔开,然后各自可以有各自不同的延续时间和其时间的速率变换方式。但需要值得注意的一点:第一个时间的值为 transition-duration,第二个为transition-delay。

例如:a{ transition: background 0.8s ease-in 0.3,color 0.6s ease-out 0.3;}

示例演示:

通过transition属性将一个200px *200px的橙色容器,在鼠标悬浮状态时,过渡到一个300px * 300px的红色容器。而且整个过渡0.1s后触发,并且整个过渡持续0.28s。

HTML代码:

<div class="wrapper">
  <div>鼠标放到我的身上来</div>
</div>

CSS代码:

.wrapper {
  width: 400px;
  height: 400px;
  margin: 20px auto;
  border: 2px dotted red;
}
.wrapper div {
  width: 200px;
  height: 200px;
  background-color: orange;
  -webkit-transition: all .28s ease-in .1s;
  transition: all .28s ease-in .1s;
}
.wrapper div:hover {
  width: 300px;
  height: 300px;
  background-color: red;
}

演示结果

鼠标移入:

彩民之家高手论坛 1

鼠标移出:

彩民之家高手论坛 2

 3. 2D转换之缩放(scale)

        div{
            width: 200px;
            height: 200px;
            background-color: #090;
            margin: 100px auto;
        }
        div:hover{
            /*transform: scale(0.5);*/ /*x轴和Y轴都是缩放0.5倍*/
            /*transform: scaleX(0.5);*/ /*x轴缩放0.5倍*/
            transform: scale(2,3); /*x轴缩放2倍 y轴缩放3倍*/
        }

          如果取值小于1, 代表需要缩小

变形--扭曲 skew()

扭曲skew()函数能够让元素倾斜显示。它可以将一个对象以其中心位置围绕着X轴Y轴按照一定的角度倾斜。这与rotate()函数的旋转不同,rotate()函数只是旋转,而不会改变元素的形状。skew()函数不会旋转,而只会改变元素的形状。

Skew()具有三种情况:

1、skew(x,y)使元素在水平和垂直方向同时扭曲(X轴和Y轴同时按一定的角度值进行扭曲变形);

彩民之家高手论坛 3

第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则值为0,也就是Y轴方向上无斜切。

2、skewX(x)仅使元素在水平方向扭曲变形(X轴扭曲变形);

彩民之家高手论坛 4

3、skewY(y)仅使元素在垂直方向扭曲变形(Y轴扭曲变形)

彩民之家高手论坛 5

示例演示:

通过skew()函数将长方形变成平行四边形。

HTML代码:

<div class="wrapper">
  <div>我变成平形四边形</div>
</div>

CSS代码:

.wrapper {
  width: 300px;
  height: 100px;
  border: 2px dotted red;
  margin: 30px auto;
}
.wrapper div {
  width: 300px;
  height: 100px;
  line-height: 100px;
  text-align: center;
  color: #fff;
  background: orange;
  -webkit-transform: skew(45deg);
  -moz-transform:skew(45deg) 
  transform:skew(45deg);
}

演示结果

彩民之家高手论坛 6

动画过渡(transition)

彩民之家高手论坛 7

     今天的分享到这里就结束了,希望大家能有一些收获。大家有什么意见和建议也可以在留言区留言,谢谢大家的支持。

变形--位移 translate()

translate()函数可以将元素向指定的方向移动,类似于position中的relative。或以简单的理解为,使用translate()函数,可以把元素从原来的位置移动,而不影响在X、Y轴上的任何Web组件。

translate我们分为三种情况:

1、translate(x,y)水平方向和垂直方向同时移动(也就是X轴和Y轴同时移动)

彩民之家高手论坛 8

2、translateX(x)仅水平方向移动(X轴移动)

彩民之家高手论坛 9

3、translateY(Y)仅垂直方向移动(Y轴移动)

彩民之家高手论坛 10

实例演示:通过translate()函数将元素向Y轴下方移动50px,X轴右方移动100px。

HTML代码:

<div class="wrapper">
  <div>我向右向下移动</div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border: 2px dotted red;
  margin: 20px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  line-height: 200px;
  text-align: center;
  background: orange;
  color: #fff;
  -webkit-transform: translate(50px,100px);
  -moz-transform:translate(50px,100px);
  transform: translate(50px,100px);
}

演示结果

彩民之家高手论坛 11

2D转换

在二维的平面上做一些变化,使用transform属性

      2、考虑需要实现的效果,如下图,即鼠标移入后,具有:hover事件的li宽度变大,其余的等大。

变形--原点 transform-origin

任何一个元素都有一个中心点,默认情况之下,其中心点是居于元素X轴和Y轴的50%处。如下图所示:

彩民之家高手论坛 12

在没有重置transform-origin改变元素原点位置的情况下,CSS变形进行的旋转、位移、缩放,扭曲等操作都是以元素自己中心位置进行变形。但很多时候,我们可以通过transform-origin来对元素进行原点位置改变,使元素原点不在元素的中心位置,以达到需要的原点位置。

transform-origin取值和元素设置背景中的background-position取值类似,如下表所示:

彩民之家高手论坛 13

示例展示:

通过transform-origin改变元素原点到左上角,然后进行顺时旋转45度。

HTML代码:

<div class="wrapper">
  <div>原点在默认位置处</div>
</div>
<div class="wrapper transform-origin">
  <div>原点重置到左上角</div>
</div>

CSS代码:

.wrapper {
  width: 300px;
  height: 300px;
  float: left;
  margin: 100px;
  border: 2px dotted red;
  line-height: 300px;
  text-align: center;
}
.wrapper div {
  background: orange;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}
.transform-origin div {
  -webkit-transform-origin: left top;
  transform-origin: left top;
}

演示结果:

彩民之家高手论坛 14

 1. 3D转换之X轴旋转

彩民之家高手论坛 15

※  X轴旋转就像单杠旋转

案例:

 

 
        div{
            width: 200px;
            height: 200px;
            margin: 100px auto;
            border: #000 solid 1px;
        }
        div img:hover{
            transform: rotateX(60deg);/*x轴旋转60度*/
        }

 

 

☞ transform: rotateX(60deg)在二维平面,没有立体感。想让它有立体感需要添加透视功能()

 

透视点(延长会有一个相交点)-- 灭点 
 

 

 
        div{
            width: 200px;
            height: 200px;
            margin: 100px auto;
            border: #000 solid 1px;
            perspective: 400px; /*透视效果,这个元素必须给父元素添加*/
        }        div img:hover{
            transform: rotateX(60deg);/*x轴旋转60度*/
        }

 

 默认情况以中线在旋转,添加transform-origin: bottom以底边为原点

 

 
        div{
            width: 200px;
            height: 200px;
            margin: 100px auto;
            border: #000 solid 1px;
            perspective: 400px; /*透视效果,这个元素必须给父元素添加*/
        }
        div img{
            transform-origin: bottom;
            transition: all 0.5s;
        }
        div img:hover{
            transform: rotateX(60deg);/*x轴旋转60度*/
        }

 

 

案例:打开的盒子

 

 
    #content{
        width: 300px;
        height: 300px;
        margin: 100px auto;
        position: relative;
    }
    #content #face1,
    #content #face2{
        width: 300px;
        height: 300px;
        border-radius: 50%;
        background: url('turntable-bg.jpg') no-repeat;
        border: #666 solid 1px;
        position: absolute;
        left: 0;
        top: 0;
    }
    #content #face2{
        background: url('turntable.png') no-repeat;
        transform-origin: bottom;
        transition: all 2s;
    }
    #content:hover #face2{
        transform: rotateX(180deg);
    }

 

 

        1、先做好基本页面布局,给div和span添加样式表;

动画--过渡函数 transition-timing-function

transition-timing-function属性指的是过渡的“缓动函数”。主要用来指定浏览器的过渡速度,以及过渡期间的操作进展情况,其中要包括以下几种函数:

彩民之家高手论坛 16

(单击图片可放大)

案例展示:

在hover状态下,让容器从一个正方形慢慢过渡到一个圆形,而整个过渡是先加速再减速,也就是运用ease-in-out函数。

HTML代码:

<div></div>

CSS代码:

div {
  width: 200px;
  height: 200px;
  background: red;
  margin: 20px auto;
  -webkit-transition-property: -webkit-border-radius;
  transition-property: border-radius;
  -webkit-transition-duration: .5s;
  transition-duration: .5s;
  -webkit-transition-timing-function: ease-in-out;
  transition-timing-function: ease-in-out;
  -webkit-transition-delay: .2s;
  transition-delay: .2s;
}
div:hover {
  border-radius: 100%;
}

演示结果

鼠标移入:

彩民之家高手论坛 17

鼠标移出:

彩民之家高手论坛 18

3D转换

      2、告诉系统过渡动画的运动的速度:transition-timing-function: linear;

变形--旋转 rotate()

旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转。它主要在二维空间内进行操作,设置一个角度值,用来指定旋转的幅度。如果这个值为正值,元素相对原点中心顺时针旋转;如果这个值为负值,元素相对原点中心逆时针旋转。如下图所示:

彩民之家高手论坛 19

HTML代码:

<div class="wrapper">
  <div></div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border: 1px dotted red;
  margin: 100px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  background: orange;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

演示结果

彩民之家高手论坛 20

 

 

      案例1:

变形--矩阵 matrix()

matrix() 是一个含六个值的(a,b,c,d,e,f)变换矩阵,用来指定一个2D变换,相当于直接应用一个[a b c d e f]变换矩阵。就是基于水平方向(X轴)和垂直方向(Y轴)重新定位元素,此属性值使用涉及到数学中的矩阵,我在这里只是简单的说一下CSS3中的transform有这么一个属性值,如果需要深入了解,需要对数学矩阵有一定的知识。

示例演示:通过matrix()函数来模拟transform中translate()位移的效果。
HTML代码:

<div class="wrapper">
  <div></div>
</div>

CSS代码:

.wrapper {
  width: 300px;
  height: 200px;
  border: 2px dotted red;
  margin: 40px auto;
}
.wrapper div {
  width:300px;
  height: 200px;
  background: orange;
  -webkit-transform: matrix(1,0,0,1,50,50);
  -moz-transform:matrix(1,0,0,1,50,50);
  transform: matrix(1,0,0,1,50,50);
}

演示结果:

彩民之家高手论坛 21

动漫过渡类型:

彩民之家高手论坛 22

 

 案例:

没有给transition瞬间变化 ↓ ↓

        div{
            width: 200px;
            height: 100px;
            border: #00f solid 3px;
            background-color: #f90;
            margin: 100px auto;
            border-radius: 15px;
        }
        div:hover{
            width: 300px;
            height: 200px;
            background-color: #f30;
        }

1. 过渡的小案例:

        div{
            width: 200px;
            height: 100px;
            border: #00f solid 3px;
            background-color: #f90;
            margin: 100px auto;
            border-radius: 15px;
            /*transition: width 0.5s ease 0s;*/ /* 设置参与过渡的属性 过渡时间 过渡的动画类型 延迟过渡的时间 */
            /*transition: all 0.5s ease 1s;*/ /* 默认用all参与 ... 延迟时间【进入和退出动画都延迟2秒】 */
            transition: all 0.5s;
        }
        div:hover{
            width: 300px;
            height: 200px;
            background-color: #f30;
        }

 

2. 头像旋转小案例:

 

        img{
            border: #093 solid 4px;
            display: block;
            margin: 100px auto;
            border-radius: 50%;
            width: 300px;
            height: 300px;
            transition: all 1s;
        }
        img:hover{
            transform: rotate(360deg);
        }

 

3. 鼠标移动到图片上图片变大(模仿公开课网站的效果) 

        div{
            width: 300px;
            height: 300px;
            border: #ccc solid 1px;
            margin: 100px auto;
            overflow: hidden;
        }
        div img{
            width: 300px;
            height: 300px;
            transition: all 0.5s ease 0s;
        }
        div img:hover{
            transform: scale(1.1);
        }

 

4. 案例:抽奖的功能:

 效果图  (素材可下载)

 背景

转盘

指针

 HTML代码:

    <div id="content">
        <div id="zhuan"></div>
        <img src="pointer.png" alt="彩民之家高手论坛 23">
    </div>

 css代码:

        #content {
            width: 698px;
            height: 674px;
            background: url('turntable-bg.jpg') no-repeat;
            margin: auto;
            overflow: hidden;
            position: relative;
        }

        #content #zhuan {
            width: 478px;
            height: 478px;
            background: url('turntable.png') no-repeat;
            margin: 97px 0 0 110px;
            transition: all 3s ease 0s;
        }

        #content img {
            position: absolute;
            left: 275px;
            top: 219px;
        }

JavaScript代码:

 1     <script src="http://www.9nuskin.com/uploads/allimg/191013/0433022Q8-31.jpg"></script>
 2     <script>
 3         $(document).ready(function (e) {
 4             $('#content img').click(function (e) {
 5                 var num = Math.floor(Math.random() * 3600); //求的旋转的随机数
 6                 $('#zhuan').css('transform', 'rotate('   num   'deg)');//实际看到图片的旋转度数并没有在原来旋转的基础上累加,而是基于原来图片0度时的位置设置样式,图片不管在哪个位置都会以顺时针或逆时针旋转回基于原来0度 rotate(度)
 7                 num %= 360; //num = num % 360
 8                 setTimeout(function () {
 9                     if (num <= 60) {
10                         alert('谢谢参与');
11                     } else if (num <= 60*2) {
12                         alert('三等奖');
13                     } else if (num <= 60*3) {
14                         alert('谢谢参与');
15                     } else if (num <= 60*4) {
16                         alert('二等奖');
17                     } else if (num <= 60*5) {
18                         alert('谢谢参与');
19                     } else if(num < 60*6){
20                         alert('一等奖');
21                     }
22                 }, 3000);
23             });
24         });
25     </script>

 

示例代码:

变形--缩放 scale()

缩放 scale()函数 让元素根据中心原点对对象进行缩放。

缩放 scale 具有三种情况:

1、 scale(X,Y)使元素水平方向和垂直方向同时缩放(也就是X轴和Y轴同时缩放)

彩民之家高手论坛 24

例如:

div:hover {
  -webkit-transform: scale(1.5,0.5);
  -moz-transform:scale(1.5,0.5)
  transform: scale(1.5,0.5);
}

注意:Y是一个可选参数,如果没有设置Y值,则表示X,Y两个方向的缩放倍数是一样的。

2、scaleX(x)元素仅水平方向缩放(X轴缩放)

彩民之家高手论坛 25

3、scaleY(y)元素仅垂直方向缩放(Y轴缩放)

彩民之家高手论坛 26

HTML代码:

<div class="wrapper">
  <div>我将放大1.5倍</div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border:2px dashed red;
  margin: 100px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  line-height: 200px;
  background: orange;
  text-align: center;
  color: #fff;
}
.wrapper div:hover {
  opacity: .5;
  -webkit-transform: scale(1.5);
  -moz-transform:scale(1.5)
  transform: scale(1.5);
}

演示结果

彩民之家高手论坛 27

注意: scale()的取值默认的值为1,当值设置为0.010.99之间的任何值,作用使一个元素缩小;而任何大于或等于1.01的值,作用是让元素放大。

 4. 2D转换之斜切(skew)

        div{
            width: 200px;
            height: 200px;
            background-color: #090;
            margin: 100px auto;
        }
        div:hover{
            /*transform: skewX(8deg);*/ /*x方向上斜切8度*/
            transform: skewY(8deg); /*y方向上斜切8度*/
        }
  1. 转换案例:

下箭头制作

彩民之家高手论坛 28

 1         div{
 2             width: 300px;
 3             height: 40px;
 4             border: #5c5c5c solid 1px;
 5             margin: 100px auto;
 6             position: relative;
 7         }
 8         div::after{
 9             content: '';
10             width: 12px;
11             height: 12px;
12             border-right: #5c5c5c solid 2px;
13             border-bottom: #5c5c5c solid 2px;
14             display: block;
15             position: absolute;
16             top: 50%; /*子盒子左上角相对于有定位的父盒子居中显示*/
17             right: 12px;
18             transform: translateY(-50%) rotate(45deg); /*translateY(-50%)与top:50% 组合使用让子盒子相对父盒子垂直居中*/
19         }
20         div:hover{
21             border: #009 solid 1px;
22         }
23         div:hover::after{
24             border-right: #009 solid 2px;
25             border-bottom: #009 solid 2px;
26         }

  一、过渡模块transition

动画--过渡所需时间 transition-duration

transition-duration属性主要用来设置一个属性过渡到另一个属性所需的时间,也就是从旧属性过渡到新属性花费的时间长度,俗称持续时间

案例演示:

在鼠标悬停(hover)状态下,让容器从直角慢慢过渡到圆角,并让整个动画持续0.5s。

HTML:

<div></div>

CSS:

div {
  width: 300px;
  height: 200px;
  background-color: orange;
  margin: 20px auto;
  -webkit-transition-property: -webkit-border-radius;
  transition-property: border-radius;
  -webkit-transition-duration: .5s;
  transition-duration: .5s;
  -webkit-transition-timing-function: ease-out;
  transition-timing-function: ease-out;
  -webkit-transition-delay: .2s;
  transition-delay: .2s;
}
div:hover {
  border-radius: 20px;
}

演示结果:

鼠标移入

彩民之家高手论坛 29

鼠标移出

彩民之家高手论坛 30

 2. 2D转换之旋转(rotate)

默认情况下按中心点旋转,我们可以通过transform-origin调中心点。

        div{
            width: 200px;
            height: 200px;
            background-color: #090;
            margin: 100px auto;
            transform-origin: top left;/*旋转的中心点,默认不写该属性是以矩形中心点旋转*/
        }
        div:hover{
            transform: rotate(45deg)/*deg表示度数*/
        }

彩民之家高手论坛 31   变化前

动画--过渡属性 transition-property

早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化,让效果显得更加细腻。简单点说,就是通过鼠标的单击、获得焦点,被点击或对元素任何改变中触发,并平滑地以动画效果改变CSS的属性值。

在CSS中创建简单的过渡效果可以从以下几个步骤来实现:
第一,在默认样式中声明元素的初始状态样式;
第二,声明过渡元素最终状态样式,比如悬浮状态;
第三,在默认样式中通过添加过渡函数,添加一些不同的样式。

CSS3的过度transition属性是一个复合属性,主要包括以下几个子属性:

  • transition-property:指定过渡或动态模拟的CSS属性

  • transition-duration:指定完成过渡所需的时间

  • transition-timing-function:指定过渡函数

  • transition-delay:指定开始出现的延迟时间

先来看transition-property属性

transition-property用来指定过渡动画的CSS属性名称,而这个过渡属性只有具备一个中点值的属性(需要产生动画的属性)才能具备过渡效果,其对应具有过渡的CSS属性主要有:

彩民之家高手论坛 32

HTML:

<div></div>

CSS:

div {
  width: 200px;
  height: 200px;
  background-color:red;
  margin: 20px auto;
  -webkit-transition: background-color .5s ease .1s;
  transition: background-color .5s ease .1s;
}
div:hover {
  background-color: orange;
}

演示结果:

鼠标移入

彩民之家高手论坛 33

鼠标移出

彩民之家高手论坛 34

特别注意:当“transition-property”属性设置为all时,表示的是所有中点值的属性。

用一个简单的例子来说明这个问题:

假设你的初始状态设置了样式“width”,“height”,“background”,当你在终始状态都改变了这三个属性,那么all代表的就是“width”、“height”和“background”。如果你的终始状态只改变了“width”和“height”时,那么all代表的就是“width”和“height”。

2. 3D转换之X轴旋转

彩民之家高手论坛 35

 ※  Y轴旋转就像钢管舞,沿着y轴方向旋转

 

 1 #content{
 2     width: 300px;
 3     height: 300px;
 4     border: #666 solid 1px;
 5     margin: 100px auto;
 6     position: relative;
 7     perspective: 800px; /*如需透视效果景深,这个元素必须给父元素添加*/
 8 }
 9 #content #face1,
10 #content #face2{
11     width: 300px;
12     height: 300px;
13     border-radius: 50%;
14     background: url('yingbi.png') no-repeat;
15     position: absolute;
16     backface-visibility: hidden; /*转过去以后隐藏*/
17     transition: all 3s;
18 }
19 #content #face1{
20     background-position: -4px -3px;
21     z-index: 1;
22 }
23 #content #face2{
24     background-position: -358px -3px;
25     transform: rotateY(-180deg); /*face2在背面处于-180度的状态*/
26     /* z-index: 0; */
27 }
28 #content:hover #face1{
29     transform: rotateY(-180deg);
30     /* z-index: 0; */ /*旋转过后置于底部  有了backface-visibility: hidden可不添加*/
31 }
32 #content:hover #face2{
33     transform: rotateY(0deg);
34     /* z-index: 1; */ /*旋转过后置于顶部 */
35 }

 

 素材可下载  

 

 

face2在背面处于-180度的状态

彩民之家高手论坛 36 运动后

彩民之家高手论坛 37过度后

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>旋转轴向</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            width: 800px;
            height: 500px;
            margin: 0 auto;
        }
        ul li{
            list-style: none;
            width: 200px;
            height: 200px;
            margin: 0 auto;
            margin-top: 50px;
            border: 1px solid #000;
            transform:perspective(500px);
       }
        ul li div{
            width: 200px;
            height: 200px;
            background-color: #ac4345;
        }
        ul li:nth-child(1) div{
            transform: rotateZ(45deg);
        }
        ul li:nth-child(2) div{
            transform: rotateX(45deg);
        }
        ul li:nth-child(3) div{
            transform: rotateY(45deg);
        }
    </style>
</head>
<body>
<ul>
    <li><div></div></li>
    <li><div></div></li>
    <li><div></div></li>
</ul>
</body>
</html>

    2、必须告诉系统哪个属性需要执行过渡效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>2D转换模块</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            width: 800px;
            height: 500px;
            border: 1px solid #000;
            margin: 0 auto;
        }
        ul li{
            list-style: none;
            width: 100px;
            height: 50px;
            background-color: red;
            margin: 0 auto;
            margin-top: 50px;
            text-align: center;
            line-height: 50px;
        }
        ul li:nth-child(2){
            transform: rotate(45deg);
        }
        ul li:nth-child(3){
            transform: translate(100px, 0px);
        }
        ul li:nth-child(4){
            transform: scale(1.5);
        }
        ul li:nth-child(5){
            transform: rotate(45deg) translate(100px, 0px) scale(1.5, 1.5);
            /*transform: translate(100px, 0px);*/
        }
    </style>
</head>
<body>
<ul>
    <li>正常的</li>
    <li>旋转的</li>
    <li>平移的</li>
    <li>缩放的</li>
    <li>综合的</li>
</ul>
</body>
</html>

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>89-过渡模块-其它属性</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div {
            width: 100px;
            height: 50px;
            background-color: red;
            transition-property: width;
            transition-duration: 5s;
            /*告诉系统延迟多少秒之后才开始过渡动画*/
            transition-delay: 2s;
        }
        div:hover{
            width: 300px;
        }
        ul{
            width: 800px;
            height: 500px;
            margin: 0 auto;
            background-color: pink;
            border: 1px solid #000;
        }
        ul li{
            list-style: none;
            width: 100px;
            height: 50px;
            margin-top: 50px;
            background-color: blue;
            transition-property: margin-left;
            transition-duration: 10s;
        }
        ul:hover li{
            margin-left: 700px;
        }
        ul li:nth-child(1){
            /*告诉系统过渡动画的运动的速度*/
            transition-timing-function: linear;
        }
        ul li:nth-child(2){
            transition-timing-function: ease;
        }
        ul li:nth-child(3){
            transition-timing-function: ease-in;
        }
        ul li:nth-child(4){
            transition-timing-function: ease-out;
        }
        ul li:nth-child(5){
            transition-timing-function: ease-in-out;
        }
    </style>
</head>
<body>
<!--<div></div>-->
<ul>
    <li>linear</li>
    <li>ease</li>
    <li>ease-in</li>
    <li>ease-out</li>
    <li>ease-in-out</li>
</ul>
</body>
</html>

      1、当围绕x和y轴旋转时就会改变属性距离我们的距离,也就是透视,什么事透视呢,就是近大远小。

示例代码:

 

        3、再回过头去给被修改属性的那个元素添加过渡即可

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过渡模块-手风琴效果</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            width: 960px;
            height: 300px;
            margin: 100px auto;
            border: 1px solid #000;
            overflow: hidden;
        }
        ul li{
            list-style: none;
            width: 160px;
            height: 300px;
            float: left;
            transition: width 0.5s;
        }
        ul:hover li{
            width: 100px;
        }
        ul li:hover{
            width: 460px;
        }
    </style>
</head>
<body>
<ul>
/*这里为了方便使用了行内样式表,实际应用中一般为图片,要注意样式与内容分离*/

    <li style="background-color: #ccc;"></li>
    <li style="background-color: #e5ce8a;"></li>
    <li style="background-color: #eac123;"></li>
    <li style="background-color: #a00;"></li>
    <li style="background-color: #cc0;"></li>
    <li style="background-color: #0cc;"></li>
</ul>
</body>
</html>

        2、2D的转换模块会修改元素的坐标系, 所以旋转之后再平移就不是水平平移的

          如果取值是1, 代表不变

     (三)2d转换模块的旋转轴

 示例图片:

    (一)写法:transform:值;transform的值常用的有3种:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过渡模块的连写</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div {
            width: 100px;
            height: 50px;
            background-color: red;
            /*注释中为简写前的代码:
            transition-property: width;
            ransition-duration: 5s;
            transition: width 5s linear 0s,background-color 5s linear 0s;
            transition: background-color 5s linear 0s;
            transition: width 5s,background-color 5s,height 5s;*/
            /*下面为简写后的代码*/
            transition: all 5s;
        }
        div:hover{
            width: 300px;
            height: 300px;
            background-color: blue;
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>

 

      2、你会发现元素围绕x轴或y轴旋转时并没有金达远小的效果,这时你需要添加一个透视属性:perspective: 500px;注意:这个属性需要添加在元素的父容器上;

 示例图片:

      默认情况下所有的元素都是以自己的中心点作为参考来旋转的, 我们可以通过形变中心点属性来修改它的参考点。  

      (四)过度模块的编写套路和案例

      1、旋转:其中deg是单位, 代表多少度:transform: rotate(45deg);

 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>2D转换模块的形变中心点</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            width: 200px;
            height: 200px;
            border: 1px solid #000;
            margin: 100px auto;
            position: relative;
        }
        ul li{
            list-style: none;
            width: 200px;
            height: 200px;
            position: absolute;
            left: 0;
            top: 0;
            transform-origin: left top;
        }
        ul li:nth-child(1){
            background-color: red;
            transform: rotate(30deg);
        }
        ul li:nth-child(2){
            background-color: green;
            transform: rotate(50deg);
        }
        ul li:nth-child(3){
            background-color: blue;
            transform: rotate(70deg);
        }
    </style>
</head>
<body>
<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>
</body>
</html>

          具体像素:transform-origin: 200px 0px;

    1、必须要有属性发生变化

彩民之家高手论坛 38过渡前

        注意点:

  (一)过度模块的三要素:

    

    (三)过渡连写格式
      transition: 过渡属性 过渡时长 运动速度 延迟时间;

彩民之家高手论坛 39

 彩民之家高手论坛 40    变化中

        2、修改我们认为需要修改的属性

        3、给属性添加过渡效果,在只有一种属性变动或多个属性过渡时间等相同的情况下推荐使用:transition:all 1s;

        1、不要管过渡, 先编写基本界面

    ps:当多个属性需要同时执行过渡效果时用逗号隔开即可

示例图片:

    (二)过渡模块的其它属性:

      2、移动:第一个参数:水平方向,第二个参数:垂直方向,transform: translate(100px, 0px);

        我们可以通过ul的:hover事件让所有的li变小,然后通过li的:hover时间来使当前li宽度变大。案例事小,思路是大,这种思路在以后的js中或者其他的地方经常用到,即先将所有元素初始化,在单独改变需要改变的元素属性。

      3、缩放:第一个参数:水平方向,第二个参数:垂直方向,transform: scale(0.5, 0.5);transform: scale(1.5);

    思路:

 

不同的运动速度会导致不同的过渡效果,请看运行效果图:

          如果水平和垂直缩放都一样, 那么可以简写为一个参数

          百分比:transform-origin: 50% 50%;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过渡模块</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 100px;
            height: 50px;
            background-color: red;
            /*告诉系统哪个属性需要执行过渡效果*/
            transition-property: width, background-color;
            /*告诉系统过渡效果持续的时长*/
            transition-duration: 5s, 5s;
        }
        /*
  用来改变元素的属性
  :hover这个伪类选择器除了可以用在a标签上, 还可以用在其它的任何标签上

*/
        div:hover{
            width: 300px;
            background-color: blue;
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>

        2、考虑怎么实现要做的效果,和需要变动的属性

彩民之家高手论坛 41

示例代码:

彩民之家高手论坛 42过渡中

 

彩民之家高手论坛 43

      transition-property: width, background-color;

    

          如果取值大于1, 代表需要放大

彩民之家高手论坛 44 运动中

      rotate旋转属性旋转是默认都是围绕z轴旋转,若需要改变旋转轴可以在rotate后加上旋转轴,即:rotateX();rotateY();rotateZ();

    手风琴效果,示例代码:

    3、必须告诉系统过渡效果持续时长

 

彩民之家高手论坛 45 运动前

 

      1、写法:transform-origin: left top;第一个参数:水平方向,第二个参数:垂直方向。

       2、示例代码:

      编写套路:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过渡模块-弹性效果</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            height: 150px;
            background-color: green;
            margin-top: 100px;
            text-align: center;
            line-height: 150px;
        }
        div span{
            font-size: 80px;
            transition: margin 3s;
        }
        div:hover span{
            margin: 0 20px;
        }
    </style>
</head>
<body>
<div>
    L
    M
    S
    码
    农
    来
    过
    渡
</div>
</body>
</html>

      1、告诉系统延迟多少秒之后才开始过渡动画:transition-delay: 2s;

          特殊关键字:transform-origin: center center;

        ps:取值有三种形式  

 效果图:

    (二)转换模块的形变中心点:

      思路:

彩民之家高手论坛 46    变化后

      ps:1、如果需要进行多个转换, 那么用空格隔开

    

  案例2:

  二、2d转换模块transform

 

      过渡连写注意点
        1和分开写一样, 如果想给多个属性添加过渡效果也是用逗号隔开即可
        2连写的时可以省略后面的两个参数, 因为只要编写了前面的两个参数就已经满足了过渡的三要素
        3如果多个属性运动的速度/延迟的时间/持续时间都一样, 那么可以简写为:transition:all 0s;

      transition-duration: 5s, 5s;

   今天,我们一起来研究一下css3中的过渡模块、2d转换模块和3d转换模块

彩民之家高手论坛 47

TAG标签: HTML5 css3 css
版权声明:本文由彩民之家高手论坛发布于前端知识,转载请注明出处:css过渡模块和2d转移模块彩民之家高手论坛