自己写的carousel
可以
function appendRight() {
//alert("right");
lastItem = itemsRight[urls.length - ];
firstItem = itemsRight[];
now = parseInt(($(lastItem).attr("id")).split("_")[]);
$(".slidePics").prepend(itemsRight[urls.length - ]);
moveRight();
itemsRight.unshift(firstItem); //新元素添加到数组开始
itemsRight.pop(); //移除最后一个元素
}
太奇怪了吧!!!!!!!!!!!!!!!!!
不可以
function appendRight() {
//alert("right");
lastItem = itemsRight[urls.length - ];
firstItem = itemsRight[];
now = parseInt(($(lastItem).attr("id")).split("_")[]);
$(".slidePics").prepend(lastItem);
moveRight();
itemsRight.unshift(firstItem); //新元素添加到数组开始
itemsRight.pop(); //移除最后一个元素
}
完整的分步加载:
//起点值start
var start; $('.slidePics').on("touchstart", getStart, this);
$('.slidePics').on("touchmove", getDirection, this);
$('.slidePics').on("touchend", updateUrl, this); var urls = ["img/t4_01.jpg", "img/t4_02.jpg", "img/t4_03.jpg", "img/t4_04.jpg", "img/t4_05.jpg"];
var itemsLeft = [];
var itemsRight = [];
var left = false;
var firstItem = null;
var lastItem = null;
var now;
var switchLeft = false;
var switchRight = false;
var touched = false; if (urls.length > ) {
for (var i = ; i <= urls.length; i++) {
var itemleft = '<div class="event_one animate" style="left:800px;" id="event_' + i + '">' +
'<div class="imgInfo">' + i + '/' + urls.length + '</div>' +
'<div class="mediaSelf">' +
'<img src="' + urls[i - ] + '">' +
'</div>' +
'</div>' +
'</div>';
var itemright = '<div class="event_one animate" style="left:-800px;" id="event_' + i + '">' +
'<div class="imgInfo">' + i + '/' + urls.length + '</div>' +
'<div class="mediaSelf">' +
'<img src="' + urls[i - ] + '">' +
'</div>' +
'</div>' +
'</div>';
itemsLeft.push(itemleft);
itemsRight.push(itemright);
} } function getStart(e) {
start = parseInt(e.targetTouches[].pageX);
} function getDirection(e) {
var move = parseInt(e.targetTouches[].pageX);
if (start < move) {
left = false;
} else if (start > move) {
left = true;
}
} function updateUrl() {
if (!touched) {
touched = true;
//这个不能一起隐藏,会使初始化的3个div也被取消动画
//$(".event_one").removeClass("animate");
if ($('.event_one').length < urls.length) {
if (left) {
appendLeft();
} else {
appendRight();
}
} else {
//alert("finished");
if (left) {
moveLeft();
} else {
moveRight();
}
}
}
} function appendLeft() {
//alert("left");
lastItem = itemsLeft[urls.length - ];
firstItem = itemsLeft[]; if (!switchRight) {
now = parseInt(($(firstItem).attr("id")).split("_")[]);
$(".slidePics").append(itemsLeft[]);
switchLeft = true;
} else {
$(".slidePics").append(itemsRight[]);
switchLeft = false;
} //动作在append计数之前
moveLeft(); itemsLeft.shift(); //移除最前一个元素
itemsLeft.push(lastItem); //新元素添加到数组结尾 } function appendRight() { lastItem = itemsRight[urls.length - ];
firstItem = itemsRight[];
if (!switchLeft) {
now = parseInt(($(lastItem).attr("id")).split("_")[]);
$(".slidePics").prepend(itemsRight[urls.length - ]); switchRight = true;
} else { $(".slidePics").prepend(itemsLeft[urls.length - ]);
switchRight = false;
} //动作在append计数之前
moveRight(); itemsRight.unshift(firstItem); //新元素添加到数组开始
itemsRight.pop(); //移除最后一个元素 } function moveLeft() {
var next = now > urls.length - ? : now + ;
var pre = now <= ? urls.length : now - ; console.log("pre", pre, "now", now, "next", next, switchRight, "touched", touched); //准备下一张
$("#event_" + next).addClass("animate");
$("#event_" + next).css("left", "800px"); //移入
//$("#event_"+now).css("left","800px");
$("#event_" + now).addClass("animate");
$("#event_" + now).css("left", "0px"); //移出正常
//$("#event_" + pre).addClass("animate");
$("#event_" + pre).css("left", "-800px");
//经测试,以下两句即可避免使用全部remove
$("#event_" + (pre - )).removeClass("animate");
$("#event_" + (next + )).removeClass("animate"); touched = false;
now++;
if (now > urls.length) {
now = ;
}
} function moveRight() {
var pre = now > urls.length - ? : now + ;
var next = now <= ? urls.length : now - ;
console.log("pre", pre, "now", now, "next", next, switchLeft, "touched", touched); //准备下一张
$("#event_" + next).addClass("animate");
$("#event_" + next).css("left", "-800px"); //移入
//$("#event_"+now).css("left","-800px");
$("#event_" + now).addClass("animate");
$("#event_" + now).css("left", "0px"); //移出正常
//$("#event_" + pre).addClass("animate");
$("#event_" + pre).css("left", "800px");
//经测试,以下两句即可避免使用全部remove
$("#event_" + (pre + )).removeClass("animate");
$("#event_" + (next - )).removeClass("animate"); touched = false;
now--;
if (now < ) {
now = urls.length;
}
}
本地分步carousel
双向切换的时候有一步延迟,连续点击还没有很有效的屏蔽。
就是由于上面那个奇怪的不同,搞了很多天。
苦逼的没有animate()方法,硬生生的用css3:
html一开始就加载3张图片:
<div class="slidePics">
<div class="event_one event_5 animate" style="left:-800px;" data-id="event_5">
<div class="imgInfo">/</div>
<div class="mediaSelf">
<div style="background-image:url(img/t4_05.jpg)"></div>
</div>
</div>
<div class="event_one event_1 animate" data-id="event_1">
<div class="imgInfo">/</div>
<div class="mediaSelf">
<div style="background-image:url(img/t4_01.jpg)"></div>
</div>
</div>
<div class="event_one event_2 animate" style="left:800px;" data-id="event_2">
<div class="imgInfo">/</div>
<div class="mediaSelf">
<div style="background-image:url(img/t4_02.jpg)"></div>
</div>
</div>
</div>
<div class="slideBack">
<div></div>
</div>
初始模板
下面那个back独立在外面absolute,index较高,用来接受返回按钮的事件。
.event_one{
position: absolute;
left: ;
width: 800px;
height: 480px;
display: none;
}
.animate{
display: block;
-webkit-transition: .7s ease-out all;
}
图片的居中问题用img tag或者背景做分别是:
.mediaSelf div{
width: 800px;
height: 394px;
display: block;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
}
.mediaSelf img{
position: relative;
height: %;
width: auto;
margin: auto;
}
如果用img tag,需要js把图片等比例缩放以后,除以二居中。
css的比较简单,background-size: contain;但也做不到垂直居中,只是把图片完整显示出来。
自己写的carousel的更多相关文章
- Bootsrap 的 Carousel
一.简介 Carousel 就是指轮播图,这里 有完整的代码例子.它可以很简单的就构造出来,结构如下: div.carousel.slide[data-ride="carousel" ...
- jQuery轮播图(二)利用构造函数和原型创建对象以实现继承
本文是在我开始学习JavaScript继承时,对原型继承的一些理解和运用.文中所述的继承方式均是使用js特有的原型链方式,实际上有了ES6的类之后,实现继承的就变得十分简单了,所以这种写法现在也不在推 ...
- Sultana后记:纯css也能写col,select,datepicker,carousel...
未完待续 背景 如今css3越来越发达,focus-within等属性也已经开始在Chrome得到支持.如果有出色的css功底,一点点ps技能,你也能用css3配合原生html标签写出优秀的框架.通过 ...
- Bootstrap之Carousel不能自动播放的解决办法(转)
Bootstrap是一个非常好的css/javaScript框架,尤其对于移动端的自适应和适配能力都比较强. 用Bootstrap自带的Carousel写了一个图片轮播的广告部分,用js调用后却出现了 ...
- 利用bootstrap写图片轮播
利用bootstrap写图片轮播 缺点是轮播没有固定样式图片样式会改变外框的大小,所以要再设置 以及左右按钮的style也要从新设置 <div class="carousel slid ...
- 玉渊潭赏樱花有感:从无到有写一个jQuery开源插件
“玉渊潭公园樱花节”是每年樱花绽放时,都会在玉渊潭公园樱举办樱花节,游客前往玉渊潭公园,可以欣赏到20个品种2000株樱花.2016玉渊潭樱花节时间:3月中旬-4月中旬观赏最佳,2016年3月23日开 ...
- 自己写的轻量级PHP框架trig与laravel5.1,yii2性能对比
看了下当前最热门的php开发框架,想对比一下自己写的框架与这些框架的性能对比.先看下当前流行框架的投票情况. 看结果对比,每个测试脚本做了一个数据库的联表查询并进行print_r输出,查询的sql语句 ...
- Owl Carousel幻灯片插件的使用
Owl Carousel 是一个强大.实用但小巧的 jQuery 幻灯片插件,它具有一下特点: 兼容所有浏览器 支持响应式 支持 CSS3 过度 支持触摸事件 支持 JSON 及自定义 JSON 格式 ...
- 利用sklearn对MNIST手写数据集开始一个简单的二分类判别器项目(在这个过程中学习关于模型性能的评价指标,如accuracy,precision,recall,混淆矩阵)
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
随机推荐
- MYSQL 专家 ----zhaiwx_yinfeng
http://mysqllover.com/?p=708 https://yq.aliyun.com/articles/54454 http://blog.csdn.net/zhaiwx1987/ar ...
- Yet Another 10 Common Mistakes Java Developers Make When Writing SQL (You Won’t BELIEVE the Last One)--reference
(Sorry for that click-bait heading. Couldn’t resist ;-) ) We’re on a mission. To teach you SQL. But ...
- Linux查看系统负载常用命令
1.查看负载 uptime :: up day, :, user, load average: 0.00, 0.00, 0.00 在过去1分钟.5分钟.15分钟内平均进程数量 2.查看用户 w :: ...
- Java的浮点数
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5160771. ...
- js--小结⑤
js中的for循环,while循环,do...while循环和C语言的一模一样 有几个问题要提醒一下的是 1. null是对象,即object undefined是undefined d ...
- 局域网之php项目IP访问共享
局域网之php本地项目共享 该文章主要介绍本地php项目在局域网内的共享访问,主要体现为通过本地ip地址访问项目 做法如下: 1.更改本地盘host文件(winds目录为:C:\Windows\Sys ...
- [Session] SessionHelper2---C#关于Session高级操作帮助类 (转载)
点击下载 SessionHelper2.rar 这个类是关于Session的一些高级操作1.添加时限制时间2.读取对象3.读取数据等等看下面代码吧 /// <summary> /// 联系 ...
- 如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN
本站的 Rio 最近在一台 Ubuntu 和一台 Debian 主机上配置了 L2TP / IPSec VPN,并在自己的博客上做了记录.原文以英文写就,我把它大致翻译了一下,结合我和 Rio 在设置 ...
- yieId浅谈
例子:在不使用yieId时,通常我们都会采取先遍历再把元素加到新的List中 using (var reader = SqlHelper.ExecuteReader("")) { ...
- Ubuntu下解压rar文件的方法
原帖地址:http://hi.baidu.com/remoteexp/item/1c32d0ffb92e946c3c148596 一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了ra ...