145
125

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOS Safari で絶対位置指定された要素のスクロールが出来ない件

Last updated at Posted at 2015-02-26

表題の件にハマりました。

例えばページ上にレイヤーを重ねて、一覧から項目を選択させるような場合に、絶対位置指定した要素の中でスクロールさせたいことってありますよね?

このとき、次の条件を満たしてしまうと iOS Safari でスクロールできなくなってしまいます。

  • position プロパティに absolutefixed を指定している(絶対位置指定)
  • height プロパティと overflow プロパティを使って要素内スクロールさせようとしている
  • -webkit-overflow-scrolling プロパティに touch を指定している

ちなみに最後の -webkit-overflow-scrolling ですが、これを指定しない場合スクロールは一応できるものの、滑りが悪くて壊滅的に操作性が悪いです。

コード例(抜粋)
.list
{
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    height: 100%;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}
コード例(抜粋)
<div class="list">
    <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
    (中略)
    <div class="item">item22</div>
</div>

この現象を回避するためには position プロパティを指定する要素と overflow プロパティを指定する要素を変えて上げればOKです。

コード例(抜粋)
.list
{
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    height: 100%;
}

.list-content
{
    height: 100%;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

コード例(抜粋)
<div class="list">
    <div class="list-content">
        <div class="item">item1</div>
        <div class="item">item2</div>
        <div class="item">item3</div>
        (中略)
        <div class="item">item22</div>
    </div>
</div>
145
125
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
145
125

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?