左右轮播图

<style>
.wrap{
width:1200px;
margin:100px auto;
}
.slide {
height:500px;
position: relative;
}
.slide li{
position: absolute;
left:200px;
top:0;
}
.slide li img{
width:100%;
}
.arrow{
opacity: 0;
}
.prev,.next{
width:76px;
height:112px;
position: absolute;
top:50%;
margin-top:-56px;
background: url(imgs/prev.png) no-repeat;
z-index: 99;
}
.next{
right:0;
background-image: url(imgs/next.png);
}
</style>
<script src="../DOM/commer.js"></script>
<script>
//计算后的样式属性---- 一个元素的任意的一个样式属性值
function getStyle(element,attr) {
//判断这个浏览器是否支持这个方法
return window.getComputedStyle?window.getComputedStyle(element,null)[attr]:element.currentStyle[attr];
}
//匀速动画
function animate(element,json,fn) { //element--元素 attr--属性名字 target--目标位置
//清理定时器
clearInterval(element.timeId);
element.timeId=setInterval(function () {
var flag=true;//默认,假设,全部到达目标
for(var attr in json){
//判断这个属性中attr中是不是opacity
if (attr=="opacity"){
//获取元素的当前的透明度,当前的透明度放大100倍
var current=getStyle(element,attr)*100;
//目标的透明度放大100倍
var target=json[attr]*100;
var step=(target-current)/10;
step=step>0?Math.ceil(step):Math.floor(step);
current+=step;
element.style[attr]=current/100;
}else if(attr=="zIndex"){ //判断这个属性attr中是不是zIndex
//层级改变就是直接改变这个属性的值
element.style[attr]=json[attr];
}else {
//获取元素当前位置
var current=parseInt(getStyle(element,attr));//数字类型
//当前的属性对应的目标值
var target=json[attr];
//移动的步数
var step=(target-current)/10;
step=step>0?Math.ceil(step):Math.floor(step);
current+=step;
element.style[attr]=current+"px";
}
//判断是否到达目标
if(current!=target){
flag=false;
}
}
if(flag){
//清理计时器
clearInterval(element.timeId);
//回调函数,所有属性达到目标后才能使用
if(fn){
fn();
}
}
//测试代码
console.log("目标位置:"+target+",当前位置:"+current+",每次移动的步数:"+step)
},20);
}

var config = [
{
width: 400,
top: 20,
left: 50,
opacity: 0.2,
zIndex: 2
},//0
{
width: 600,
top: 70,
left: 0,
opacity: 0.8,
zIndex: 3
},//1
{
width: 800,
top: 100,
left: 200,
opacity: 1,
zIndex: 4
},//2
{
width: 600,
top: 70,
left: 600,
opacity: 0.8,
zIndex: 3
},//3
{
width: 400,
top: 20,
left: 750,
opacity: 0.2,
zIndex: 2
}//4

];

//页面加载事件
window.οnlοad=function () {
var flag=true;
var list=ver("slide").getElementsByTagName("li");

//图片散开
function assign() {
for(var i=0;i<list.length;i++){
//设置每个li,都要把宽、高、透明度、left、top到指定的目标位置
animate(list[i],config[i],function () {
flag=true;
});
}
}
assign();

//右边按钮
ver("arrRight").οnclick=function () {
if(flag){
flag=false;
config.push(config.shift());
assign();//重新分配
}
};
ver("arrLeft").οnclick=function () {
if(flag){
flag=false;
config.unshift(config.pop());
assign();
}
};

//鼠标进入
ver("wrap").οnmοuseοver=function () {
animate(ver("arrow"),{"opacity":1});
};
//鼠标离开
ver("wrap").οnmοuseοut=function () {
animate(ver("arrow"),{"opacity":0});
};
}
</script>
</head>
<body>
<div class="wrap" id="wrap">
<div class="slide" id="slide">
<ul>
<li><a href="#"><img src="imgs/slidepic1.jpg" alt=""/></a></li>
<li><a href="#"><img src="imgs/slidepic2.jpg" alt=""/></a></li>
<li><a href="#"><img src="imgs/slidepic3.jpg" alt=""/></a></li>
<li><a href="#"><img src="imgs/slidepic4.jpg" alt=""/></a></li>
<li><a href="#"><img src="imgs/slidepic5.jpg" alt=""/></a></li>
</ul>
<div class="arrow" id="arrow">
<a href="javascript:;" class="prev" id="arrLeft"></a>
<a href="javascript:;" class="next" id="arrRight"></a>
</div>
</div>
</div>

转载于:https://www.cnblogs.com/lujieting/p/10058491.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的HTML banner左右轮播图的实现方法: ```html <!DOCTYPE html> <html> <head> <title>Banner</title> <style> #banner { height: 540px; background-image: url(img/banner01.jpg); background-repeat: no-repeat; background-position: center; position: relative; } #leftBtn { position: absolute; left: 50px; height: 50px; top: calc(50% - 25px); } #rightBtn { position: absolute; right: 50px; height: 50px; top: calc(50% - 25px); } </style> </head> <body> <div id="banner"> <div> <input type="button" id="leftBtn" value="上一张"> <input type="button" id="rightBtn" value="下一张"> </div> </div> <script> var banner = document.getElementById("banner"); var leftBtn = document.getElementById("leftBtn"); var rightBtn = document.getElementById("rightBtn"); var images = ["img/banner01.jpg", "img/banner02.jpg", "img/banner03.jpg"]; var currentImage = 0; function changeImage(direction) { if (direction === "left") { currentImage--; if (currentImage < 0) { currentImage = images.length - 1; } } else { currentImage++; if (currentImage >= images.length) { currentImage = 0; } } banner.style.backgroundImage = "url(" + images[currentImage] + ")"; } leftBtn.addEventListener("click", function() { changeImage("left"); }); rightBtn.addEventListener("click", function() { changeImage("right"); }); </script> </body> </html> ``` 该实现方法使用了HTML、CSS和JavaScript。其中,HTML和CSS用于创建轮播图的基本结构和样式,JavaScript用于实现轮播图的功能。具体实现方法如下: 1. 在HTML中创建一个id为“banner”的div,用于显示轮播图。 2. 在该div中创建一个包含左右按钮的div。 3. 使用CSS设置轮播图的高度、背景图片、背景图片不重复、背景图片居中和按钮的样式。 4. 在JavaScript中定义一个images数组,用于存储轮播图中的所有图片路径。 5. 定义一个currentImage变量,用于存储当前显示的图片在images数组中的下标。 6. 定义一个changeImage函数,用于根据传入的参数direction改变currentImage的值,并将当前显示的图片路径设置为轮播图的背景图片。 7. 给左右按钮添加点击事件监听器,当点击左按钮时,调用changeImage函数并传入参数“left”,当点击右按钮时,调用changeImage函数并传入参数“right”。 8. 最后,将JavaScript代码放在HTML文件的body标签结束前。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值