参考微信的京东客户端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. vs2013怎么打开vs2010的解决方案

    1.直接用vs2013打开解决方案的sln文件,vs会自动进行转换的2.或者你用记事本的方式打开sln文件 将版本号改一下Microsoft Visual Studio Solution File, ...

  2. 金旭亮老师的Scoekt编程摘要

    Socket提供了众多的属性,还提供了SetSocketOption方法来设置各种选项,对.NET网络应用程序的数据通讯进行“微调”.    Socket的功能出奇地强大,在.NET平台上,它支持以下 ...

  3. Linux 网络编程详解十

    select int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *tim ...

  4. JMS + jboss EAP 6.2 示例

    .Net中如果需要消息队列功能,可以很方便的使用微软自带的MSMQ,对应到Java中,这个功能就是JMS(Java Message Service). 下面以Jboss EAP 6.2环境,介绍一下基 ...

  5. Javascript中的循环变量声明,到底应该放在哪儿?

    相信很多Javascript开发者都在声明循环变量时犹豫过var i到底应该放在哪里:放在不同的位置会对程序的运行产生怎样的影响?哪一种方式符合Javascript的语言规范?哪一种方式和ecma标准 ...

  6. Scala入门之控制结构

    package com.dtspark.scala.basics /** * Scala中的基本控制结构有顺序.条件和循环三种方式,这个其它的JVM语言是一致的,但是Scala也有一些高级的流程控制结 ...

  7. fdisk分区硬盘并shell脚本自动化

    最近工作需要用到对硬盘进行shell脚本自动化分区和mount的操作,google了一些资料,下面做个总结. 如果硬盘没有进行分区(逻辑分区或者扩展分区,关于两者概念,自行google),我们将无法将 ...

  8. JavaScript学习笔记-商品管理新增/删除/修改功能

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  9. 使用while循环输入 1 2 3 4 5 6 8 9 10

    n = 1 while n<11: if n==7: pass else: print(n) n = n +1

  10. 对C语言中指针的一些新认识

    学C语言这么久了,才发现指针不是想象中那么简单,当初根本就没理解指针怎么用! 变量--是由操作系统自动分配存储空间的    指针--手动分配存储空间或指向已有变量的地址 指针中的内容需要手动释放,而变 ...