前端动态效果学习

一、定位:运用子绝父相的方法,灵活的改变盒子在网页中的位置。

父级:(position:relative)

子级:(position:absolute)

子级以父级为参照物,left、right、top、bottom进行边偏移调整位置。

  案例中时常要求盒子定位居中,第一步将子级绝对定位,再将盒子水平、垂直边偏移50%后,但此时盒子位置仍不居中,是因为此时偏移的是父级尺寸的一半,需要再将子级向左、上移动自身尺寸的一半,才能水平居中。

transform:translate(-50%,-50%)

二、平面转换 transform

(1)平移:通过translate()函数可以实现元素在水平和垂直方向上的移动,取值可为像素单位数值也可为参照自身尺寸的百分比。

translate:translate(X,Y)  ,也可单独设置X轴或Y轴,即translateX(),translateY()

(2)旋转:通过rotate()函数可以实现元素的旋转效果。取值:正(顺时针),负(逆时针)

例如:transform: rotate(45deg); 表示将元素顺时针旋转45度。

(3)缩放:通过scale()函数可以实现元素的缩放效果。例如:transform: scale(1.5, 0.5); 表示将元素在水平方向上放大1.5倍,在垂直方向上缩小0.5倍。

以下为播放特效的案例,运用定位、缩放、透明度变化等方法

.pic{
            position: relative;
            overflow: hidden;
        }
.pic::after{
            position: absolute;
            top: 50%;
            left: 50%;
            margin-top: -30px;
            margin-left: -30px;
            content: '';
            width: 60px;
            height: 60px;
            background-image: url(../image/播放按钮.jpg);
            transform: scale(5);
            opacity: 0;
            transition: all .5s;
            
        }
.box li:hover .pic::after{
            transform: scale(1);
            opacity: 0.5;
        }

实现效果如下:将鼠标悬停到盒子上方时,播放按钮出现,并逐渐变小,透明度减弱变清晰,最终定格在图像版心。

(4)渐变:分为线性渐变与径向渐变

线性渐变:background-image:linear-gradient(

                      渐变方向             -------------to 方向名词;角度度数

                      颜色1 终点方向2

                      颜色2 终点方向2)

径向渐变:background-image:radial-gradient(

                      半径   at  圆心位置             -------------半径两条为椭圆

                      颜色1 终点方向2

                      颜色2 终点方向2)

(5)原点变换:通过transform-origin属性可以指定元素的变换原点,默认情况下为元素的中心点。可以通过指定具体的像素值、百分比或关键字(如top、bottom、left、right等)来改变变换原点的位置。

三、空间转换

(1)平移:transform:translate3d(X,Y,Z)

(2)视距 perspective:指定了观察者与z=0平面的距离,为元素增加透视效果(近小远大,近实远虚);通常将属性添加给父级,取值范围800-1200

(3)空间旋转:运用左手法则判断方向,rotateX()、rotateY()、rotateY()

      以下为3d导航的案例,鼠标点击到导航时,图像会进行反转。

        .nav ul{
            display: flex;
        }
        .nav li{
            position: relative;
            list-style: none;
            width: 100px;
            height: 40px;
            line-height: 40px;
            transform-style: preserve-3d;
            transition: all 0.5s;
        }
        .nav li a{
            position: absolute;
            left: 0;
            top: o;
            display: block;
            width: 100%;
            height: 100%;
            text-decoration: none;
            color: #fff;
            text-align: center;
        }
        .nav li a:first-child{
            background-color: green;
            transform: translateZ(20px);
        }
        .nav li a:last-child{
            background-color: orange;
            transform: rotateX(90deg) translateZ(20px) ;
        } 

        .nav li:hover{
            transform: rotateX(-90deg);
        }

(4)立体呈现:transform-style:preserve-3d

(5)缩放:scale3d(X,Y,Z),也可分轴缩放scaleX()、scaleY()、scaleY()

四、动画:实现多个状态间的变化过程,且动画过程可控(重复播放、最终画面、是否暂停)

(1)定义动画

@keyframes 动画名称{from{} to{}}

@keyframes 动画名称{0%{} 10%{}......100%}

(1)使用动画

animation:动画名称 动画时长  速度曲线  延迟时间  重复次数  动画方向  执行完毕状态

     以下为走马灯案例,将图片flex布局,使用动画效果,图片依次向左平移,不断重复,形成走马灯图像,当鼠标放置到图像时,才会停止移动。该案例运用了无缝动画原理,需要复制开头图片到结尾位置(图片累加宽度=区域宽度),否则会出现留白。

        .box{
            margin: 100px auto;
            width: 600px;
            height: 112px;
            border: 3px solid #000;
            overflow: hidden;
        }
        .box ul{
            display: flex;
            animation: move 6s infinite linear;
        }
        .box ul li{
            
            list-style: none;
        }
        img{
            display: block;
            width: 200px;
        }
        @keyframes move{
            0%{
                transform: translateX(0);
            }
            100%{
                transform: translateX(-1400px);
            }
        }
        .box:hover ul{
            animation-play-state: paused;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值