一、概述
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