【css】用css巧妙实现移动端横向滑动展示功能
前言:记得以前处理移动端横向滑动展示都是去用js去解决的,要用js进行蛮多处理,要算li的宽度,然后还要用js设置ul盒子的宽度,又要设置最大滑动距离,最小滑动距离等等.......但是现在发现用css就能很好的解决这功能
一、直接上代码。
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
- <script src="https://cdn.bootcss.com/jquery/2.0.0/jquery.min.js"></script>
- <title>test</title>
- <style>
- body,ul { margin:0; padding:0;}
- .concent { margin:50px auto; width:100%; max-width:750px; min-width:320px; }
- .box { white-space:nowrap; overflow-x:auto; } /*注释1*/
- .box::-webkit-scrollbar { width:0; height:0; display: none; } /*注释2*/
- li { list-style:none; display:inline-block; width:100px; line-height:30px; margin-right:10px;
- background:#ccc; text-align:center; } /*注释3*/
- li:last-child { margin:0; }
- </style>
- </head>
- <body>
- <div class="concent">
- <ul class="box"> <!-- /*注释4*/ -->
- <li>简简单单</li><li>
- 简简单单</li><li>
- 简简单单</li><li>
- 简简单单</li><li>
- 简简单单</li><li>
- 简简单单</li>
- </ul>
- </div>
- <script>
- var u = navigator.userAgent;
- var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
- var isUc = u.indexOf('UCBrowser') > -1; //uc浏览器
- //var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
- if(isAndroid&&isUc){ /*注释5*/
- $('.box').on('touchstart',function(){
- $(document).on('touchmove',function(e){
- e.preventDefault();
- });
- $(document).on('touchend',function(){
- $(document).unbind();
- });
- });
- }
- </script>
- </body>
- </html>
运行代码,发现就可以实现左右滑动了。
二、注释解析与注意事项。
注释①,注释③:改变li标签为行内块元素(inline-block),给ul添加一个white-space:nowrap; 不让他自动换行。再添加overflow-x:auto;让他超出部分滚动显示。
注释④ : 是为了解决行内块元素之间的默认间隙问题。(关于行内块间隙问题可以查看【css】行内元素、行内块元素的默认间隙问题)。
注释②: ::-webkit-scrollbar { width:0; height:0; display: none; } 是为了解决安卓浏览器的滚动条问题,在iphone浏览器上的常规浏览器上不会出现横向的滚动条,但是在安卓设备上的chrome,火狐浏览器等一些浏览器会出现滚动条,安卓设备上高版本的uc浏览器,qq自带浏览器,微信自带浏览器不会出现滚动条。(该方法无法解决火狐浏览器出现的滚动条,网上查找了蛮多资料,都建议js去解决这问题)。
注释⑤:是为解决安卓设备上的uc浏览器一个恶心的功能,就是安卓设备上的uc浏览器如果打开好几个窗口页面。向左向右滑的时候会跳转到其他页面,这时就需要取消默认事件。
三、(补充)通过scrollLeft,点击li标签进行位置滑动
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
- <script src="https://cdn.bootcss.com/jquery/2.0.0/jquery.min.js"></script>
- <title>test</title>
- <style>
- body,ul { margin:0; padding:0;}
- .concent { margin:50px auto; width:100%; max-width:750px; min-width:320px; position:relative; }
- .box { white-space:nowrap; overflow-x:auto; position:relative; }
- .box::-webkit-scrollbar { width:0; height:0; display: none; }
- li { list-style:none; display:inline-block; line-height:30px; margin-right:20px;
- background:#ccc; text-align:center; }
- </style>
- </head>
- <body>
- <div class="concent">
- <ul class="box">
- <li>11111111</li><li>
- 22222222</li><li>
- 33333333</li><li>
- 44444444</li><li>
- 55555555</li><li>
- 66666666</li><li>
- 77777777</li><li>
- 88888888</li><li>
- 99999999</li>
- </ul>
- </div>
- <script>
- var oBox = $('.box');
- var oBoxWidth = $('.box').width();
- oBox.find('li').on('click',function(){
- var thisWidth = $(this).width();
- var moveLeft = this.offsetLeft;
- if(oBoxWidth<moveLeft+thisWidth){
- oBox.animate({scrollLeft:moveLeft});
- }else{
- oBox.animate({scrollLeft:0});
- }
- });
- </script>
- </body>
- </html>
运行代码,就可以看到,我们点击哪个li标签,该li标签就会滑到前面的位置,当我们点击最后几个li标签,也不会说滑动位置过大,导致后面空白,如果我们用js解决的话,也还要去限制他的最大滑动距离,而通过css滚动,不需要担心这问题。
【css】用css巧妙实现移动端横向滑动展示功能的更多相关文章
- 用css巧妙实现移动端横向滑动展示功能
前言:记得以前处理移动端横向滑动展示都是去用js去解决的,要用js进行蛮多处理,要算li的宽度,然后还要用js设置ul盒子的宽度,又要设置最大滑动距离,最小滑动距离等等.......但是现在发现用cs ...
- 纯css实现移动端横向滑动列表
前几天在公司做开发的时候碰到一个列表横向滑动的功能,当时用了iscroll做,结果导致手指触到列表的范围内竖向滑动屏幕滑动不了的问题. 这个问题不知道iscroll本身能不能解决,当时选择了换一种方式 ...
- 纯css实现移动端横向滑动列表(可应用于ionic3移动app开发)
前几天在公司做开发的时候碰到一个列表横向滑动的功能,当时用了iscroll做,结果导致手指触到列表的范围内竖向滑动屏幕滑动不了的问题. 这个问题不知道iscroll本身能不能解决,当时选择了换一种方式 ...
- 纯css实现移动端横向滑动列表&&overflow:atuo;隐藏滚动条
<!DOCTYPE html> <html> <head> <title>横向滑动</title> <style type=" ...
- CSS实现移动端横向滑动
html: <div class="chosen-container"> <div class="chosen-swiper"> < ...
- CSS+HTML实现移动端div左右滑动展示
由于手机屏幕的宽度有限,内容太多移动设备一行装不下的,所以很多移动端网站的导航栏都有左右滑动效果,下面我就用CSS+HTML实现移动端div左右滑动展示. CSS:box设置文本不换行,子元素box1 ...
- CSS Sprites (CSS图像拼合技术)教程工具
什么是CSS Sprites? “Sprite”(精灵)这个词在计算机图形学中有它独特的定义,由于游戏.视频等画质越来越高,必须有一种技术可以智能的处理材质和贴图,并且要 同时保持画面流畅.“Spri ...
- CSS Sprites(CSS图像拼合技术)教程、工具集合
本集合是有一位国外设计师收集整合,并由 oncoding翻译成中文的,感谢他们的辛苦贡献.CSS Sprites技术在国外并不是什么新技术,只不过近两年(尤其08年开始)中国开始流行这个词,大家也开始 ...
- 【Python全栈-CSS】CSS入门
CSS入门教程 参考: http://www.cnblogs.com/yuanchenqi/articles/5977825.html http://www.ruanyifeng.com/blog/2 ...
随机推荐
- centos7安装显示中文
系统通过环境变量LANG设置语言格式编码 查看当前语言环境 echo $LANG 查看是否安装中文语言,Linux中通过locale来设置程序运行的不同语言环境 locale -a | grep 'z ...
- hextorgb
function hexToRgb(hex) { // By Tim Down - http://stackoverflow.com/a/5624139/3493650 // Expand short ...
- Mybatis常见面试题汇总
Mybatis常见面试题汇总 最近在复习整理Mybatis的相关知识,针对面试中的典型问题,结合相关书籍和网上相关帖子,做如下整理. ================================= ...
- ansible-yaml语法
1. 基础语法 - yaml结果通过空格来展示 - 数组使用"- "来表示 //注意:-后边要有一个空格 - 键值对使用": "来表示 //注意::后边要有一个 ...
- AMCL论文及源码解析--参数(持续更新中)
整理内容来自:http://wiki.ros.org/amcl 1.AMCL订阅的节点: scan (sensor_msgs/LaserScan):激光数据 tf (tf/tfMessage):各种转 ...
- 5.Docker Compose 部署 Harbor
什么是 Harbor Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源 Docker Dis ...
- A*模板(求K短路)(POJ2449)
A*是bfs的优化,IDA*是dfs的优化 A*算法: 为启发式算法中很重要的一种,被广泛应用在最优路径求解和一些策略设计的问题中.而A*算法最为核心的部分,就在于它的一个估值函数的设计上: f(n) ...
- Visual Studio Code搭建Python开发环境方法总结
更新:目前VSCode官方Python插件已经支持代码运行与调试,无需安装Code Runner插件. 1.下载安装Python,地址 https://www.python.org/downloads ...
- react-native构建基本页面3---路由配置
安装路由 运行yarn add react-native-router-flux 路由官网 路由相关配置 路由简单的DEMO // Main 才是项目的根组件 import React, { Comp ...
- 插入jupyter notebook代码
<iframe src="https://nbviewer.jupyter.org/gist/gaowenxin95/53408e0f1ce268430efaad2cb1f0ca4f& ...