如何使用html5+CSS3实现滑动换图片效果
发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,这篇文章主要介绍"如何使用html5+CSS3实现滑动换图片效果"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用html5+CSS3实现滑动换图片效果"
千家信息网最后更新 2025年02月10日如何使用html5+CSS3实现滑动换图片效果
这篇文章主要介绍"如何使用html5+CSS3实现滑动换图片效果"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用html5+CSS3实现滑动换图片效果"文章能帮助大家解决问题。
在html中可配置滑动参数。具体代码如下:
HTML代码:
H5手指滑动切换图片 这里通过回调显示当前滚动到多少页: 0
slider-H5.js 代码:
(function($) { /* 图片滚动效果 @jQuery or @String box : 滚动列表jQuery对象或者选择器 如:滚动元素为li的外层ul @object config : { @Number width : 一次滚动宽度,默认为box里面第一个一级子元素宽度[如果子元素宽度不均匀则滚动效果会错乱] @Number size : 列表长度,默认为box里面所有一级子元素个数[如果size不等于一级子元素个数,则不支持循环滚动] @Boolean loop : 是否支持循环滚动 默认 true @Boolean auto : 是否自动滚动,支持自动滚动时必须支持循环滚动,否则设置无效,默认为true @Number auto_wait_time : 自动轮播一次时间间隔,默认为:3000ms @Function callback : 滚动完回调函数,参入一个参数当前滚动节点索引值 } */ function mggScrollImg(box, config) { this.box = $(box); this.config = $.extend({}, config || {}); this.width = this.config.width || this.box.children().eq(0).width(); //一次滚动的宽度 this.size = this.config.size || this.box.children().length; this.loop = this.config.loop !== undefined ? (this.config.loop == true ? true: false) : true; //默认能循环滚动 this.auto = this.config.auto !== undefined ? (this.config.auto == true ? true: false) : true; //默认自动滚动 this.auto_wait_time = this.config.auto_wait_time || 3000; //轮播间隔 this.scroll_time = this.config.scroll_time !== undefined ? (this.config.scroll_time > 0 ? this.config.scroll_time: 0) : 300; //滚动时长 this.minleft = -this.width * (this.size - 1); //最小left值,注意是负数[不循环情况下的值] this.maxleft = 0; //最大lfet值[不循环情况下的值] this.now_left = 0; //初始位置信息[不循环情况下的值] this.point_x = null; //记录一个x坐标 this.point_y = null; //记录一个y坐标 this.move_left = false; //记录向哪边滑动 this.index = 0; this.busy = false; this.timer; this.init(); } $.extend(mggScrollImg.prototype, { init: function() { this.bind_event(); this.init_loop(); this.auto_scroll(); }, bind_event: function() { var self = this; self.box.bind('touchstart', function(e) { var t = e.touches ? e.touches: e.originalEvent.targetTouches; if (t.length == 1 && !self.busy) { self.point_x = t[0].screenX; self.point_y = t[0].screenY; } }).bind('touchmove', function(e) { var t = e.touches ? e.touches: e.originalEvent.targetTouches; if (t.length == 1 && !self.busy) { return self.move(t[0].screenX, t[0].screenY); //这里根据返回值觉得是否阻止默认touch事件 } }).bind('touchend', function(e) { ! self.busy && self.move_end(); }); }, /* 初始化循环滚动,当一次性需要滚动多个子元素时,暂不支持循环滚动效果, 如果想实现一次性滚动多个子元素效果,可以通过页面结构实现 循环滚动思路:复制首尾节点到尾首 */ init_loop: function() { if (this.box.children().length > 1 && this.box.children().length == this.size && this.loop) { //暂时只支持size和子节点数相等情况的循环 this.now_left = -this.width; //设置初始位置信息 this.minleft = -this.width * this.size; //最小left值 this.maxleft = -this.width; this.box.prepend(this.box.children().eq(this.size - 1).clone()).append(this.box.children().eq(1).clone()).css(this.get_style(2)); this.box.css('width', this.width * (this.size + 2)); } else { this.loop = false; this.box.css('width', this.width * this.size); } }, auto_scroll: function() { //自动滚动 var self = this; if (!self.auto) return; clearTimeout(self.timer); self.timer = setTimeout(function() { self.go_index(self.index + 1); }, self.auto_wait_time); }, go_index: function(ind) { //滚动到指定索引页面 var self = this; if (self.busy) return; clearTimeout(self.timer); self.busy = true; if (self.loop) { //如果循环 ind = ind < 0 ? -1 : ind; ind = ind > self.size ? self.size: ind; } else { ind = ind < 0 ? 0 : ind; ind = ind >= self.size ? (self.size - 1) : ind; } if (!self.loop && (self.now_left == -(self.width * ind))) { self.complete(ind); } else if (self.loop && (self.now_left == -self.width * (ind + 1))) { self.complete(ind); } else { if (ind == -1 || ind == self.size) { //循环滚动边界 self.index = ind == -1 ? (self.size - 1) : 0; self.now_left = ind == -1 ? 0 : -self.width * (self.size + 1); } else { self.index = ind; self.now_left = -(self.width * (self.index + (self.loop ? 1 : 0))); } self.box.css(this.get_style(1)); setTimeout(function() { self.complete(ind); }, self.scroll_time); } }, complete: function(ind) { //动画完成回调 var self = this; self.busy = false; self.config.callback && self.config.callback(self.index); if (ind == -1) { self.now_left = self.minleft; } else if (ind == self.size) { self.now_left = self.maxleft; } self.box.css(this.get_style(2)); self.auto_scroll(); }, next: function() { //下一页滚动 if (!this.busy) { this.go_index(this.index + 1); } }, prev: function() { //上一页滚动 if (!this.busy) { this.go_index(this.index - 1); } }, move: function(point_x, point_y) { //滑动屏幕处理函数 var changeX = point_x - (this.point_x === null ? point_x: this.point_x), changeY = point_y - (this.point_y === null ? point_y: this.point_y), marginleft = this.now_left, return_value = false, sin = changeY / Math.sqrt(changeX * changeX + changeY * changeY); this.now_left = marginleft + changeX; this.move_left = changeX < 0; if (sin > Math.sin(Math.PI / 3) || sin < -Math.sin(Math.PI / 3)) { //滑动屏幕角度范围:PI/3 -- 2PI/3 return_value = true; //不阻止默认行为 } this.point_x = point_x; this.point_y = point_y; this.box.css(this.get_style(2)); return return_value; }, move_end: function() { var changeX = this.now_left % this.width, ind; if (this.now_left < this.minleft) { //手指向左滑动 ind = this.index + 1; } else if (this.now_left > this.maxleft) { //手指向右滑动 ind = this.index - 1; } else if (changeX != 0) { if (this.move_left) { //手指向左滑动 ind = this.index + 1; } else { //手指向右滑动 ind = this.index - 1; } } else { ind = this.index; } this.point_x = this.point_y = null; this.go_index(ind); }, /* 获取动画样式,要兼容更多浏览器,可以扩展该方法 @int fig : 1 动画 2 没动画 */ get_style: function(fig) { var x = this.now_left, time = fig == 1 ? this.scroll_time: 0; return { '-webkit-transition': '-webkit-transform ' + time + 'ms', '-webkit-transform': 'translate3d(' + x + 'px,0,0)', '-webkit-backface-visibility': 'hidden', 'transition': 'transform ' + time + 'ms', 'transform': 'translate3d(' + x + 'px,0,0)' }; } }); /* 这里对外提供调用接口,对外提供接口方法 next :下一页 prev :上一页 go :滚动到指定页 */ $.mggScrollImg = function(box, config) { var scrollImg = new mggScrollImg(box, config); return { //对外提供接口 next: function() { scrollImg.next(); }, prev: function() { scrollImg.prev(); }, go: function(ind) { scrollImg.go_index(parseInt(ind) || 0); } } }})(jQuery)
关于"如何使用html5+CSS3实现滑动换图片效果"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
循环
图片
效果
元素
支持
切换
动画
宽度
情况
手指
方法
索引
代码
接口
知识
对外
最小
一次性
个数
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
visio导出数据库的模型
国家网络安全周宣传案例
网络安全小论文600字
弘芯软件开发招聘信息
河北学安网络安全有限公司
北京亿品众合互联网科技公司
长江存储it软件开发
vue 服务器地址变化
江门专业软件开发维修电话
软件开发 注意漏洞检测
网络安全手抄报知识语句
vivo软件开发校招面试
高一网络安全手抄报获奖作品
推荐好的数据库查询教程
我的世界多人搜索不到服务器
数据库更新需要提交嘛
网络技术与服务
组态王数据库教学视频
数据库运维体系
网络安全领域相关架构
怀旧服服务器刷怪
合肥戴尔服务器总代理
属于工业网络安全防护
网络安全项目合同格式
网络安全治理工作新闻稿
局域网怎么打开服务器
日本数据库研究现状
重新注册服务器
网络安全中最薄弱的环节是
测试网络安全教程