可以

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的更多相关文章

  1. Bootsrap 的 Carousel

    一.简介 Carousel 就是指轮播图,这里 有完整的代码例子.它可以很简单的就构造出来,结构如下: div.carousel.slide[data-ride="carousel" ...

  2. jQuery轮播图(二)利用构造函数和原型创建对象以实现继承

    本文是在我开始学习JavaScript继承时,对原型继承的一些理解和运用.文中所述的继承方式均是使用js特有的原型链方式,实际上有了ES6的类之后,实现继承的就变得十分简单了,所以这种写法现在也不在推 ...

  3. Sultana后记:纯css也能写col,select,datepicker,carousel...

    未完待续 背景 如今css3越来越发达,focus-within等属性也已经开始在Chrome得到支持.如果有出色的css功底,一点点ps技能,你也能用css3配合原生html标签写出优秀的框架.通过 ...

  4. Bootstrap之Carousel不能自动播放的解决办法(转)

    Bootstrap是一个非常好的css/javaScript框架,尤其对于移动端的自适应和适配能力都比较强. 用Bootstrap自带的Carousel写了一个图片轮播的广告部分,用js调用后却出现了 ...

  5. 利用bootstrap写图片轮播

    利用bootstrap写图片轮播 缺点是轮播没有固定样式图片样式会改变外框的大小,所以要再设置 以及左右按钮的style也要从新设置 <div class="carousel slid ...

  6. 玉渊潭赏樱花有感:从无到有写一个jQuery开源插件

    “玉渊潭公园樱花节”是每年樱花绽放时,都会在玉渊潭公园樱举办樱花节,游客前往玉渊潭公园,可以欣赏到20个品种2000株樱花.2016玉渊潭樱花节时间:3月中旬-4月中旬观赏最佳,2016年3月23日开 ...

  7. 自己写的轻量级PHP框架trig与laravel5.1,yii2性能对比

    看了下当前最热门的php开发框架,想对比一下自己写的框架与这些框架的性能对比.先看下当前流行框架的投票情况. 看结果对比,每个测试脚本做了一个数据库的联表查询并进行print_r输出,查询的sql语句 ...

  8. Owl Carousel幻灯片插件的使用

    Owl Carousel 是一个强大.实用但小巧的 jQuery 幻灯片插件,它具有一下特点: 兼容所有浏览器 支持响应式 支持 CSS3 过度 支持触摸事件 支持 JSON 及自定义 JSON 格式 ...

  9. 利用sklearn对MNIST手写数据集开始一个简单的二分类判别器项目(在这个过程中学习关于模型性能的评价指标,如accuracy,precision,recall,混淆矩阵)

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

随机推荐

  1. Qt 国际化之二:多国语界面动态切换的实现

    第一步在你的pro里面加入 TRANSLATIONS = myexec_zh.ts (根据对应的ts文件修改)第二步用lupdate 操作pro 将要翻译的提取到ts文件 命令是 lupdate my ...

  2. shell中exit命令不退出脚本

    好久不用shell了,今天碰到一个坑,发现exit后,shell脚本还会运行. $JAVA_HOME/bin/jps | while read RES do PID=`echo $RES | awk ...

  3. HTML+CSS基础学习笔记(5)

    一.文字排版--字体 Eg: body{font-family:"宋体";} body{font-family:"Microsoft Yahei";}//微软雅 ...

  4. c语言学习之基础知识点介绍(九):预处理指令和多文件开发

    一:预处理指令 /* 预处理指令: 作用:在程序编译之前做一些操作. 预处理命令写法的共同特点:都是以#号开头. 文件包含指令:#include 是一个文件包含命令. 作用:把某个文件内的内容读取出来 ...

  5. C#常用的关键字

    常用关键字有 this 1)当前类的对象 2)调用自己的构造函数 new base virtual interface abstract override parttial sealed return ...

  6. oc 获取当前时间

    //获取当前日期 NSDate* date = [NSDate date]; NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init]; ...

  7. UIView的layoutSubviews和drawRect方法

    UIView的layoutSubviews和drawRect方法   首先两个方法都是异步执行.layoutSubviews方便数据计算,drawRect方便视图重绘.   layoutSubview ...

  8. CSS Padding(填充)

    CSS Padding(填充)属性定义元素边框与元素内容之间的空间. Padding(填充) 当元素的 Padding(填充)(内边距)被清除时,所"释放"的区域将会受到元素背景颜 ...

  9. CSS 列表

    CSS列表属性作用如下: 设置不同的列表项标记为有序列表 设置不同的列表项标记为无序列表 设置列表项标记为图像 列表 在HTML中,有两种类型的列表: 无序列表 - 列表项标记用特殊图形(如小黑点.小 ...

  10. jQuery 遍历祖先

    祖先是父.祖父或曾祖父等等. 通过 jQuery,您能够向上遍历 DOM 树,以查找元素的祖先. 向上遍历 DOM 树 这些 jQuery 方法很有用,它们用于向上遍历 DOM 树: parent() ...