jQuery实现图片轮播特性。使用animate函数

本文主要是介绍jQuery实现图片轮播特性。使用animate函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片轮播特效是一个非常常见的特性,可以使用jQuery来实现,下面使用animate()函数来实现向左轮播(向其他方向的轮播与其相似),实现的方法有两种,先看一下实现原理:

1、假设公五张图片,图片宽度均为200px,图片并排放置在一个总宽度为1000px的容器内。

2、另外设一个视口容器的宽度为600px,并设置overflow属性为hidden,将上述图片容器放入此容器内,则只会同时显示三张图,另外两张在容器外部且不可见,(同理,如果容器宽度为200px,则只会同时显示一张图,当设置容器宽度为1000px或更大时,可同时显示所有图片,但是这样会使轮播效果不平滑。)

3、实现轮播效果的核心思想:两种:

(1)使用animate()函数平滑改变图片容器的左外边距为-200px(设置左外边距为-200px,会使图片容器的左外边界往右收缩200px,视觉上图片容器向左移动了200px,进而使第一个图片向左移200px,进而第二个图片正好移动到了第一个图片的位置。。。),然后在回调函数内设置回图片容器的左外边距为0,并将第一个图片(t它已经在视口容器左边了)移除后加到最后一个图片的后面,然后重复上面的动作,这就实现了轮播。

(2)设置视口容器的position值设为relative,图片容器的position值设为absolute,使用animate()函数将图片容器的left值平滑设置为-200px,将图片容器向左移动一个图片的宽度(进而第一个图片到了第一个图片的位置。。。),在回调函数内将图片容器的left属性设置回0,并将第一个图片移除后添加到最后一个图片的后面,重复上述动作,实现轮播效果。

下面是实现代码:

第一种方法:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>demo</title><script type="text/javascript" src="jquery-1.12.1.min.js"></script><script>$(document).ready(function(){function rollOne(){$(".picBox").animate({marginLeft:"-200px"},2000,"linear",function(){$(this).css({marginLeft:"0px"});$(this).children("li").first().remove().clone(true).appendTo(".picBox");});}var startRollOne=setInterval(rollOne,2000);$(".box").hover(function () {clearInterval(startRollOne);}, function () {startRollOne=setInterval(rollOne,2000);});});</script><style>.box{width: 600px;height: 260px;margin: 160px auto;overflow: hidden;position: relative;}.box p{text-align: center;}.picBox{margin: 0px;padding: 0px;list-style: none;width: 1500px;position: absolute;}.picBox:hover{cursor: pointer;}.picBox li{float: left;}.picBox img{width: 200px;height: 240px;}</style>
</head>
<body>
<div class="box"><p> 图片轮播</p><ul class="picBox"><li><img src="a.jpg" /></li><li><img src="b.jpg" /></li><li><img src="c.jpg" /></li><li><img src="d.jpg" /></li><li><img src="e.jpg" /></li></ul>
</div>
</body>
</html>

第二种方法:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>demo</title><script type="text/javascript" src="jquery-1.12.1.min.js"></script><script>$(document).ready(function(){function rollOne(){$(".picBox").animate({left:"-200px"},2000,"linear",function(){$(this).css({left:"0px"});$(this).children("li").first().remove().clone(true).appendTo(".picBox");});}var startRollOne=setInterval(rollOne,2000);$(".box").hover(function () {clearInterval(startRollOne);}, function () {startRollOne=setInterval(rollOne,2000);});});</script><style>.box{width: 600px;height: 260px;margin: 160px auto;overflow: hidden;position: relative;}.box p{text-align: center;}.picBox{margin: 0px;padding: 0px;list-style: none;width: 1500px;position: absolute;}.picBox:hover{cursor: pointer;}.picBox li{float: left;}.picBox img{width: 200px;height: 240px;}</style>
</head>
<body>
<div class="box"><p> 图片轮播</p><ul class="picBox"><li><img src="a.jpg" /></li><li><img src="b.jpg" /></li><li><img src="c.jpg" /></li><li><img src="d.jpg" /></li><li><img src="e.jpg" /></li></ul>
</div>
</body>
</html>




这篇关于jQuery实现图片轮播特性。使用animate函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997569

相关文章

k8s部署短视频网站(后台+web前端+web管理)

