<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin: 0;padding: 0;}
a{text-decoration:none;}
#box{
width: 800px;
height: 400px;
margin: 40px auto;
position: relative;
overflow:hidden;
}
ul,li{
list-style:none;
}
#box ul li{
width: 800px;
height: 800px;
position: absolute;
opacity: 0;
filter:alpha(opacity(0));
}
#box ul li:first-child{
opacity: 1;
filter:alpha(opacity(100));
}
#box ul li img{
width: 800px;
height: 400px;
}
#direction{
position:relative;
}
#direction>a{
width: 50px;
height: 60px;
background: rgba(0,0,0,0.5);
color:#fff;
position:absolute;
top:170px;
font-size:30px;
text-align:center;
line-height:60px;
}
#direction>a:nth-child(2){
right:0;
}
#btn{
position:absolute;
left:42%;
bottom:0;
}
#btn>a{
float:left;
width: 20px;
height:20px;
border-radius:50%;
background:#f40;
margin-right:10px;
}
#btn .active{
background:#fff;
}
</style>
</head>
<body>
<div id="box">
<ul>
<li><img src="https://pic.kuaizhan.com/g3/22/0b/4bea-7962-4826-9500-206a3854fc4133/imageView/v1/thumbnail/640x0" alt=""></li>
<li><img src="https://pic.kuaizhan.com/g3/7a/14/c501-c458-4f9d-84d9-69c6e4f294d204/imageView/v1/thumbnail/640x0" alt=""></li>
<li><img src="https://pic.kuaizhan.com/g3/c7/06/7422-de98-43dd-b4fc-4dac60c6adb403/imageView/v1/thumbnail/640x0" alt=""></li>
<li><img src="https://pic.kuaizhan.com/g3/04/cd/743b-e472-4451-a787-261861174a5634/imageView/v1/thumbnail/640x0" alt=""></li>
</ul>
<div id="direction">
<a href="##"><</a>
<a href="##">></a>
</div>
<div id="btn">
<a href="##" class="active"></a>
<a href="##"></a>
<a href="##"></a>
<a href="##"></a>
</div>
</div>
<script>
//获取非行间样式
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj,false)[attr];
}
}
//完美运动框架
function move(obj,json,fn){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var bStop = true;
for(var attr in json){
//先判断是否是透明度
var iCur;
if(attr == "opacity"){
iCur = parseInt(parseFloat(getStyle(obj,attr))*100);
}else{
iCur = parseInt(getStyle(obj,attr));
}
//算速度
var speed = (json[attr] - iCur)/8;
speed = speed>0?Math.ceil(speed):Math.floor(speed);
if(json[attr] != iCur){
bStop = false;
}
if(attr == "opacity"){
obj.style.opacity = (iCur+speed)/100;
obj.style.filter = "alpha(opacity:"+(iCur+speed)+")"
}else{
obj.style[attr] = iCur+speed+'px';
}
}
if(bStop){
clearInterval(obj.timer);
fn&&fn();
}
},30)
}
</script>
<script>
var box=document.getElementById("box");
var aLi = document.querySelectorAll("#box>ul>li");
var aDir = document.querySelectorAll("#direction>a");
var aBtn = document.querySelectorAll("#btn>a");
var iHiddle = 0,iShow = 0;//iHiddle表示隐藏的下标,iShow表示显示的下标
var timer;
//动画的原理
function toImg(){
move(aLi[iHiddle],{opacity:0});//隐藏
move(aLi[iShow],{opacity:100});//显示
iHiddle=iShow;
//使进度条自动跟随图片运动
for(var i=0;i<aBtn.length;i++){
aBtn[i].className="";
}
aBtn[iShow].className="active";
}
//让图自动播放
function autoPlay(){
timer=setInterval(function(){
if(iShow==aLi.length-1){
iShow=0;
}else{
iShow++;
}
toImg();
},2000)
}
autoPlay();
//当鼠标移入时停止自动播放
box.onmouseover=function(){
clearInterval(timer);
}
//当鼠标移出时继续自动播放
box.onmouseout=function(){
autoPlay();
}
//点击左按钮向左播放
aDir[0].onclick=function(){
if(iShow==0){
iShow=aLi.length-1;
}else{
iShow--;
}
toImg();
}
//点击有按钮向右播放
aDir[1].onclick=function(){
if(iShow==aLi.length-1){
iShow=0;
}else{
iShow++;
}
toImg();
}
//让鼠标移入时进度条自动回到那个点上
for(var j=0;j<aBtn.length;j++){
aBtn[j].index=j;//先存入一下标
aBtn[j].onmouseenter=function(){
//让其他元素隐藏
for(var k=0;k<aBtn.length;k++){
aBtn[k].className="";
move(aLi[k],{opacity:0});
}
//让你移入的那个元素显示
this.className="active";
move(aLi[this.index],{opacity:100});
iShow=this.index;//使移入的那个元素下标跟播放时的下标统一一下
iHiddle=iShow;
}
}
</script>
</body>
</html>
利用原生js加透明度做的淡入淡出效果轮播图练习
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...