前言:记得以前处理移动端横向滑动展示都是去用js去解决的,要用js进行蛮多处理,要算li的宽度,然后还要用js设置ul盒子的宽度,又要设置最大滑动距离,最小滑动距离等等.......但是现在发现用css就能很好的解决这功能

一、直接上代码。

  1.  
    <!DOCTYPE html>
  2.  
    <html xmlns="http://www.w3.org/1999/xhtml">
  3.  
    <head>
  4.  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
  6.  
    <script src="https://cdn.bootcss.com/jquery/2.0.0/jquery.min.js"></script>
  7.  
    <title>test</title>
  8.  
    <style>
  9.  
    body,ul { margin:0; padding:0;}
  10.  
    .concent { margin:50px auto; width:100%; max-width:750px; min-width:320px; }
  11.  
    .box { white-space:nowrap; overflow-x:auto; } /*注释1*/
  12.  
    .box::-webkit-scrollbar { width:0; height:0; display: none; } /*注释2*/
  13.  
    li { list-style:none; display:inline-block; width:100px; line-height:30px; margin-right:10px;
  14.  
    background:#ccc; text-align:center; } /*注释3*/
  15.  
    li:last-child { margin:0; }
  16.  
    </style>
  17.  
    </head>
  18.  
    <body>
  19.  
    <div class="concent">
  20.  
    <ul class="box"> <!-- /*注释4*/ -->
  21.  
    <li>简简单单</li><li>
  22.  
    简简单单</li><li>
  23.  
    简简单单</li><li>
  24.  
    简简单单</li><li>
  25.  
    简简单单</li><li>
  26.  
    简简单单</li>
  27.  
    </ul>
  28.  
    </div>
  29.  
    <script>
  30.  
    var u = navigator.userAgent;
  31.  
    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
  32.  
    var isUc = u.indexOf('UCBrowser') > -1; //uc浏览器
  33.  
    //var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
  34.  
    if(isAndroid&&isUc){ /*注释5*/
  35.  
    $('.box').on('touchstart',function(){
  36.  
    $(document).on('touchmove',function(e){
  37.  
    e.preventDefault();
  38.  
    });
  39.  
    $(document).on('touchend',function(){
  40.  
    $(document).unbind();
  41.  
    });
  42.  
    });
  43.  
    }
  44.  
    </script>
  45.  
    </body>
  46.  
    </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标签进行位置滑动

  1.  
    <!DOCTYPE html>
  2.  
    <html xmlns="http://www.w3.org/1999/xhtml">
  3.  
    <head>
  4.  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
  6.  
    <script src="https://cdn.bootcss.com/jquery/2.0.0/jquery.min.js"></script>
  7.  
    <title>test</title>
  8.  
    <style>
  9.  
    body,ul { margin:0; padding:0;}
  10.  
    .concent { margin:50px auto; width:100%; max-width:750px; min-width:320px; position:relative; }
  11.  
    .box { white-space:nowrap; overflow-x:auto; position:relative; }
  12.  
    .box::-webkit-scrollbar { width:0; height:0; display: none; }
  13.  
    li { list-style:none; display:inline-block; line-height:30px; margin-right:20px;
  14.  
    background:#ccc; text-align:center; }
  15.  
    </style>
  16.  
    </head>
  17.  
    <body>
  18.  
    <div class="concent">
  19.  
    <ul class="box">
  20.  
    <li>11111111</li><li>
  21.  
    22222222</li><li>
  22.  
    33333333</li><li>
  23.  
    44444444</li><li>
  24.  
    55555555</li><li>
  25.  
    66666666</li><li>
  26.  
    77777777</li><li>
  27.  
    88888888</li><li>
  28.  
    99999999</li>
  29.  
    </ul>
  30.  
    </div>
  31.  
    <script>
  32.  
    var oBox = $('.box');
  33.  
    var oBoxWidth = $('.box').width();
  34.  
     
  35.  
    oBox.find('li').on('click',function(){
  36.  
    var thisWidth = $(this).width();
  37.  
    var moveLeft = this.offsetLeft;
  38.  
    if(oBoxWidth<moveLeft+thisWidth){
  39.  
    oBox.animate({scrollLeft:moveLeft});
  40.  
    }else{
  41.  
    oBox.animate({scrollLeft:0});
  42.  
    }
  43.  
    });
  44.  
    </script>
  45.  
    </body>
  46.  
    </html>

运行代码,就可以看到,我们点击哪个li标签,该li标签就会滑到前面的位置,当我们点击最后几个li标签,也不会说滑动位置过大,导致后面空白,如果我们用js解决的话,也还要去限制他的最大滑动距离,而通过css滚动,不需要担心这问题。

【css】用css巧妙实现移动端横向滑动展示功能的更多相关文章

  1. 用css巧妙实现移动端横向滑动展示功能

    前言:记得以前处理移动端横向滑动展示都是去用js去解决的,要用js进行蛮多处理,要算li的宽度,然后还要用js设置ul盒子的宽度,又要设置最大滑动距离,最小滑动距离等等.......但是现在发现用cs ...

  2. 纯css实现移动端横向滑动列表

    前几天在公司做开发的时候碰到一个列表横向滑动的功能,当时用了iscroll做,结果导致手指触到列表的范围内竖向滑动屏幕滑动不了的问题. 这个问题不知道iscroll本身能不能解决,当时选择了换一种方式 ...

  3. 纯css实现移动端横向滑动列表(可应用于ionic3移动app开发)

    前几天在公司做开发的时候碰到一个列表横向滑动的功能,当时用了iscroll做,结果导致手指触到列表的范围内竖向滑动屏幕滑动不了的问题. 这个问题不知道iscroll本身能不能解决,当时选择了换一种方式 ...

  4. 纯css实现移动端横向滑动列表&&overflow:atuo;隐藏滚动条

    <!DOCTYPE html> <html> <head> <title>横向滑动</title> <style type=" ...

  5. CSS实现移动端横向滑动

    html: <div class="chosen-container"> <div class="chosen-swiper"> < ...

  6. CSS+HTML实现移动端div左右滑动展示

    由于手机屏幕的宽度有限,内容太多移动设备一行装不下的,所以很多移动端网站的导航栏都有左右滑动效果,下面我就用CSS+HTML实现移动端div左右滑动展示. CSS:box设置文本不换行,子元素box1 ...

  7. CSS Sprites (CSS图像拼合技术)教程工具

    什么是CSS Sprites? “Sprite”(精灵)这个词在计算机图形学中有它独特的定义,由于游戏.视频等画质越来越高,必须有一种技术可以智能的处理材质和贴图,并且要 同时保持画面流畅.“Spri ...

  8. CSS Sprites(CSS图像拼合技术)教程、工具集合

    本集合是有一位国外设计师收集整合,并由 oncoding翻译成中文的,感谢他们的辛苦贡献.CSS Sprites技术在国外并不是什么新技术,只不过近两年(尤其08年开始)中国开始流行这个词,大家也开始 ...

  9. 【Python全栈-CSS】CSS入门

    CSS入门教程 参考: http://www.cnblogs.com/yuanchenqi/articles/5977825.html http://www.ruanyifeng.com/blog/2 ...

随机推荐

  1. python全栈学习 day02

    pycharm 安装设置: 按照百度百科或者官网介绍下载,安装. 激活步骤 1:改host 2.输入激活信息,注意有效期. python 逻辑运算符://返回的均为bool值 与 and A and ...

  2. Tomcat 后台war部署上传shell

    tomcat的后台登录的两个目录为: /admin /manager/html 如果版本过高,只有采用弱密码的方式进后台: 有些tomcat采用默认的用户名和密码(用户名:admin,密码:空): 或 ...

  3. IO流学习之字节流(二)

    字节流缓冲区: 1.BufferedInputStream 构造函数(以字节流为基础进行操作): 常用方法: 代码实例: package InputOutput; import java.io.Buf ...

  4. Redis可能出现的问题

    缓存穿透 一般出现这样的问题,是因为当我们查询一条肯定不存在的数据的时候,缓存中没有,就会透过缓存来查询数据库,数据库也不存在,这样就不会将值保存在缓存中,最后还是缓存和数据库中都没有,如果一直访问这 ...

  5. 替换 MyEclipse 中已有的项目

    一.删除 tomcat 中的项目 1.停止 tomcat 2.删除 tomcat 中的项目 选中项目,然后右键 - Remove deployment,这个可能需要一点时间 二.删除 MyEclips ...

  6. nat123+nginx实现外网访问本机IIS发布的系统

    故事开端(前因) 嗯,内网其实是校园网络,服务器呢,不是阿里云.腾讯云之类的云服务器,而是自己正在码字的笔记本电脑:有公网IP吗?没有!校园IP分配的IP固定不?不固定,动态分配的,额~~~. 我想想 ...

  7. C#中怎样获取System.Drawing.Color的所有颜色对象并存到数组中

    场景 需要在生成一组多条曲线时,随机从一颜色数组中取颜色,至少一百种颜色以上. 而System.Drawing.Color自带140多种颜色 那么怎样将其自带的颜色对象取出并存在数组中. 注: 博客主 ...

  8. oracle建数据库

    oracle用户界面登陆 用户要切换到oracle sqlplus / as sysdba //sys用户是oracle的最高管理员所以要加上as help index //查看命令列表,sql中不区 ...

  9. 跳表的java实现,转载自网络,仅供自己学习使用

    文档结构: 1.代码结构 2.代码实现 1.代码结构 节点类: String key 键值 对跳跃表的操作都是根据键值进行的 Int value  实际值 Node  up,down,left,rig ...

  10. 深信服SCSA

    最近应公司要求报了SCSA课程,老师讲解的可谓是非常的专业以及详细,不止深信服产品及其配置,还有VPN,网络基础的原理介绍等等,产品不用说,工作中会遇到,能学即学.最好的要数网络发包原理,建立连接等底 ...