一、系统环境 系统centos7k8sv1.24containerdv1.7.16etcdv3.5.0 二、镜像生成工具准备 nerdctlv1.7.6buildkitv0.13.2 1 nerdctl安装 下载: wget -c https://github.com/containerd/nerdctl/releases/download/v1.7.6/nerdctl-full-1

poj 3358 Period of an Infinite Binary Expansion(数论:欧拉函数+快速幂取模)

不太好理解题意的一道题 给出一个除式 要求找到对应二进制的循环起点和最小循环节长度 这里还考察了分数化小数的知识点。。。 这点不会难怪看题解都觉得很吃力 1/10 分数化小数的规律如下: 0.1 0.2 0.4 0.8 1.6 1.2 0.4(每次取左侧一位×2,如果大于10,小数位取1,再把这一位%10) 0    0    0   0    1    1    0 以1/1

poj 3090 Visible Lattice Points(数论:筛法打表欧拉函数)

和之前做过的一个题很像 对于size==4 从1到4考虑y坐标 不妨设x>=y y==1: (1,1) y==2: (1,2) y==3: (1, 3) (2, 3) y==4: (1, 4) (3, 4) 共6个满足条件,把x y交换下且去除(1, 1)的重复情况得到2×6-1=11 再加上(0,1) (1,0)两种情况得到13 所以结果应该为: 代码如下: #

poj 2773 Happy 2006(数论:欧拉函数)

给出n, k,输出与n互质的第k个正整数 这个题归根结底用到了一个性质: gcd(a, b) == gcd(a, b+a*t) (t=0,1,2...) 所以一种方法就是找到小于n且与n互质的所有数prime[]以及其个数cnt 如果k<tot,则直接输出 否则根据上式可知存在循环节,相邻两个循环节之间相差:k/cnt*m 所以结果应该为:k/cnt*m+prime[k%(cnt-1

poj 2478 Farey Sequence(数论:欧拉函数+打表)

注意括号内分数分母相同时的区别 f(5)中以5为分母的数其分子均与5互质 进而推得:f(n)中以i为分母的数其各个分子均与i互质 因此: 用筛选法打表phi,再预处理下即可 看到别人说也可以用欧拉函数的积性性质来做,有兴趣的可以看一下 我的代码如下: #include <stdio.h>#define MAXN 1001000#define LL long longLL ph

poj 1284 Primitive Roots(数论:欧拉函数)

我开始还以为是求最小原根呢 直接打表+快速幂取模 后来才发现是求原根的个数 结果为phi(n-1) 证明就不再赘述了,网上很多 而且感觉这种题太偏了,没有必要浪费太多时间 代码如下: #include <cmath>#include <cstdio>#include <iostream>using namespace std;int euler_phi(int n) {in

文件监控工具——inotify-tools使用

在做灰盒测试和恶意程序分析的时候,经常需要寻找创建、删除、修改的文件,而在无法确定操作的文件或生成的文件路径时,就需要用到可以监控文件和目录的工具了。比如测试任意文件上传时,文件名被改为随机字符串且HTTP响应中不返回文件路径;通过写文件的payload批量测试无回显命令注入漏洞;测试缓冲区溢出漏洞或拒绝服务漏洞时,可能会生成一些dump文件;这些测试场景下使用文件监控工具总比一直手动执行ls命令

CentOS系统自带Python2无法使用pip命令

Linux运维工具-ywtool 目录 一. 系统环境二.解决三.验证四.备注(1)输入"yum install -y python-pip",提示没有可用 python-pip包(2)安装完pip后进行升级 一. 系统环境 centos7系统自带的python2.7无法使用pip命令 二.解决 yum install python-pip -y 三.

【图像隐藏】基于奇异值分解SVD实现数字水印嵌入提取,相关系数NC附Matlab代码

以下是使用奇异值分解(SVD)实现数字水印嵌入和提取的相关系数(NC)的Matlab代码示例: matlab % 数字水印嵌入 function watermarked_image = embed_watermark(original_image, watermark, strength) % 将原始图像进行SVD分解 [U, S, V] = svd(double(original_image

cocos2dx-JniHelper 使用,在c++层面调用java层接口

JNI  (java native interface) 字段描述符 “([Ljava/lang/String;)V” 它是一种对函数返回值和参数的编码。这种编码叫做JNI字段描述符(JavaNative Interface FieldDescriptors)。一个数组int[],就需要表示为这样"[I"。如果多个数组double[][][]就需要表示为这样 "[[[D"。也就是说每一个方括