参考微信的京东客户端http://wqs.jd.com/,实现DIV的横排滚动,且支持手势,并且不会出现滚动跳,效果如下:

但是观察其div结构是没有使用任何JS去实现。

一、实现上DIV的横排

观察其结构发现,使用了white-space: nowrap;这个属性,叫做文本排列方向,参考:http://www.w3school.com.cn/cssref/pr_text_white-space.asp

如果我们要实现这样的方式,有如下方案:

1、最外层的DIV设置成固定的宽度,一定是比屏幕大很多,然后DIV内的字块,使用float:left进行向左横排。

2、使用JS插件,动态计算最外层要用多少DIV,然后进行第一种的操作。

二、实现横向滚动

也是观察其结构发现,只使用了overflow-x: auto;这个属性,就能进行横向滚动,包括手势。

但是奇怪的是,在京东的客户端上滚动的时候是没有滚动条了,而如果单独用上面的属性是会出现横向滚动跳的。

再次分析其css文件,发现使用了.home_seckill_content::-webkit-scrollbar{width:0;height:0;display:none;}的属性,::-webkit-scrollbar属于一个伪类,在webkit内核浏览器上特有。

参考:

https://zhidao.baidu.com/question/1670525736805449387.html

http://www.jb51.net/css/155135.html

http://www.xuanfengge.com/css3-webkit-scrollbar.html

那么如果我们要在常规的浏览器上实现既能滚动又隐藏滚动条的效果时,思路如下:

1、定两个DIV,大的DIV包小的DIV,然后小DIV的设置宽或高大于大的DIV,且小的div设置可以滚动overflow:auto,而大的DIV设置滚动条隐藏overflow:hidden。

参考:

http://blog.csdn.net/liusaint1992/article/details/51277751

以上是纯div+css去实现滚动条隐藏的效果,如果是以前的方案,即使使用第三方的JS插件去实现,在移动端再配合移动端事件来去实现。

然后再观察京东的滚动,发现还加入了-webkit-overflow-scrolling : touch;这样的一个事件。这个事件是为了达到在Safari快速滚动和回弹的效果。

参考:

http://blog.csdn.net/hursing/article/details/9186199

http://www.111cn.net/cssdiv/css/108397.htm

white-space:nowrap;与display: inline-block;的选择:

经过测试white-space:nowrap;是针对文本,比如a,span这些标签,用这个属性可以实现一行。而京东上面的html布局已经是a抱歉包裹这span标签,所以符合。

display: inline-block;这个主要是针对div去实现,而对于a,span这些标签无效。

float:left也是针对div去实现,对于a,span这些标签无效。

DIV横排/竖排滚动(white-space/::-webkit-scrollbar的使用技巧以及display: inline-block的选择)支持手势的更多相关文章

  1. js控制div滚动条,滚动滚动条使div中的元素可见并居中

    1.html代码如下 <div id="panel"> <div id="div1"></div> <div id=& ...

  2. jquery鼠标移动div内容上下左右滚动

    jquery鼠标移动div内容上下左右滚动 点击这里查看效果:http://keleyi.com/keleyi/phtml/jqtexiao/9.htm <!DOCTYPE html PUBLI ...

  3. 如何通过JQuery将DIV的滚动条滚动到指定的位置

    这里有一个方法可以将DIV的滚动条滚动到其子元素所在的位置,方便自动定位. var container = $('div'), inner = $('#inner'); container.scrol ...

  4. All about Div内显示滚动桥

    Div内显示滚动桥看似是一个简单的前端问题,然而实际会发现还是有挺多需要注意的, 本文尝试对div内显示滚动桥的各种主要实现及一些难题进行研究. 横向滚动桥 横向滚动桥比较简单,无需设置宽度,直接ov ...

  5. jquery控制div随滚动条滚动效果

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jquery div随滚动条 ...

  6. dom4j解析xml报错:Nested exception: org.xml.sax.SAXParseException: White space is required between the processing instruction target and data.

    采用dom4j方式解析string类型的xml xml:        String string="<?xmlversion=\"1.0\" encoding=\ ...

  7. 设置DIV随滚动条滚动而滚动

    有段时间没有碰Web端了,最近做了个功能,需要做个DIV随滚动条滚动而滚动,mark一下: 源码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  8. div横排放置对齐问题;block,inline,inline-block区别

    1.左右两个div都设置为float:left,如果右边div没有设置宽度,右边div的宽度会根据div里的内容自动调整. 缺点:不易控制 2.只有左侧div设置为float:left,右侧div设置 ...

  9. <div>里用display:block有用么?

    对所有的块元素都没有意义,块元素的dispaly属性默认值为block,没必要再显式定义--除非你之前对块元素的display属性重新定义过. =========================== ...

随机推荐

  1. Linux 网络编程详解五(TCP/IP协议粘包解决方案二)

    ssize_t recv(int s, void *buf, size_t len, int flags); --与read相比,只能用于网络套接字文件描述符 --当flags参数的值设置为MSG_P ...

  2. Java应用程序项目的打包与发行(run.bat形式)

    参考: http://www.iteye.com/topic/57312 背景: 以前一直都是在eclipse上面创建应用程序,每次要要运行的时候都要打开eclipse, 直到有个同事叫我帮忙写一个应 ...

  3. 【Alpha版本】十天冲刺集结令

    031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬涛 [Alp ...

  4. [转]Android Studio创建Xposed模块项目时BridgeApi的正确添加方式

    使用Android Studio创建的空项目作为Xposed Module App,对于Api Jar包的引用方式,一开始是按照傻瓜式Jar Lib的处理方式,复制XposedBridgeApi-54 ...

  5. UWP 拉勾客户端

    前些天, 用 Xamarin.Forms (XF) 将就着写了个拉勾的 UWP 和 Android 的客户端. XF 对 Android  和 IOS 的支持做的很到位, 但是对 UWP 的支持目前仅 ...

  6. 使用markdown编辑evernote(印象笔记)的常用方法汇总

    原文发表在我的博客主页,转载请注明出处 前言 正所谓工欲善其事,必先利其器,本文将要介绍的evernote和markdown都是程序员必备的工具 虽然国内现在有了很多evernote的替代品,做的比较 ...

  7. Markdown会干掉Html吗?

    Markdown会干掉Html吗? 很明显,MarkDown正在已一种比病毒还快的速度传播着,量子的机器人语言也是深受其启发,当然了,在这个东西没搞出来之前,MarkDown就能干很多事情,比如在线编 ...

  8. xml序列化及反序列化.net对象

    序列化一个类通常添加[XmlRoot("根节点名字")] 找到要序列化的内容 对要序列化的类添加 [Serializable]属性用于序列化 对于要序列化的字段添加  [XmlEl ...

  9. codevs 4543 treap 模板

    type rec=record lc,rc,v,rnd,size,w,fa:longint; end; var n,root,tot,ans,opt,x,i,po:longint; tr:array[ ...

  10. 发短信的简单实现——C#版

    为了验证操作人的身份,界面中通常会有获取验证码的功能.及点击获取验证码就会往你输入的手机号里面发送一条短信进行验证. 最近公司给我的任务中也包含这个功能,那么接下来就让我讲解下. ---------- ...