仿iPhone、iPad界面滑屏切换
<!DOCTYPE html>
<html lange='en'>
<head>
<meta charset='UTF-8'>
<title></title>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<style>
* {
margin: 0;
padding: 0;
}
#div1 {
width: 670px;
height: 250px;
position: relative;
margin: 50px;
overflow: hidden;
background: pink;
}
#ul1 {
position: absolute;
left: 0;
}
#ul1 li {
width: 670px;
height: 250px;
float: left;
list-style: none;
}
#ul1 li img{
width: 670px;
}
</style>
</head>
<body>
<div id="div1">
<ul id="ul1">
<li><img src="img/1.jpg"></li>
<li><img src="img/2.jpg"></li>
<li><img src="img/3.jpg"></li>
<li><img src="img/4.jpg"></li>
<li><img src="img/5.jpg"></li>
</ul>
</div>
</body>
</html>
<script type="text/javascript">
var oDiv = document.getElementById('div1');
var oUl = document.getElementById('ul1');
var aLi = oUl.getElementsByTagName('li');
var w = aLi[0].offsetWidth;
oUl.style.width = aLi.length * w + 'px';
var downLeft = 0;
var donwX = 0;
var iNow = 0;
var downTime = 0;
var bBtn;
oUl.ontouchstart = function(ev) {
console.log(1)
var touchs = ev.changedTouches[0];
donwX = touchs.pageX;
downLeft = this.offsetLeft;
bBtn = true;
downTime = Date.now();
}
// console.log(donwX)
oUl.ontouchmove = function(ev) {
var touchs = ev.changedTouches[0];
if (this.offsetLeft >= 0) {
if (bBtn) {
donwX = touchs.pageX;
bBtn = false;
}
this.style.left = (touchs.pageX - donwX) / 3 + 'px';
console.log(1)
} else if (this.offsetLeft <= oDiv.offsetWidth - oUl.offsetWidth) {
console.log(oDiv.offsetWidth - oUl.offsetWidth)
if (bBtn) {
donwX = touchs.pageX;
bBtn = false;
}
this.style.left = (touchs.pageX - donwX) / 3 + (oDiv.offsetWidth - oUl.offsetWidth) + 'px';
console.log(2)
} else {
// debugger;
this.style.left = touchs.pageX - donwX + downLeft + 'px';
// console.log(touchs.pageX - donwX + downLeft+'this is')
console.log(3)
}
}
oUl.ontouchend = function(ev) {
var touchs = ev.changedTouches[0];
if (touchs.pageX < donwX) { //左
if (iNow < aLi.length - 1) {
// alert(Date.now() - downTime<300)
if (donwX - touchs.pageX > aLi[0].offsetWidth / 2 || (Date.now() - downTime < 300 && donwX - touchs.pageX > 30)) {
iNow++;
}
}
$('#ul1').animate({ 'left': -iNow * w });
} else { //右
// debugger;
if (iNow > 0) {
if (touchs.pageX - donwX > aLi[0].offsetWidth / 2 || (Date.now() - downTime < 300 && touchs.pageX - donwX > 30)) {
iNow--;
}
}
$('#ul1').animate({ 'left': -iNow * w });
}
}
</script>
<!--
1、用户划动超过图片的一半或者用户快速的滑过时才滚动一页
2、如果是在第1页,或者最后一页时移动的速度放慢3倍。
-->
仿iPhone、iPad界面滑屏切换的更多相关文章
- H5单页面手势滑屏切换原理
H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...
- 仿iphone动态萤火虫锁屏应用安卓源码
该源码是仿iphone动态萤火虫锁屏应用源码,源码SkyLock,这也是最近弄了一款锁屏,苦于市场百般阻拦与锁屏应用数量实在太多,于是将它拿出来开源:废话不多说,希望大家能够希望,更多说明请看下面的吧 ...
- ViewPager实现滑屏切换页面及动画效果(仿优酷客户端)
找了许多实现该功能的例子,但效果都不很理想,于是自己结合网上的资源及自己的总结,整理了一下,发出来,供大家参考.这个是自己做的,仿优酷客户端的. 先看效果: ****************** ...
- Android ListView实现仿iPhone实现左滑删除按钮
需要自定义ListView.这里就交FloatDelListView吧. 复写onTouchEvent方法.如下: @Override public boolean onTouchEvent(Moti ...
- JS禁止横竖屏切换,强制横竖屏显示
js判断屏幕横竖屏: function orient() { //alert('gete'); if (window.orientation == 0 || window.orientation == ...
- iOS - 滑屏方案
参考自:iOS开发- 通过ChildViewCotroller ViewController容器 产品增加新的版面,类似于网易新闻,百度新闻,腾讯新闻等新闻客户端首页多屏幕滑屏切换,找了一些开源代码研 ...
- 利用轮播原理结合hammer.js实现简洁的滑屏功能
最近有个任务,做一个非常小的h5的应用,只有2屏,需要做横向的全屏滑动切换和一些简单的动画效果,之前做这种东西用的是fullpage.js和jquery,性能不是很好,于是就想自己动手弄一个简单的东西 ...
- iPhone / iPad UI界面设计与图标设计的尺寸设计规范+安卓+网页
①iPhone的设计尺寸 iPhone界面尺寸: 设备 分辨率 状态栏高度 导航栏高度 标签栏(工具栏)高度 iPhone6 plus设计版 1242 × 2208 60px 132px 146px ...
- iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸
iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸 iPhone界面尺寸 设备 分辨 ...
随机推荐
- 我的Java开发学习之旅------>工具类:Java获取字符串和文件进行MD5值
ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一 ...
- 关于button的自动刷新
今天在开发中遇到了ajax传数据到后台,处理结果正常,返回的resultMap是一个Map<String,Object>类型,但是返回时显示'Fail to load response d ...
- Java for LeetCode 099 Recover Binary Search Tree
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- 剑指Offer:二叉树打印成多行【23】
剑指Offer:二叉树打印成多行[23] 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目分析 Java题解 package tree; import java.uti ...
- fragment静态加载
import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.util.Log; / ...
- Java并发知识概述
1.Java内存模型的抽象结构 Java中,所有的实例.静态域和数组元素都存储在堆内存中,堆内存是线程共享的.局部变量,形参,异常处理参数不会在线程之间共享,所以不存在内存可见性问题,也就不受内存模型 ...
- hdu-5781 ATM Mechine(dp+概率期望)
题目链接: ATM Mechine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- kmp算法模板及理解
kmp算法是复杂度为O(n+m)的字符串匹配算法; 首先kmp算法的核心是在模式串中获得next数组,这个数组表示模式串的子串的前缀和后缀相同的最长长度; 这样在匹配的过程中如果指到不匹配的位置,模式 ...
- Set_ML
参考资料:斯坦福(http://cs231n.github.io/linear-classify/:http://cs231n.stanford.edu/slides/2017/) Mastering ...
- BZOJ3524:[POI2014]Couriers
浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...