一、概述
transform属性是CSS3中非常重要的一个属性之一,它可以对元素的变形进行操作,比如位移、旋转、缩放等等。其中,translate3d函数可以将元素从当前位置(不改变元素的默认位置)沿着指定的坐标轴移动增加和减少距离。
其基本语法为:
transform:translate3d(tx, ty, tz);其中tx,ty,tz分别表示元素在X、Y、Z轴上的位移距离,均为可选参数。如果参数是0,元素不会移动,如果是正数,元素会向正方向移动,如果是负数,元素会向负方向移动。
二、应用举例
下面通过几个实例来深入探讨translate3d的使用方法。
1. 图片悬浮效果
首先,我们来做一个鼠标悬浮时图片变大的效果。
<style type="text/css">
    .image{
        width:200px;height:200px;
        margin:10px;border:2px solid #333;
        transition:all 1s;
    }
    .image:hover{
        transform:translate3d(-10px,-10px,0) scale(1.1);
        border-color:#f00;
    }
</style>
<div class="image"><img src="example.jpg"/></div>
以上代码实现的效果是,鼠标悬浮到图片上时,图片会向左上方移动10像素,同时缩放1.1倍。
2. 无限滚动
我们也可以利用translate3d实现无限滚动的效果。例如,滚动的条目数量固定,但是我们要实现向左、向右的无限滚动效果。
<style type="text/css">
    .list{
        width:800px;height:200px;
        overflow:hidden;
        position:relative;
    }
    .item{
        width:200px;height:200px;
        position:absolute;top:0;left:0;
    }
    .a{background-color:#f00;}
    .b{background-color:#0f0;}
    .c{background-color:#00f;}
</style>
<div class="list">
    <div class="item a"></div>
    <div class="item b"></div>
    <div class="item c"></div>
    <div class="item a"></div>
    <div class="item b"></div>
    <div class="item c"></div>
</div>
<script type="text/javascript">
    var items = document.querySelectorAll(".item");
    var length = items.length;
    var index = 0;
    setInterval(function(){
        for(var i=0;i<length;i++){
            items[i].style.transform = "translate3d("+(10*(i-index)%length)+"px,0,0)";
        }
        index = (index+1)%length;
    },100);
</script>
以上代码实现的效果是,三个颜色块可以左右无限滚动。
3. 轮播图
我们也可以通过translate3d实现一些轮播图效果,例如淡入淡出的轮播图效果。
<style type="text/css">
    .carousel{
        width:800px;height:400px;
        position:relative;
        overflow:hidden;
    }
    .item{
        width:800px;height:400px;
        position:absolute;top:0;left:0;
        opacity:.3;
        transition:all 1s;
    }
    .active{opacity:1;}
</style>
<div class="carousel">
    <div class="item active"><img src="slide01.jpg"/></div>
    <div class="item"><img src="slide02.jpg"/></div>
    <div class="item"><img src="slide03.jpg"/></div>
    <div class="item"><img src="slide04.jpg"/></div>
</div>
<script type="text/javascript">
    var items = document.querySelectorAll(".item");
    var length = items.length;
    var index = 0;
    setInterval(function(){
        items[index].classList.remove("active");
        index = (index+1)%length;
        var next = items[index];
        next.classList.add("active");
        next.style.transform = "translate3d(0,0,0)";
        for(var i=0;i<length;i++){
            if(i!=index){
                items[i].style.transform = "translate3d(0,0,0)";
            }else{
                items[i].style.transform = "translate3d(0,0,1000px)";
            }
        }
    },3000);
</script>
以上代码实现的效果是,图片序列可以淡入淡出进行轮换。
三、总结
transform:translate3d是一个非常实用的CSS3属性,可以实现诸如图片滑动、轮播图、无限滚动等效果。通过我们刚才的介绍,相信大家已经学会了如何使用它来改变元素的位置。
原创文章,作者:XBKT,如若转载,请注明出处:https://www.506064.com/n/148153.html
微信扫一扫 
支付宝扫一扫