swipe.js 2.0 轻量级框架实现mobile web 左右滑动
属性总结笔记如下:
<style>
.swipe {
overflow: hidden; //隐藏溢出 清楚浮动
visibility: hidden; //规定元素不可见 (可以设置,当事件触发后,元素可见)
position: relative; //表示相对于浏览器的定位,应用中是相当于前面的容器来定位的
}
</style>
<script type="html/javascript">
$("#bannerControl li:first").addClass("active"); //向第一个li元素添加一个类active;之后可以用".active"来调用这个active类(jQuery中的addClass方法)
$("#bannerList li").css("width",$(window).width()+"px"); //设置li元素的一个或多个样式属性。以<name,value>对形式 ($(selector).css(name,value))$(window).width()浏览器可视宽度
$(".banner").on("swipeleft",function(){ //在元素banner上,绑定swipeleft事件,事件被触发时执行函数function{} //见后面的myInner = setInterval(function(){})方法,关闭自动轮播效果
clearInterval(myInner); //取到当前图片的index索引值
var num = $("#bannerControl li.active").index(); //jQuery中.index()中搜索匹配元素,并返回元素的索引值;返回class=“active“的<li>元素在其同辈元素集合(<li>标签集合)中的索引值。
//根据当前索引,判断向左滑动时候的next index
var count = num==(countPicNum-1)?0:num+1; //jQuery中” :eq()选择器 “(下标从0开始); 定义到next index的<li>标签,添加class=”active“, jQuery中的" .siblings() ",查找标签<li>集合中class=”active“的标签,并将找到的标签中的类class=”active“移除
$("#bannerControl li:eq("+count+")").addClass("active").siblings($("#bannerControl li:eq("+count+")")).removeClass("active");
//jQuery中”translate()“实现过渡效果translate(Xpx,Ypx);X方向是右,Y方向是下。”+“是连接符,”-($(window).width()*count)px“表示向左移动指定像素个单位,translateZ定义了3D转换(CSS3中属性)
$("#bannerList").css("transform","translate("+-($(window).width()*count)+"px, 0px) translateZ(0px)"); //函数定义了自动轮播效果,每隔3000毫秒轮播下一张图片
myInner = setInterval(function(){
var num = $("#bannerControl li.active").index();
var count = num==(countPicNum-1)?0:num+1;
$("#bannerControl li:eq("+count+")").addClass("active").siblings($("#bannerControl li:eq("+count+")")).removeClass("active");
$("#bannerList").css("transform","translate("+-($(window).width()*count)+"px, 0px) translateZ(0px)");
},3000);
});
success : function(data) { //我们试着添加alert(data["data"]);会返回[object, Object],[object, Object],[object, Object] //responseCode表示正常的登录状态
if(0000==data["responseCode"]){ //这个for循环, 添加所有的<li>标签
for(var i=0; i<data["data"].length; i++){ //jQuery中的.append()方法, 在标签<ul id="bannerList"></ul>中添加<li></li>标签。每个标签中定义了图片属性。
$("#bannerList").append('<li><a href="'+data["data"][i]["linkUrl"]+'" target="_self"><img src="'+data["data"][i]["picUrl"]+'" alt="'+data["data"][i]["picName"]+'"></a></li>');
$("#bannerControl").append('<li></li>');
} //定义了图片的总张数 变量countPicNum来表示
var countPicNum = data["data"].length;
$(".control").css({"width":(countPicNum*15)+"px"});
$("#bannerControl").css("margin-left",-countPicNum*15*0.5+"px");
$("#bannerControl li:first").addClass("active");
$("#bannerList li").css("width",$(window).width()+"px");
$("#bannerList").css("width",($(window).width()*countPicNum)+"px"); //定义了默认的自动轮播效果
$("#bannerControl li").on("click",function(){
clearInterval(myInner);
var num = $(this).index();
$(this).addClass("active").siblings(this).removeClass("active");
$("#bannerList").css("transform","translate("+-($(window).width()*num)+"px, 0px) translateZ(0px)");
myInner = setInterval(function(){
var num = $("#bannerControl li.active").index();
var count = num==(countPicNum-1)?0:num+1;
$("#bannerControl li:eq("+count+")").addClass("active").siblings($("#bannerControl li:eq("+count+")")).removeClass("active");
$("#bannerList").css("transform","translate("+-($(window).width()*count)+"px, 0px) translateZ(0px)");
},3000);
});
var myInner = setInterval(function(){
var num = $("#bannerControl li.active").index();
var count = num==(countPicNum-1)?0:num+1;
$("#bannerControl li:eq("+count+")").addClass("active").siblings($("#bannerControl li:eq("+count+")")).removeClass("active");
$("#bannerList").css("transform","translate("+-($(window).width()*count)+"px, 0px) translateZ(0px)");
//$("#bannerList").animate({"margin-left":-($(window).width()*count)+"px"});
},3000);
</script>
那么我们找到了完美的轻量级替代方案,swipe.js 2.0.具体如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mobile web轮播Demo展示</title>
</head> //引入css样式
<link rel="stylesheet" type="text/css" href="css/swipe.css">
<body>
<div class="addWrap">
<div class="swipe" id="mySwipe">
<div class="swipe-wrap"> //<a>标签的href属性用于指定超链接目标的URL,href属性的值可以是任何有效的相对或绝对的URL,包括片段标识符和JavaScript代码段。
//javascript:是表示在触发<a>默认动作时,执行一段JavaScript代码,而 javascript:; 表示什么都不执行,这样点击<a>时就没有任何反应。当页面内容很多,有滚动条时,页面不会乱跳,用户体验更好。
<div><a href="javascript:;"><img class="img-responsive" src="data:images/1.jpg"/></a></div>
<div><a href="javascript:;"><img class="img-responsive" src="data:images/2.jpg"/></a></div>
<div><a href="javascript:;"><img class="img-responsive" src="data:images/3.jpg"/></a></div>
</div>
</div> //
<ul id="position">
<li class="cur"></li>
<li class=""></li>
<li class=""></li>
</ul>
</div>
<script src="js/swipe.js"></script>
<script type="text/javascript"> //上文中<ul id="position">DOM中Element对象,表示HTML元素。
var bullets = document.getElementById('position').getElementsByTagName('li');
var banner = Swipe(document.getElementById('mySwipe'), {
//开始自动幻灯片(以毫秒为单位 幻灯片之间的时间)
auto: 2000, //continuous Boolean(default:true)创建一个无线的循环(当滑动到所有动画结束时是否循环滑动)
continuous: true, //disableScroll Boolean(default:false) 当滚动滚动条时 是否停止幻灯片滚动
disableScroll:false, //幻灯片运行中的回调函数
callback: function(pos) {
var i = bullets.length;
while (i--) {
bullets[i].className = ' ';
}
bullets[pos].className = 'cur';
}
});
</script>
</body>
</html>
关于上述代码中的两个两个引用:一个关于swipe.js(更改了其中的stop函数,保证触摸之后,继续执行自动轮播功能),另外一个是swipe.css(由于自己的mobile web页面与源码有冲突,故而分析swipe.css如下)
//标签选择器,让总的<body>标签的外边距和内边距为0
body{ margin:0; padding:0} //针对class=“addWrap”的标签,position:relative表示相对于前面的容器定位的。background:#fff表示背景是白色;
.addWrap{ position:relative; width:100%;background:#fff;margin:0; padding:0;} //对于class=“addWrap”子节点中class=“swipe”的标签,overflow: hidden;规定了当内容溢出元素框时会发生的事情(hidden表示溢出内容会被修剪,且多余内容是不可见的;)
//visibility: hidden;该属性规定了元素是否可见。即规定了class=“swipe”的标签是不可见的;同样的position:relative;表示相对溢出
.addWrap .swipe{overflow: hidden;visibility: hidden;position:relative;}
.addWrap .swipe-wrap{overflow:hidden;position:relative;} //其中 .swip-wrap > div 表示swipe-wrap元素的所有子div元素。如果不加 > 这个符号的话,会包括子子孙孙的所有子节点,子节点的子节点。
//float:left是一个关键属性,它表示向左浮动。比如多个div在一个页面上,默认情况是:一行一个div,但是只要在div的css中使用float:left,
//可以使一行有多个div,这样可以把网页划分成很多块,但是使用该属性会影响后面的元素,所有如果后面的div不想再被影响,可以使用clear:both;
//可以理解为清除float:left和float:right的影响,返回到默认状态。像<ul><li></li></ul>也可以这么使用,做导航菜单基本上有这个元素,使用float:left使其横向显示。
.addWrap .swipe-wrap > div {float: left;width: 100%;position:relative;}
//position:absolute;表示绝对定位,把它固定到你想要固定到的位置。当使用绝对定位的时候,后面跟的是定位的具体位置参数。如bottom:0.它表示把图像的底边缘设置在其包含元素底边缘之上5像素高的位置。
//表示位置属性的单位都是像素px。background:#000;表示颜色为黑色。
//opacity: 0.4; 用于设置标签元素的不透明级别。0.0表示完全透明;1.0表示完全不透明。
//同样的,CSS3中width:100%;表示的就是自适应宽度。width:100%是直接基于父级DIV的宽度(宽度要指定)。
//filter: alpha(opacity=50);alpha是用来设置透明度的,其中opacity表示透明度数。0表示完全透明,100表示完全不透明。
//CSS3中的属性text-align:right;表示元素中的文本的水平对齐方式。
#position{ position:absolute; bottom:0; right:0; padding-right:8px; margin:0; background:#000; opacity: 0.4; width:100%; filter: alpha(opacity=50);text-align:right;} //display:inline-block;将对象呈递为内联对象。-webkit-border-radius:5px;对于webkit内核的浏览器设置<li>元素四个角的5像素的圆角效果。用于设置一个小长方形的圆角效果。
//CSS3中border-radius:5px;添加圆角边框,设置了四个角的边框是5px像素。
#position li{width:10px;height:10px;margin:0 2px;display:inline-block;-webkit-border-radius:5px;border-radius:5px;background-color:#AFAFAF;}
#position li.cur{background-color:#FF0000;} //这个class=img-responsive属性中,表示将来img标签,也就是图片标签变成一个区块儿。让图片元素的显示为块级元素,这样就可以像块一样的去操作图片了。
//max-width: 100%; 最大宽度属性,用来定义宽度显示的最大值
.img-responsive { display: block; max-width: 100%; height: auto;}
接下来需要熟练使用Chrome的F12调试器来来按照参考demo的swipe.js对原本页面进行调试,达到一样的页面布局和样式效果。下面是自己自学的总结笔记如下:
修改bug的模式是什么?一个一个的修改,然后再到浏览器去一次又一次的刷新?但随着经验的增长,自己也感觉这样修改的模式是烦人的、效率低下的,那有没有一种方式是可以快速修改,所见所得,回答是有的!
Chrome
总结如下:
1,overflow:hidden与visibility:hidden属性比较:overflow:hidden是隐藏溢出,清楚浮动;visibility:hidden是属性不可见。
swipe.js 2.0 轻量级框架实现mobile web 左右滑动的更多相关文章
- node.js express mvc轻量级框架实践
本文记录的是笔者最近抽私下时间给朋友做的一个时时彩自动下注系统,比较简单,主要也是为了学习一下node.js. 其实逻辑没什么可以深谈的,主要是想说说这套代码结构.结构如下图: js的代码比较难以维护 ...
- swipe.js文档及用法
最近的一个项目中使用到了swipe.js这个插件 感觉非常的好用的 官方网站 http://swipejs.com/ https://github.com/bradbirdsall/Swipe 简介 ...
- Swipe JS滑动插件
Swipe JS 是一个轻量级的移动滑动组件,支持 1:1 的触摸移动,阻力以及防滑性能都不错,可以让移动web应用展现更多的内容,能解决我们对于移动Web对滑动的需求. 官网:http://www. ...
- 更轻更快的Vue.js 2.0与其他框架对比(转)
更轻更快的Vue.js 2.0 崭露头角的JavaScript框架Vue.js 2.0版本已经发布,在狂热的JavaScript世界里带来了让人耳目一新的变化. Vue创建者尤雨溪称,Vue 2.0 ...
- Ember.js 1.0 RC6 发布,JavaScript 框架
Ember.js 1.0 发布了第 6 个 RC 版本,下载地址:https://github.com/emberjs/ember.js/tree/v1.0.0-rc.6 该版本包含众多的改进记录,详 ...
- Web前端三大框架_angular.js 6.0(二)
Web前端三大框架_angular.js 6.0(一) 需要视频教程,看头像昵称处 一.Angular 6.0 1.1样式 html中引入样式:内嵌式,外链式,行内式. ng6中组件引入样式的方式也 ...
- Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
开发四年只会写业务代码,分布式高并发都不会还做程序员? Nest.js 6.0.0 正式版发布了.Nest 是构建高效.可扩展的 Node.js Web 应用程序的框架.它使用现代的 JavaSc ...
- 窥探Vue.js 2.0
title: 窥探Vue.js2.0 date: 2016-09-27 10:22:34 tags: vue category: 技术总结 --- 窥探Vue.js2.0 令人兴奋的Vue.js 2. ...
- Atitit.js javascript的rpc框架选型
Atitit.js javascript的rpc框架选型 1. Dwr1 2. 使用AJAXRPC1 2.2. 数据类型映射表1 3. json-rpc轻量级远程调用协议介绍及使用2 3.1. 2.3 ...
随机推荐
- 每天一个linux命令(36):diff 命令
diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件.diff程序的 ...
- 快速入门系列--WebAPI--04在老版本MVC4下的调整
WebAPI是建立在MVC和WCF的基础上的,原来微软老是喜欢封装的很多,这次终于愿意将http编程模型的相关细节暴露给我们了.在之前的介绍中,基本上都基于.NET 4.5之后版本,其System.N ...
- 关于移动开发的一些想法和认识--Android和iOS
微信公众账号很久没更新了,发一点自己最近的想法和内容. 之前和朋友做了一个项目,现在在跟一些风投,大公司里面的几家在谈合作和投资的事宜,从这个过程中也了解到了一些信息. 关于移动平台的应用开发与游戏开 ...
- 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍
在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...
- mysql命令详解
mysqld.exe 和 mysql.exe 有什么区别? mysqld.exe 是MySQL后台程序(即MySQL服务器).要想使用客户端程序,该程序必须运行,因为客户端通过连接服务器来访问数据库. ...
- 【GIT】Github上传本地代码详解
本教程结合Github服务端和客户端完成本地代码上传至Github,下面进行详细讲解: 1.创建Github账号,这一个步骤应该不用太多解释,直接上官网进行注册登录即可https://github.c ...
- Java之HashMap在多线程情况下导致死循环的问题
PS:不得不说Java编程思想这本书是真心强大.. 学习内容: 1.HashMap<K,V>在多线程的情况下出现的死循环现象 当初学Java的时候只是知道HashMap<K,V& ...
- 转 Windows+VS2013爆详细Caffe编译安装教程
1. 安装cuda Cuda是英伟达推出的GPU加速运算平台 我这里安装的是cuda7.5,已经安装过的忽略,还没有安装过的这里有安装教程.windows下面安装还是非常简单的. 点击打开链接 ...
- apache(nginx)+django+virutalenv(virtualenvwrapper)+gunicorn+supervisor配置高效web环境
前言 django的调试模式配置简单,用于测试十分方便,但众所周知,这个只适合于调试,生产上运行效率十分低下. 后来考虑用nginx+uwsgi的模式进行,但之前配置过apache+wsgi的方式,感 ...
- 实现UniqueAttribute唯一性约束
using System; using System.ComponentModel.DataAnnotations; using System.Data.Entity; namespace Zwj.T ...