跟轮播杠上了,这次很轻便

之前写过两个懒人轮播,为啥叫懒人轮播呢?因为从轮播图的创建到开始轮播然后切换都是自动完成的,需要做的只是给它指定个位置,向对象init函数中传入些参数(图片长度,宽度,图片数量)即可。有点全自动洗衣机的即视感敲打,不过这样做有一个  缺点,就是dom操作太多,影响了性能。这次不一样了,用animation动画简单实现了个自动轮播,超级轻便呢(前提条件是已知图片张数,但 图片路径未知,就是说可以通过更改图片  路径从而更新页面图片),只是缺点更多了:

①不能切换,因为动画一直在运行,若设置动画暂停就一切都停止了。

②轮播一张图片之间的间隔无法控制。

③修改图片宽高需要修改动画帧移动参数@keyframes。

不过用animation实现一些小型的轮播还是非常棒的,性能极佳。顺便贴下代码和思路:


js代码:

var demo = ( function( document, window) {
// 获取所需元素
var ele = {
// 轮播所在容器
oWrapper: document. querySelector( ".wrapper"),
// 轮播ul
oUl: document. querySelector( ".wrapper-ul"),
// 轮播li
aLi: document. querySelectorAll( ".wrapper-ul li"),
// 所有图片img标签
aImg: document. querySelectorAll( ".wrapper-ul li img"),
}
// 设置轮播wrapper,ul宽高并把图片资源放入li中
function setPlaying( wid, hei, num, imgs) {
ele. oWrapper. style. width = wid + "px";
ele. oWrapper. style. height = hei + "px";
ele. oUl. style. width = wid* num + "px";
ele. oUl. style. height = hei + "px";
ele. aLi. forEach( function( value, index, arr) {
value. style. width = wid + "px";
value. style. height = hei + "px";
})
// 设置图片属性
ele. aImg. forEach( function( value, index, arr) {
value. src = imgs[ index]. url;
value. alt = imgs[ index]. alt;
value. style. width = wid + "px";
value. style. height = hei + "px";
})
}
var run = {
// 默认图片宽度
imgW: 500,
// 默认图片高度
imgH: 500,
// 保存图片资源
imgs: [],
num: ele. aLi. length,
init : function( config) {
this. imgW = config. imgW|| this. imgW;
this. imgH = config. imgH|| this. imgH;
this. imgs = config. imgs;
//设置wrapper,ul,li宽高
setPlaying( this. imgW, this. imgH, this. num, this. imgs);
}
}
return run;
})( document, window);

html代码:

<!DOCTYPE html >
< html lang= "en" >
< head >
< meta charset= "UTF-8" >
< meta name= "viewport" content= "width=device-width, initial-scale=1.0" >
< link rel= "stylesheet" href= "lunbo.css" >
< title >css3实现轮播 </ title >
</ head >
< body >
< div id= "container" >
< ul class= "wrapper-ul" >
< li >< img src= "" alt= "" width= "" height= "" ></ li >
< li >< img src= "" alt= "" width= "" height= "" ></ li >
< li >< img src= "" alt= "" width= "" height= "" ></ li >
< li >< img src= "" alt= "" width= "" height= "" ></ li >
< li >< img src= "" alt= "" width= "" height= "" ></ li >
</ ul >
</ div >
</ div >
< script src= "lunbo.js" > < / script >
< script >
demo. init({
imgW: 400,
imgH: 200,
imgs:[
{
url: "imgs/one.jpg",
alt: "one",
width: "300px",
height: "180px"
},
{
url: "imgs/two.jpg",
alt: "two",
width: "300px",
height: "180px"
},
{
url: "imgs/three.jpg",
alt: "three",
width: "300px",
height: "180px"
},
{
url: "imgs/four.jpg",
alt: "four",
width: "300px",
height: "180px"
},
{
url: "imgs/five.jpg",
alt: "five",
width: "300px",
height: "180px"
}
]
})
< / script >
</ body >
</ html
css代码:
@charset "utf-8";
/* 样式初始化 */
html,body {
width: 100%;
height: 100%;
}
body ,ul {
margin: 0;
}
ul {
padding: 0;
}
ul {
list-style: none;
}
/* container-start */
body {
background-color: rgb( 1, 1, 21);
}
#container {
width: 100%;
height: 100%;
}
.wrapper {
position: relative;
overflow: hidden;
margin: 100px auto;
cursor: pointer;
}
.wrapper-ul {
position: absolute;
left: 0;
top: 0;
font-size: 0;
animation: play 12s infinite;
}
.wrapper-ul li {
display: inline-block;
}
/*轮播动画 */
@keyframes play {
0% {
transform: translate( 0px);
}
20% {
transform: translate( -400px);
}
40% {
transform: translate( -800px);
}
60% {
transform: translate( -1200px);
}
80% {
transform: translate( -1600px);
}
100% {
transform: translate( 0px);
}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现上下轮播的jQuery轮播图可以使用以下步骤: 1.创建HTML结构 首先,我们需要为轮播图创建HTML结构。可以使用ul和li元素来创建轮播图。每个li元素将包含轮播图的一个图像。 ``` <div class="slideshow"> <ul> <li><img src="image-1.jpg" alt=""></li> <li><img src="image-2.jpg" alt=""></li> <li><img src="image-3.jpg" alt=""></li> </ul> </div> ``` 2.设置CSS样式 接下来,我们需要设置轮播图的CSS样式。为了使轮播图具有上下滚动的效果,我们需要设置ul元素的高度为轮播图的高度,并将li元素的高度设置为轮播图高度的百分比。 ``` .slideshow { height: 500px; overflow: hidden; } .slideshow ul { list-style: none; margin: 0; padding: 0; height: 100%; } .slideshow li { height: 100%; } ``` 3.编写JavaScript代码 最后,我们需要编写JavaScript代码来实现轮播图的滚动效果。我们将使用jQuery库来实现这一点。 我们将使用setInterval函数来定期滚动轮播图。我们需要计算每个li元素的高度,并将其添加到ul元素的顶部。我们还将使用animate函数来添加动画效果。 ``` $(document).ready(function() { var interval = setInterval(function() { var height = $('.slideshow li:first').height(); $('.slideshow ul').animate({top: -height}, 1000, function() { $(this).append($('.slideshow li:first')).css({top: 0}); }); }, 2000); }); ``` 这将在2秒钟的间隔内滚动轮播图,并在每个li元素的顶部添加一个新的li元素。一旦轮播图滚动到最后一个li元素,它将重新开始从第一个li元素开始滚动。 完整的jQuery上下轮播图代码如下所示: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>jQuery Slideshow</title> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <style> .slideshow { height: 500px; overflow: hidden; } .slideshow ul { list-style: none; margin: 0; padding: 0; height: 100%; } .slideshow li { height: 100%; } </style> <script> $(document).ready(function() { var interval = setInterval(function() { var height = $('.slideshow li:first').height(); $('.slideshow ul').animate({top: -height}, 1000, function() { $(this).append($('.slideshow li:first')).css({top: 0}); }); }, 2000); }); </script> </head> <body> <div class="slideshow"> <ul> <li><img src="image-1.jpg" alt=""></li> <li><img src="image-2.jpg" alt=""></li> <li><img src="image-3.jpg" alt=""></li> </ul> </div> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值