[JavaScript]手机滑动图片
思路
1.用ul ,li 来装载滑动的图片,超出部分隐藏
2.滑动是通过改变ul的位置来实现
布局

模块
1: 根据li元素个数去设置ul的宽度
1.1 获取ul元素
1.2 获取li元素的个数
1.3 设置ul元素的宽度
2: ul实现拖拽移动功能
Ul元素移动的距离 = 鼠标移动横坐标只差
Ul元素的新位置 = Ul的位置标 + Ul元素移动的距离
Ul元素可以通过translateX 来进行动画
2.1: 获取ul元素的旧位置(触碰ul元素时的translateX值)
2.2: 获取手指触碰的坐标x1
2.3: 获取手指移动的坐标x2
2.4: 计算Ul的新位置
2.5: 设置Ul的位置
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>手机滑动插件swiper</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
body,
.content{
display: flex;
align-items: center;
width: 100vw;
height: 100vh;
} .swiper{
width: 100%;
height: 100%;
overflow: hidden;
}
.swiper ul{
width: 300%;
height: 100%;
list-style: none;
}
.swiper ul li{
display: flex;
justify-content: center;
align-items: center;
float: left;
width: calc( 100% / 3);
height: 100%;
}
.swiper ul li img{
display: block;
width: 60%;
height: 60%;
}
</style>
</head>
<body> <div class="content">
<div class="swiper">
<ul>
<li><img src="data:images/01.jpg" alt=""></li>
<li><img src="data:images/02.jpg" alt=""></li>
<li><img src="data:images/03.jpg" alt=""></li>
</ul>
</div>
</div> </body> <script> var data = {
oUl : document.querySelector('ul'),
aLi : document.querySelectorAll('li'),
time : '0.5s'
} swiper(data); function swiper(data){
data.oUl.style.width = data.aLi.length+'00%'; for (var index = 0 ; index < data.aLi.length ; index++) {
data.aLi[index].style.width = 100/(data.aLi.length)+'%';
} data.oUl.addEventListener('touchstart',touch); //当手指触摸屏幕时候触发
data.oUl.addEventListener('touchmove',touch); //当手指在屏幕上滑动的时候连续地触发
data.oUl.addEventListener('touchend',touch); //当手指从屏幕上离开的时候触发 data.startX = 0; //移动存放初始位置
data.oUl.transform = {}; //存放transform的变化值 }; function touch(ev){
ev = ev || window.event ; //获取手指事件 switch (ev.type) {
case 'touchstart':
data.startX = cssTransform(data.oUl,'translateX') || 0 ;
x1 = ev.changedTouches[0].pageX; data.oUl.style.transition = '0s';
break; case 'touchmove':
var x2 = ev.changedTouches[0].pageX;
var nowX = data.startX + x2 - x1;
cssTransform(data.oUl,'translateX',nowX); break; case 'touchend': //松开时 图片是拉取还是回撤
var offset = data.oUl.transform['translateX'];
offset = Math.min( 0 , offset );
offset = Math.max( -(data.aLi.length-1) * data.aLi[0].offsetWidth , offset );
var num = Math.round( - offset / data.aLi[0].offsetWidth );
cssTransform(data.oUl,'translateX',-num*data.aLi[0].offsetWidth);
data.oUl.style.transition = data.time; break;
}
} /*****
*@paran:设置或获取一个元素的transform的值
*@obj:待操作的元素
*@attr:待操作的属性
*@var:待设置的值
*传两个参数是获值,三个参数是这是值
**/
function cssTransform(obj , attr , val){
switch (arguments.length) { //传参的个数
case 3:
obj.transform[attr] = val;
var str = '' ; //待设置的属性值,拼接而成
for (var key in obj.transform) {
switch (key) {
case 'translate':
case 'translateX':
case 'translateY':
case 'translateZ':
str += key+'('+obj.transform[key]+'px)';
}
}
obj.style.transform = str;
break; case 2:
var val = obj.transform[attr];
if ( typeof val === 'undefined' ) {
val = 0;
}
return val;
break;
}
}; </script>
</html>
[JavaScript]手机滑动图片的更多相关文章
- [js开源组件开发]js轮播图片支持手机滑动切换
js轮播图片支持手机滑动切换 carousel-image 轮播图片,支持触摸滑动. 例子见DEMO http://www.lovewebgames.com/jsmodule/carousel-ima ...
- 手机触屏滑动图片切换插件swiper.js
今天给大家分享一款手机触屏滑动图片切换插件swiper.js是一款swiper手机触屏滑动图片幻灯片,适合各种尺寸.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div ...
- 【javascript/css】Javascript+Css实现图片滑动浏览效果
今天用js+css来做一个能够左右滑动的图片浏览效果. 首先写一个结构,包括需要浏览的两张图,以及能够点击来滑动图片的两个按钮. <!DOCTYPE html> <html> ...
- 使用iScroll和photoswipe写手机浏览图片的插件的几点经验
首先,当我知道我得到一个任务需要写一个在手机上能浏览图片的插件时,我第一想到了iScroll.它的左右滑动,上下滑动的效果在安卓手机上也能让用户有良好的体验,自己写也能方便控制. 我的需求是,插件要能 ...
- js鼠标滑动图片显示隐藏效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- wpf 模拟3D效果(和手机浏览图片效果相似)(附源码)
原文 wpf 模拟3D效果(和手机浏览图片效果相似)(附源码) pf的3D是一个很有意思的东西,类似于ps的效果,类似于电影动画的效果,因为动画的效果,(对于3D基础的摄像机,光源,之类不介绍,对于依 ...
- 移动端 H5 拍照 从手机选择图片,移动端预览,图片压缩,图片预览,再上传服务器
前言:最近公司的项目在做全网营销,要做非微信浏览器的wap 站 的改版,其中涉及到的一点技术就是采用H5 选择手机相册中的图片,或者拍照,再将获取的图片进行压缩之后上传. 这个功能模块主要有这5点比较 ...
- react使用ant design pro时的滑动图片组件
react的滑动图片验证,是基于https://segmentfault.com/a/1190000018309458?utm_source=tag-newest做的修改,改动的主要有以下几点: 1. ...
- 用javascript协助导入图片
用javascript协助导入图片 需求 先说说需求.春节回家见爸妈,老爸迷上了摄影.他把平时的照片都上传到了 成都图片网, 这个成都图片网专门有一个 "快拍成都" 的版块,用于大 ...
随机推荐
- 【Spark调优】Broadcast广播变量
[业务场景] 在Spark的统计开发过程中,肯定会遇到类似小维表join大业务表的场景,或者需要在算子函数中使用外部变量的场景(尤其是大变量,比如100M以上的大集合),那么此时应该使用Spark的广 ...
- 深入分析Java I/O的工作机制 (三)网络I/O的工作机制 很详细
3.网络I/O的工作机制 前言:数据从一台主机(服务端)发送到网络中的另一台主机(客户端)需要经过很多步骤:首先需要有相互沟通的意向.其次要有能够沟通的物理渠道(物理链路):是通过电话,还是直接面对面 ...
- Python shuffle() 函数
描述 shuffle() 方法将序列的所有元素随机排序. 语法 以下是 shuffle() 方法的语法: import random random.shuffle (lst ) 注意:shuffle( ...
- linux运维工程师面试题收集
面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...
- 了解Java内存模型,看完这一篇就够了
前言(此文草稿是年前写的,但由于杂事甚多一直未完善好.清明假无事,便收收尾发布了) 年关将近,个人工作学习怠惰了不少.两年前刚做开发的时候,信心满满想看看一个人通过自己的努力,最终能达到一个什么样的高 ...
- 【原创】Github团队协作之Pull请求
首先声明:Github上关于代码团队协作方式有很多种,这里只讲述Github上其中的一种代码团队协作方式. Pull请求(Pull request) 1 综述 协作者通过fork一个新的代 ...
- 接口隔离原则(ISP)
设计应用程序的时候,如果一个模块包含多个子模块,那么我们应该小心对模块做出抽象.设想该模块由一个类实现,我们可以把系统抽象成一个接口.但是要添加一个新的模块扩展程序时,如果要添加的模块只包含原系统中的 ...
- 使用3D Slicer对图像进行配准
在进行深度学习之前,我们需要图像进行一些预处理操作,其中配准是很重要的一环,以下将介绍使用软件3D Slicer来进行图像配准 3D Slicer是(1)一个软件平台,用以图像分析(包括配准和实时编辑 ...
- 基于jQuery消息提示框插件Tipso
今天要分享的这款jQuery消息提示框插件名叫Tipso,它的特点是可以定义提示框的显示位置,以及动态改变提示框的提示内容,应该说是一款相当灵活的jQuery消息提示框插件.效果图如下: 在线预览 ...
- 伪指令 ADR 与 LDR 的区别
指令简介: adr r0, _start 得到的是 _start 的当前执行位置,由 pc+offset 决定 ldr r0, =_start 得到的是绝对的地址,链接时决定 程序示例: ldr r0 ...