親 div をスクロール可能 (overflow:auto) にして、子 div をスクロールできないようにすることは可能ですか? いいえ、「position:fixed」はビューポートに固定されるため、使用できません。子 div を親 div に修正する必要があります。
コード例:
#pagecontainer {
overflow:auto;
width:1000px;
height:450px;
}
#pagecontainer>div{ /*each of the pages*/
margin-top:50px;
padding-left:50px;
padding-right:50px;
position:relative;
}
.unscrollable{
position:absolute;
width: 250px;
}
.scrollable{
margin-left:300px;
float:left;
}
HTML
<div id="pagecontainer">
<div id="page1">
<div class="unscrollable"> <!--UNSCROLLABLE-->
<a href="#page1" class="link">Link 1</a>
<p>
<a href="#page2" class="link">Link 2</a>
<p>
<a href="#page3" class="link">Link 3</a>
<p>
<a href="#page4" class="link">Link 4</a>
<p>
</div>
<div class="scrollable"> <!--SCROLLABLE-->
content content content
</div>
</div>
<div id="page2">
<div class="unscrollable"> <!--UNSCROLLABLE-->
<a href="#page1" class="link">Link 1</a>
<p>
<a href="#page2" class="link">Link 2</a>
<p>
<a href="#page3" class="link">Link 3</a>
<p>
<a href="#page4" class="link">Link 4</a>
<p>
</div>
<div class="scrollable"> <!--SCROLLABLE-->
content content content
</div>
</div>
</div>
子 div のみを作成することはできません.scrollable
overflow:auto
(実際には修正されます.unscrollable
)。これは、スクロールバーに 50px のマージンがあるため 50px のギャップがあり、.scrollable に対してのみスクロールするためです。スクロールバーをオンにする必要があります#pagecontainer
、または#page1
/#page2
も問題ありません。
また.unscrollable
外には出せません#pageX
。コードを整理する必要があるの.unscrollable
は、各ページのセクションです。.unscrollable
外部に置く場合#pageX
、各ページのスクロール不可の ID を作成する必要があります。つまり#unscrollable1
#unscrollable2
、そのページを表示したい場合は、単に ( ).fadeIn()ではなく ( #page1
, ).fadeIn() を呼び出します。それは信じられないほど厄介になります。つまり、肝心なのは、div の構造は変更できないということです。#unscrollable1
#page1
私が必要としているのは、( ).fixTo( ) のような css を.unscrollable
修正#pagecontainer
またはオーバーライドする javascript #page1
/ jQuery 関数です。#page2
.unscrollable
#pagecontainer