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 ...
随机推荐
- Redis(Windows安装方法与Java调用实例 & 配置文件参数说明 & Java使用Redis所用Jar包 & Redis与Memcached区别 & redis-cli.exe命令及示例)
Windows下Redis的安装使用 0.前言 因为是初次使用,所以是在windows下进行安装和使用,参考了几篇博客,下面整理一下 1.安装Redis 官方网站:http://redis.io/ 官 ...
- liunx 下安装 php_screw 扩展 以及报错处理
php_screw 是一个 php 源代码加密扩展.首先来看一下 php_screw 在liunx下是如何安装的 首先 去源完整下载 安装包,现在的最新版是 1.5,我们就用1.5 来做个实例 如果有 ...
- R语言数据分析系列之四
R语言数据分析系列之四 -- by comaple.zhang 说到统计分析我们就离不开随机变量,所谓随机变量就是数学家们为了更好的拟合现实世界的数据而建立的数学模型.有了她我们甚至能够来预測一个站点 ...
- 使用3DES+Base64来加密传输iOS应用数据
本文转载至 http://www.erblah.com/post/objective-c/shi-yong-3des-base64lai-jia-mi-chuan-shu-iosying-yong-s ...
- ios推送服务,php服务端
本文转载至http://my.oschina.net/AStar/blog/176531 生成证书 证书生成参考:https://parse.com/tutorials/ios-push-noti ...
- hdu 3549 Flow Problem【最大流增广路入门模板题】
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Flow Problem Time Limit: 5000/5000 MS (Java/Others ...
- Android笔记之WebView加载网页的进度回调
wv.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, i ...
- LATEX ——WinEdt 破解
WinEdt 是目前我发现最好的LaTeX编辑器,但是在国内支付不便,且学生许可需$40,只能出此下策,望有余力者尽量购买正版. WinEdt 的旧版本的破解方法众所周知,只需定时删除HKCU\Sof ...
- [转载]Java web应用中的常见字符编码问题的解决方法
以下是 Java web应用的常见编码问题 1. html页面的编码 在web应用中,通常浏览器会根据http header: Content-type的值来决定用什么encoding, 比如遇到Co ...
- 函数创建XML文件
REPORT YTST_XML_14. *----------------------------------------------------------------------* * PANT ...