极简的js点击组图切换效果
程序员进行前端开发时,时常要用到点击切换组图的动画效果,网上确实有很多此类插件,但是都很麻烦,乌糟糟无数代码,有那个看的时间,自己都能把功能写完了。在这里我提供一段极简的js点击组图切换效果代码,包含一个html文件,一个css文件,一个js文件,一个jquery.js文件,以及一张图片。
index.html
<html>
<head>
<title>js点击组图左右滑动</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="jquery.min.js"></script><!-- 需要一个jquery库 -->
<script type="text/javascript" src="js.js"></script>
</head>
<body>
<div class="main"><!-- 注:复制代码后,只需随意找一张图片,据下方img标签中的名字,对应修改一下图片名称,即可看到动画效果 -->
<div class="main_in"><!-- 此标签必须overflow:hidden,才能实现滑动的效果 -->
<ul id="main_ul"><!-- 此标签必须relative,才允许进行滑动 -->
<li class="main_in_li" id="main_in_li_id"><img src="chanping1.jpg" width="280" height="500"></li><!-- 根据此id位置,判断ul标签left像素的值 -->
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
<li class="main_in_li" id=""><img src="chanping1.jpg" width="280" height="500"></li>
</ul>
</div>
<div class="main_change">
<div id="prev" onclick="slideprev()"><img src="data:images/prev.png"></div>
<div id="next" onclick="slidenext()"><img src="data:images/next.png"></div>
</div>
</div>
</body>
</html>
样式表:
css.css
*{margin: 0px; padding: 0px;}
.main{width: 1180px; margin:auto;}
.main_in{overflow: hidden;}
.main_in ul{display: block; width:5000px; height: 500px; overflow:hidden;position: relative;}
.main_in_li{display: block; margin-right: 20px; float: left;}
.main_change{width: 1312px; margin: 0 auto; position: relative; top: -250px; left:-66px;}
#next{width: 40px; height: 75px; cursor: pointer; position: absolute; right: 0px; background: #999;}
#prev{width: 40px; height: 75px; cursor: pointer;position: absolute; left: 0px; background: #999;}
js文件:
js.js
//根据class获取元素
function getByClass(sClass){
var aResult=[];
var aEle=document.getElementsByTagName('*');
var re=new RegExp("\\b" + sClass + "\\b","g");
for(var i=0;i<aEle.length;i++){
if(aEle[i].className.search(re) != -1){
aResult.push(aEle[i]);
}
}
return aResult;
};
//下一个
function slidenext(){
var i=0;
var n;
for(i;i<getByClass("main_in_li").length;i++){//根据class获取li标签个数
if(getByClass("main_in_li")[i].id=="main_in_li_id"){//根据id判断li标签在数组中的位置,得到i的值,从而得出ul标签left像素的值
if(i<getByClass("main_in_li").length-4){//4代表容器中显示的<li>标签的个数,你想在页面上显示几个<li>方块,除了在样式表中需要修改宽度以外,也需要修改此处"4"这个值。
n=i+1;
$("#main_ul").animate({left:"-"+300*n},800);
getByClass("main_in_li")[i].id="";
}
}
}
getByClass("main_in_li")[n].id="main_in_li_id";
}
//上一个,逻辑同上函数
function slideprev(){
var i=0;
var n;
for(i;i<getByClass("main_in_li").length;i++){
if(getByClass("main_in_li")[i].id=="main_in_li_id"){
if(i>0){
n=i-1;
$("#main_ul").animate({left:"-"+300*n},800);
getByClass("main_in_li")[i].id="";
}
}
}
getByClass("main_in_li")[n].id="main_in_li_id";
}
本段js代码基本采用原生的js写成,不过也跟jquery的写法差不多,逻辑是一样的。
jquery.js文件大家自己找吧,随便那个都可以。图片大家根据目录随便找一张放上去就行。
这一段代码,其实不单单只是用于图片切换,实质上切换的是<li>标签,你想放文字等待其他东西,只管往<li>标签里面丢就行了。
极简的js点击组图切换效果的更多相关文章
- 极简 Node.js 入门 - 1.3 调试
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - Node.js 是什么、性能有优势?
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.4 定时器
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.2 模块系统
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.4 NPM & package.json
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.1 Path
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.2 事件
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.3 process
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 3.1 File System API 风格
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
随机推荐
- zabbix4.2配置监控MySQL
1.在被监控主机安装好MySQL 相关步骤省略. 2.创建监控所需要的MySQL账户(MySQL服务器端) MariaDB [(none)]>grant usage on *.* to zabb ...
- session的到底是做什么的?
原文地址:https://blog.csdn.net/h19910518/article/details/79348051 前言: 今天就来彻底的学一些session是个啥东西,我罗列了几个需要知道的 ...
- csrf跨站点请求伪造
什么是csrf(跨站请求伪造) 伪造请求的定义有很多种,我将不是用户本意发出的请求统称为伪造请求(在用户不知情的情况下执行某些操作)xss的通过用户对浏览器的信任造成的,csrf是通过服务器对浏览器的 ...
- 132. 分割回文串 II
Q: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回符合要求的最少分割次数. 示例: 输入: “aab” 输出: 1 解释: 进行一次分割就可将 s 分割成 [“aa”,“b ...
- 关于Win32串口
因为近段时间接触Hid相对来说多一些,由此忽略了串口中获取cbInQue这个重要的东西,下面是错误代码 // Win32SerialPortLib.cpp : 定义 DLL 应用程序的导出函数. // ...
- 函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。
1 char *match( char *s, char ch1, char ch2 ){ ; ; ; while(s[len]){ len++; } *len+];//防止s字符串全满导致t溢出 * ...
- 分组拼接字符串,GROUP_CONCAT
背景 一年过的很快,文中后来的两位员工 馮大 和 馮二 也要面对无情的 KPI 考核了,他们工作干的很不错,performance 分别是 4 和 5 新需求来了,静悄悄的来了!!! 领导想要查看每个 ...
- sql server和eclipse连接问题
最近学习java,需要用的数据库sql sever,这就有一个连接问题需要设置 首先需要下载sql server,可查看我的博客sql sever下载教程: 连接教程:eclipse连接sql ser ...
- 图的最短路径算法Dijkstra算法模板
Dijkstra算法:伪代码 //G为图,一般设为全局变量,数组d[u]为原点到达个点的额最短路径, s为起点 Dijkstra(G, d[u], s){ 初始化: for (循环n次){ u = 是 ...
- nginx-vue项目在window下的部署
主机->操作系统->window(.net)/Linux->tomcat/nginx(软件反向代理) 1.vue项目打包到dist文件夹(之后把dist文件夹放到服务器就可以了) n ...