HTML CSS JS实现堆叠轮播效果的示例代码

这篇文章主要介绍了HTML CSS JS实现堆叠轮播效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

效果:

轮播图在向一个方向移动的同时,要对其每一个图片的大小,位置,透明度以及层级进行改变

原理:

轮播图向左移动时将第一个子元素剪切到末尾,轮播图向右移动时,将末尾子元素剪切到最前面,以此实现无缝轮播效果,再因为li剪切后,下一个li会补上(例如第一个子元素被剪切到最后时,第二个字元素会补上成为第一个子元素),所以li下标不变,以次来修改每一个位置的li的属性(大小,位置,透明度,层级)

HTML代码:

<body>
<div class=\”smallBox\”>
<div class=\”arrowLeft\”>←</div>
<div class=\”smallPicBox\”> //用一个div存放一个ul,并对ul里的每一个li进行初始样式设置
<ul>
<li id=\”li1\” style=\”position: absolute;top:calc(50% – 200px);left: 0px;z-index:1;background-color: aqua;transform: scale(0.5);transition: 0.3s;opacity: 0.5;background-image: url(./images/01.jpg);background-size: cover;\”></li>
<li id=\”li2\” style=\”position: absolute;top:calc(50% – 200px);left: 150px; z-index:2;background-color: red;transform: scale(0.7); transition: 0.3s;opacity: 0.7;background-image: url(./images/02.jpg);background-size: cover;\”></li>
<li id=\”li3\” style=\”position: absolute;top:calc(50% – 200px);left: 300px; z-index:3;background-color: blue;transform: scale(0.9); transition: 0.3s;opacity: 0.9;background-image: url(./images/03.jpg);background-size: cover;\”></li>
<li id=\”li4\” style=\”position: absolute;top:calc(50% – 200px);left: 450px; z-index:4;background-color: green;transform: scale(1); transition: 0.3s;opacity: 1;background-image: url(./images/04.jpg);background-size: cover;\”></li>
<li id=\”li5\” style=\”position: absolute;top:calc(50% – 200px);left: 600px; z-index:3;background-color: yellow;transform: scale(0.9); transition: 0.3s;opacity: 0.9;background-image: url(./images/05.jpg);background-size: cover;\”></li>
<li id=\”li6\” style=\”position: absolute;top:calc(50% – 200px);left: 750px; z-index:2;background-color: gray;transform: scale(0.7); transition: 0.3s;opacity: 0.7;background-image: url(./images/06.jpg);background-size: cover;\”></li>
<li id=\”li7\” style=\”position: absolute;top:calc(50% – 200px);left: 900px; z-index:1;background-color: deeppink;transform: scale(0.5); transition: 0.3s;opacity: 0.5;background-image: url(./images/07.jpg);background-size: cover;\”></li>
</ul>
</div>
<div class=\”arrowRight\”>→</div>
</div>
</div>
</body>

CSS代码:

<style>
*{
margin: 0;
padding: 0;
list-style: none;
}
.albumBox{
width: 1200px;
height: 400px;
margin: 0 auto;
border: 1px solid #000;
}

.smallBox{
height: 400px;
line-height: 400px;
position: relative;
}
.smallPicBox{
width: 1100px;
height: 400px;
float: left;
position: relative;
}
.smallPicBox ul{
width: 100%;
height: 400px;
}
.smallPicBox li{
width: 320px;
height: 400px;
float: left;
border: 1px solid #000;
box-sizing: border-box;
}
.smallBox .current::after{
content: \”\\25b2\”;
position: absolute;
top: -31px;
left: 70px;
color: red;

}
.arrowLeft{
width: 50px;
height: 400px;
position: absolute;
left: 0;
border: 1px solid #000;
box-sizing: border-box;
background-color: gray;
z-index: 10;
}
.arrowRight{
width: 50px;
height: 400px;
position: absolute;
right: 0;
border: 1px solid #000;
box-sizing: border-box;
background-color: gray;
z-index: 10;
}
</style>

JS代码:

<script>
function posi(li){ //修改li属性函数
var n1=0
for(var x=0;x<li.length;x ){ //修改位置
li[x].style.left=n1 \’px\’
n1=n1 150
}
for(var i=0;i<li.length/2;i ){ //修改层级
li[i].style.zIndex=i 1
li[li.length-1-i].style.zIndex=i 1
}
li[3].style.zIndex=\’4\’
var n2=0.3
for(var j=0;j<li.length/2;j ){ //缩放
n2=parseFloat(n2 0.2)
li[j].style.transform=\’scale(\’ n2 \’)\’
li[li.length-1-j].style.transform=\’scale(\’ n2 \’)\’
}
li[3].style.transform=\’scale(1)\’
var n3=0.3
for(var k=0;k<li.length/2;k ){ //修改透明度
n3=parseFloat(n3 0.2)
li[k].style.opacity=n3
li[li.length-1-k].style.opacity=n3
}
li[3].style.opacity=\’1\’
}
//鼠标移入移出
temerId=setInterval(function(){
arrowLeft.click()
}, 1000);
arrowLeft.onmouseover=function(){
clearInterval(temerId)
}
arrowLeft.onmouseout=function(){
temerId=setInterval(function(){
arrowLeft.click()
}, 1000);
}
arrowRight.onmouseover=function(){
clearInterval(temerId)
}
arrowRight.onmouseout=function(){
temerId=setInterval(function(){
arrowLeft.click()
}, 1000);
}
</script>

注:本例js是直接写在body里的,也可以单独写一个js文件,在引入到html界面

文章来源:脚本之家,原文链接:https://www.jb51.net/css/744188.html

关于西部数码

成都西维数码科技有限公司成立于2002年,注册资本1000万元,总部坐落于“天府之国”——成都,旗下品牌西部数码 (www.west.cn) ,深耕IDC行业十多年,已拥有北京、广东、郑州、成都、绵阳、香港等中国多个云计算IDC安全数据中心和美国等海外数据中心。我们先后自主研发的虚拟主机弹性云服务器、西数企业云邮箱等产品都广受用户欢迎。我们始终坚持用户体验至上的价值导向,深入挖掘用户需求,目前,有超过一百万用户通过我们注册并管理了超过一千万个域名,累计有超过50万网站在我们的自主研发的云主机平台上运行,服务的用户有:宝贝回家寻子网、四川大学、链家网(北京)科技有限公司、四川省互联网协会、沱牌集团、谭木匠、中铁二局、四川省中国青年旅行社、富森美家居网上商城等

我们始终坚持“以人为本,客户为尊,永续创新”的核心价值观,抢抓各种发展机遇,不断创新发展理念,不断转变发展方式,不断破解发展难题,随着企业的发展,我们经营的业务也不断发展为以云计算为基础的云主机业务、域名注册、域名交易等其他相关业务,公司从最初只有几个员工发展到如今拥有近二百人的精英团队,并在中国IDC、云计算行业中占有一席之地,位列国内三强。成为拥有多项自主知识产权的国家高新技术企业,ICANN和CNNIC双认证的国际顶级域名注册服务机构,首批获得国家工信部颁发的全国云服务牌照企业之一。

赞(0)
声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-62778877-8306;邮箱:fanjiao@west.cn。本站原创内容未经允许不得转载,或转载时需注明出处:西部数码知识库 » HTML CSS JS实现堆叠轮播效果的示例代码

登录

找回密码

注册