html5 tab横向滚动,无滚动条(transform:translate)
html5 横向滚动,用到了 touchstart、touchmove、touchend 控制修改transform:translate属性;[手机端或者浏览器模拟手机模式才有效果]
【转载请注明出处】
回头准备封装成插件都放到 github上 https://github.com/wt9213
html:
- <div class="tab" id="tab">
- <div class="scroll-tab" id="scroll_tab" style="transform: translate(0px, 0px) translateZ(0px);">
- <a href="#" class="active">tab1</a>
- <a href="#">tab2</a>
- <a href="#">tab3</a>
- <a href="#">tab4</a>
- <a href="#">tab5</a>
- <a href="#">tab6</a>
- <a href="#">tab7</a>
- <a href="#">tab8</a>
- </div>
- </div>
css:
- .tab{overflow: hidden;width: 90%;margin: 0 auto;}
- .scroll-tab{display: flex;position: relative;}
- .scroll-tab a{padding: 5px 10px;border-bottom: 2px solid transparent;text-decoration: none;color: #333333;font-size: 16px;font-family: "arial, helvetica, sans-serif","微软雅黑";}
- .scroll-tab a.active{color: #0894ec;border-color: #0894ec;}
js:
- var $scrollTab;
- var $tab=document.getElementById("tab");
- var touchstartX, touchstartY;
- var scrollMax;
- var mX,mY;
- var moveto;
- $tab.addEventListener('touchstart', function (e) {
- var touch = e.targetTouches[0];
- touchstartX = touch.pageX;
- touchstartY = touch.pageY;
- $scrollTab=document.getElementById("scroll_tab");
- scrollMax = $scrollTab.scrollWidth - $tab.clientWidth;
- });
- $tab.addEventListener('touchmove', function (e) {
- var touch = e.targetTouches[0];
- mX = touch.pageX;
- mY = touch.pageY;
- if (touchstartY - mY <= 15 && touchstartY - mY >= -15) {
- var transform = $scrollTab.style.transform;
- transform = transform.replace("translate(", "");
- var currentX = Number(transform.substring(0, (transform.indexOf(",") - 2)));
- moveto = -(touchstartX - mX)/4.8;
- moveto = moveto + currentX;
- if (moveto <= (100) && moveto >= (-scrollMax - 100)) {
- $scrollTab.style.transform="translate(" + moveto + "px, 0px) translateZ(0px)";
- }
- }
- });
- $tab.addEventListener('touchend', function (e) {
- $scrollTab.style.transitionDuration="600ms";
- if (moveto > 0) {
- $scrollTab.style.transform="translate(0px, 0px) translateZ(0px)";
- } else if (moveto < (-scrollMax)) {
- $scrollTab.style.transform="translate(" + (-scrollMax) + "px, 0px) translateZ(0px)";
- }
- setTimeout(function () {
- $scrollTab.style.transitionDuration="0ms";
- }, 600);
- });
html5 tab横向滚动,无滚动条(transform:translate)的更多相关文章
- Android实现 ScrollView + ListView无滚动条滚动
Android实现 ScrollView+ListView无滚动条滚动,即ListView的数据会全部显示完,但Listview无滚动条. 核心代码如下: 1. NoScrollListView.ja ...
- 使用elementUI滚动条之横向滚动
用过elementUI组件应该会知道它内置一个滚动效果,官网对此组件没有相关文档,也是细心网友发现的. <el-scrollbar></el-scrollbar> 将会出现滚动 ...
- 使用css实现无滚动条滚动+使用插件自定义滚动条样式
使用css实现无滚动条滚动,摘抄自:曹小萌博客 使用css实现无滚动条滚动,大体思路是在div外面再套一个div.这个div设置overflow:hidden.而内容div设置 overflow-x: ...
- 使用CSS实现无滚动条滚动
我们都知道,撸页面的时候当我们的内容超出了我们的div,往往会出现滚动条,影响美观. 尤其是当我们在做一些导航菜单的时候.滚动条一出现就破坏了UI效果. 我们不希望出现滚动条,也不希望超出去的内容被放 ...
- 横向tab计算滚动位置
React横向滚动计算 class Footer extends React.Component { handleClick(e) { const offset = 150; // 指定偏移量 thi ...
- 父节点使用css的transform: translate(0, 0)时position:fixed在chrome浏览器中无效
今天在做移动端的页面,无意间发现了一个Chrome浏览器下的一个bug,在使用CSS3的transform: translate(0, 0)属性对节点A进行位置转化,此时A节点下面有一个字节点B,节点 ...
- Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
本博主在一次个人移动端项目中,遇到这么一个需求:希望自己的项目中,头部导航条的效果可以像今日头条那样,横向滚动! 对于这样的效果,在各大移动端项目中几乎是随处可见,为什么呢? 我们都知道,对于移动端也 ...
- 【吉光片羽】js横向滚动与浮动导航
1.横向滚动,这个方法是见过最简洁的了. #demo { background: #FFF; overflow: hidden; border: 1px dashed #CCC; width: 117 ...
- swiper3d横向滚动多张炫酷切换banner
最近有了个新需求,swiper3d横向滚动多张炫酷切换banner要和elementUI里边走马灯的卡片化card 类似,但是还需要h5手机触摸滚动啊啊啊啊,昨天折腾了半个早上总算完成,今天乖乖跑来m ...
随机推荐
- 【Python + Mysql】之用pymysql库连接Mysql数据库并进行增删改查操作
用pip下载pymysql并引用 具体请参考文章: <Python之MySQL数据库增删改查操作> <python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删 ...
- spring+mybatis基于 AOP实现业务日志管理
最近在项目上用到了操作日志的相关,之前的解决方案就是自己写一个日志project,然后统一调用日志接口即可,这样方便自定义定制,因为有很多设备控制之类的都是需要确认一下的,但是,对数据的操作,比如,增 ...
- linux 上安装apache 出现 configure: error: APR not found. Please read the documentation错误
今日编译apache时出错: #./configure --prefix……检查编辑环境时出现: checking for APR... noconfigure: error: APR not fou ...
- 时下世界上最先进的液晶面板技术---ips
IPS是英文In-Plane Switching的缩写,英文含义为平面转换屏幕技术,由日立公司于2001推出的液晶面板技术,俗称“Super TFT”,是目前世界上最先进的液晶面板技术,目前已经广泛使 ...
- bat命令遍历文件和bat参数说明
**************************************************************************************************** ...
- 网络流合集:bzoj1433,1934,1854 题解
转载请注明:http://blog.csdn.net/jiangshibiao/article/details/23992205 网络流/二分图大合集 [NO.1*原题] 1433: [ZJOI200 ...
- java 十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制
//10进制转16进制 Integer.toHexString(20); //10进制转2进制 Integer.toBinaryString(10); //16进制转10进制 Integer.pars ...
- element开源框架
vue-element-admin:https://gitee.com/accest/bod-element https://gitee.com/liuyuantao/vue-element-ad ...
- easyui首页模板
Easyui首页html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "htt ...
- Hibernate 表连接hql语句
现有两个表 user 表 和 VIPcard 表 UserVo user VIPcardVo 中含有 UserVo user select v from VIPCardVo v left join ...