属性总结笔记如下:

<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 左右滑动的更多相关文章

  1. node.js express mvc轻量级框架实践

    本文记录的是笔者最近抽私下时间给朋友做的一个时时彩自动下注系统,比较简单,主要也是为了学习一下node.js. 其实逻辑没什么可以深谈的,主要是想说说这套代码结构.结构如下图: js的代码比较难以维护 ...

  2. swipe.js文档及用法

    最近的一个项目中使用到了swipe.js这个插件 感觉非常的好用的 官方网站 http://swipejs.com/ https://github.com/bradbirdsall/Swipe 简介 ...

  3. Swipe JS滑动插件

    Swipe JS 是一个轻量级的移动滑动组件,支持 1:1 的触摸移动,阻力以及防滑性能都不错,可以让移动web应用展现更多的内容,能解决我们对于移动Web对滑动的需求. 官网:http://www. ...

  4. 更轻更快的Vue.js 2.0与其他框架对比(转)

    更轻更快的Vue.js 2.0 崭露头角的JavaScript框架Vue.js 2.0版本已经发布,在狂热的JavaScript世界里带来了让人耳目一新的变化. Vue创建者尤雨溪称,Vue 2.0  ...

  5. Ember.js 1.0 RC6 发布,JavaScript 框架

    Ember.js 1.0 发布了第 6 个 RC 版本,下载地址:https://github.com/emberjs/ember.js/tree/v1.0.0-rc.6 该版本包含众多的改进记录,详 ...

  6. Web前端三大框架_angular.js 6.0(二)

    Web前端三大框架_angular.js 6.0(一) 需要视频教程,看头像昵称处 一.Angular 6.0  1.1样式 html中引入样式:内嵌式,外链式,行内式. ng6中组件引入样式的方式也 ...

  7. Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   Nest.js 6.0.0 正式版发布了.Nest 是构建高效.可扩展的 Node.js Web 应用程序的框架.它使用现代的 JavaSc ...

  8. 窥探Vue.js 2.0

    title: 窥探Vue.js2.0 date: 2016-09-27 10:22:34 tags: vue category: 技术总结 --- 窥探Vue.js2.0 令人兴奋的Vue.js 2. ...

  9. Atitit.js javascript的rpc框架选型

    Atitit.js javascript的rpc框架选型 1. Dwr1 2. 使用AJAXRPC1 2.2. 数据类型映射表1 3. json-rpc轻量级远程调用协议介绍及使用2 3.1. 2.3 ...

随机推荐

  1. Atitit 编程语言知识点tech tree v2 attilax大总结

    Atitit 编程语言知识点tech tree v2 attilax大总结 大分类中分类小分类知识点原理与规范具体实现(javac#里面的实现phpjsdsl(自己实现其他语言实现 类与对象实现对象实 ...

  2. Atitit 图像处理30大经典算法attilax总结

    Atitit 图像处理30大经典算法attilax总结 1. 识别模糊图片算法2 2. 相似度识别算法(ahash,phash,dhash)2 3. 分辨率太小图片2 4. 横条薯条广告2 5. 图像 ...

  3. atitit 点播系统 概览 v2 qb1.docx

    atitit 点播系统 概览 v2 qb1.docx 1.1. 多界面(可以挂载多个不同的界面主题)1 1.2. 独立的选片模块(跨设备,跨平台)2 1.3. 跨设备平台(android安卓盒子,pc ...

  4. (Task)任务异步(TAP)的使用

    任务有返回值例子: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  5. [ASP.net MVC] 将HTML转成PDF档案,使用iTextSharp套件的XMLWorkerHelper (附上解决显示中文问题)

    原文:[ASP.net MVC] 将HTML转成PDF档案,使用iTextSharp套件的XMLWorkerHelper (附上解决显示中文问题) [ASP.net MVC] 将HTML转成PDF档案 ...

  6. Java多线程系列--“基础篇”01之 基本概念

    多线程是Java中不可避免的一个重要主体.从本章开始,我们将展开对多线程的学习.接下来的内容,是对“JDK中新增JUC包”之前的Java多线程内容的讲解,涉及到的内容包括,Object类中的wait( ...

  7. C/C++定义全局变量/常量几种方法的区别

    在讨论全局变量之前我们先要明白几个基本的概念: 1. 编译单元(模块):    在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ER ...

  8. C#中使用Oracle存储过程返回结果集

    问题: 在MSSQLServer中定义的存储过程可以直接返回一个数据集,如: create procedure sp_getAllEmployees as SELECT * FROM [NORTHWN ...

  9. Android之Notification介绍

    Notification就是在桌面的状态通知栏.这主要涉及三个主要类: Notification:设置通知的各个属性. NotificationManager:负责发送通知和取消通知 Notifica ...

  10. Windows Azure Web Site (11) 使用源代码管理器管理Azure Web Site

    <Windows Azure Platform 系列文章目录> 熟悉Azure Web Site平台的读者都知道,我们可以通过FTP等方式,把本地的Web Application部署到微软 ...