如何在Safari手机(iPad)上正确滚动?

时间:2014-05-15 09:56:26

标签: html ios css

我需要以简单的方式处理水平和垂直滚动,一般适用于Safari移动设备,而且特殊适用于iPad。

我有一个非常简单的HTML / CSS框架,我想保持简单描述如下。

找到related fiddle here

水平滚动

不幸的是,这需要我根据内容计算卷轴的宽度。有自动方式吗?

HTML如下:

       <div class="scrollerContainer hScrollable">
            <div class="scroller">
                <div id="photo1"></div>
                <div id="photo2"></div>
                <div id="photo3"></div>
                <div id="photo4"></div>
                <div id="photo5"></div>
                <div id="photo6"></div>
                <div id="photo7"></div>
                <div id="photo8"></div>
                <div id="photo9"></div>
            </div>
        </div>

相关的CSS如下:

.hScrollable {
    overflow-x: scroll;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    white-space:nowrap;
}

scrollerContainer {
    -webkit-box-sizing: border-box;
    width: 100%;
    height: 50px;
    margin: 0;
    border: solid 1px black;
}
.scroller {
    -webkit-box-sizing: border-box;
    margin: 0;
    padding: 4px;
    white-space: nowrap;
    overflow: hidden;    /* Really important to avoid vertical scrolling on devices */
    width: 100%;
    height: 50px;
    background-color: lightgray;
}

.scroller>div {
    width: 50px;
    height: 50px;
    display: inline-block;
}

垂直滚动

我想要填充父容器的内容,并且超出垂直尺寸,垂直滚动。

HTML如下:

<div id="container" style="height:400px">

        <div style="height:100px">
           Fixed content, I dont want to vscroll
        </div>
        <div class="tabContent">
           Potentially long content that should vscroll. 
           This div should fill to the end of the container. 
           I don't want to set its height to 300px, 
           but to find a way it does automatically. 
        </div>

</div>

1 个答案:

答案 0 :(得分:1)

你在那里发生了太多的麻烦。我用我移动/删除的属性更新了你的小提琴。

我从css中删除了.hScrollable.scrollerContainer,并将溢出属性添加到.scroller

所以.scroller现在看起来像这样:

.scroller {
    -webkit-box-sizing: border-box;
    margin: 0;
    padding: 4px;
    width: 100%;
    background-color: lightgray;
    overflow-x: scroll;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    white-space:nowrap;
}

这是the fiddle