[問題] 下拉式選單捲軸

作者: yoshjibo (阿阿..會不會死掉)   2014-10-27 17:24:13
先附上code
HTML:
<ul class="navigation">
<li><a href="#">請選擇</a>
<ul style="width: 200px; height: 100px; overflow-x:hidden;overflow-y:auto">
<li><a href="#">第一層大類A</a>
<ul>
<li><a href="#">第二層小類1</a></li>
<li><a href="#">第二層小類2</a></li>
<li><a href="#">第二層小類3</a></li>
<li><a href="#">第二層小類4</a></li>
</ul>
</li>
<li><a href="#">第一層大類B</a><li>
<li><a href="#">第一層大類C</a><li>
<li><a href="#">第一層大類D</a><li>
</ul>
</li>
</ul>
CSS:
<style type="text/css">
body, ul.navigation, ul.navigation li, ul.navigation ul, a{
margin: 0;
padding: 0;
font-size: 12px;
text-decoration: none;
}
ul.navigation,ul.navigation li {
list-style: none;
}
ul.navigation li {
position: relative;
float: left;
}
ul.navigation li a
{
width: 200px;
display: block;
padding: 1px 2px;
background: #fff;
color: black;
z-index:1;
}
ul.navigation > li > a{
border-bottom: 1px solid #CCC;
border-left: 1px solid #CCC;
}
ul.navigation > li > a:hover{
color: #666;
background: #DDD
}
ul.navigation li ul{
display: none;
float: left;
position: absolute;
left: 0;
margin: 0;
z-index:2;
}
ul.navigation li:hover > ul{
display: block;
}
ul.navigation ul li {
border-bottom: none;
}
ul.navigation ul li:last-child {
border-bottom: none;
}
ul.navigation ul a {
width: 200px;
padding: 1px 2px;
color: #666;
background: #EEE;
z-index:3;
}
ul.navigation ul a:hover {
background: #CCC;
}
ul.navigation ul li:hover > ul{
display: block;
position: absolute;
top: 0;
left: 100%;
}
主要問題是因為第一層數量很多
所以在ul 指定長寬跟overflow後出現y軸捲軸
結果出現一個問題
就是捲軸是出現了
但原本第二層的資料卻變成顯示在捲軸內
變成要拉捲軸才能看到"第二層"的資料
其實我是想要第一層選單可以多捲軸避免資料太長難閱讀
想要的效果是
第一層下拉用捲軸可找到想要的項目
滑鼠移過去後 第二層出現在上面顯示出來
現在好像變成被包在裡面了
請問哪邊出問題了 css接觸沒很久請多幫忙 再次感謝!!
***
我放到jsfiddle了
這是沒在ul裡面加style的正常的情況
http://jsfiddle.net/yoshjibo/fgu2nd1y/1/
但這樣第一大類項目太多了
在ul加了style以後 出現捲軸了
但第二層卻被蓋住了
http://jsfiddle.net/yoshjibo/s5weanob/1/
感謝回覆 請再指點一下
***
找到解法
http://css-tricks.com/popping-hidden-overflow/
感謝
作者: leochen0818 (Leo)   2014-10-27 17:41:00
看無,有示意圖嗎?另外,要不要避免一下行內樣式?
作者: bbcust (bbcust)   2014-10-27 17:44:00
請丟fiddle
作者: leochen0818 (Leo)   2014-10-28 10:50:00
首先,是你自己說overflow-x: hidden的,下一層當然當然出不來,因為超過第一層寬度的都會被隱藏第二,如果拿掉overflow-x,你會發現下一層出來了,但是會出現橫向卷軸,因為也是你說overflow要AUTO的所以基本上,因為有overflow的關係,東西都會在第一層裡面,不會超出來,所以我個人覺得,解決辦法有二一是改HTML結構,二是改變想呈現的效果

Links booklink

Contact Us: admin [ a t ] ucptt.com