自己写的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 ...
随机推荐
- TCP参数设置
我们这里应用的是CentOS5.3,并内核使用的是2.6.18-128.el5PAE #1 SMP .修改部分TCP ,有的是为了提高性能与负载,但是存在降低稳定性的风险.有的则是安全方面的配置,则有 ...
- one problem about Apple Keychain in use
解决方案 Add Security.framework, then rebuild. Sometimes I find I have to build clean and then rebuild. ...
- ubuntu14.04使用root用户登录桌面 分类: 学习笔记 linux ubuntu 2015-07-05 10:30 199人阅读 评论(0) 收藏
ubuntu安装好之后,默认是不能用root用户登录桌面的,只能使用普通用户或者访客登录.怎样开启root用户登录桌面呢? 先用普通用户登录,然后切换到root用户,然后执行如下命令: vi /usr ...
- 关于js中伪数组
伪数组: 具有length属性: 按索引方式存储数据: 不具有数组的push().pop()等方法: 伪数组无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push().pop ...
- jquery刷新iframe页面的方法
1,reload 方法,该方法强迫浏览器刷新当前页面. 语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当 ...
- HDU-1037(水水水题)
Keep on Truckin' Problem Description Boudreaux and Thibodeaux are on the road again . . . "Boud ...
- css动画结束后 js无法修改translated值 .
由于项目的需要,俺要做一些页面的转场动画. 即将是移动端,肯定是首先css动画了. 结果确发现,css动画中,如果设置animation-fill-mode: both;在动画结束后无法个性trans ...
- Java SE (1)之 JFrame 组件 BorderLayout 布局
JAVA 初期,练习SE ,桌面程序, package com.sunzhiyan; import java.awt.*; import java.awt.event.*; import javax. ...
- 消息中间件MQ基础理论知识
欢迎转载,转载请注明出处:http://www.cnblogs.com/lidabnu/p/5723280.html 消息中间件已经流行很长时间,一般情况下,不需要自己来从头研发.设计消息中间件,所以 ...
- Nico Game Studio 3.地图纹理编辑 物体皮肤编辑
完成功能: 1.地图纹理编辑功能. 图层编辑,添加/删除纹理,地图编辑.网格绘制.