2016-11-14 81 views
0

的默認對齊我做了一個簡單的CSS-只有下拉菜單如下面的代碼片段:更改下拉菜單列表

.menu-container { 
 
    width: 60px; 
 
    float: right; 
 
    border: 1px solid #999 
 
} 
 

 
.menu-container .menu { 
 
    display: none; 
 
    list-style: none; 
 
    position: absolute; 
 
    min-width: 80px; 
 
    margin: 0; 
 
    padding: 0 
 
} 
 

 
.menu-container:hover .menu, 
 
.menu-container .menu:hover { 
 
    display: block 
 
} 
 

 
.menu-container .menu li { 
 
    border: 1px solid #999; 
 
    text-align: right 
 
}
<div class="menu-container"> 
 
    Go to... 
 
    <ul class="menu"> 
 
    <li> 
 
     <a href="#">Item #1</a> 
 
    </li> 
 
    <li> 
 
     <a href="#">Item #2</a> 
 
    </li> 
 
    <li> 
 
     <a href="#">Item #3</a> 
 
    </li> 
 
    </ul> 
 
</div>

這將是右對齊接近的右邊緣頁。我想列表項對齊到列表標題的右側「轉到...」,像下面的圖片:

enter image description here

應該與列表項的文本長度增長到左。這將避免橫向滾動,但我無法弄清楚如何實現它。請注意,如果需要,可以更改菜單html結構,而不會出現問題。

任何幫助將不勝感激。

回答

1

right財產給.menu元素。

像:

.menu { 
    right: 8px; 
} 

.menu-container { 
 
    width: 60px; 
 
    float: right; 
 
    border: 1px solid #999 
 
} 
 

 
.menu-container .menu { 
 
    display: none; 
 
    list-style: none; 
 
    position: absolute; 
 
    min-width: 80px; 
 
    margin: 0; 
 
    padding: 0; 
 
    right: 8px; 
 
} 
 

 
.menu-container:hover .menu, 
 
.menu-container .menu:hover { 
 
    display: block 
 
} 
 

 
.menu-container .menu li { 
 
    border: 1px solid #999; 
 
    text-align: right 
 
}
<div class="menu-container"> 
 
    Go to... 
 
    <ul class="menu"> 
 
    <li> 
 
     <a href="#">Item #1</a> 
 
    </li> 
 
    <li> 
 
     <a href="#">Item #2</a> 
 
    </li> 
 
    <li> 
 
     <a href="#">Item #3</a> 
 
    </li> 
 
    </ul> 
 
</div>

希望這有助於!

+0

這是一快一!它在我的原始代碼中工作爲'right:0px'。謝謝!! – DontVoteMeDown

+1

@DontVoteMeDown它是我的榮幸!如果這對你有用,請接受答案。 –

+0

需要注意的是,在這個解決方案中,父元素仍然是未定位的,因此將'.menu-container'放在網站的另一個地方可能會有令人驚訝的(並且可能是不需要的)結果。 – connexo

1

首先(如果這是打算)我建議你給.menu-container { position: relative; }所以.menu的位置與此有關。完成後,只需添加.menu { right: 0; }即可使其向左增長。

就像一個旁註:它被廣泛認爲是在CSS聲明塊中最後一個聲明之後省略分號的錯誤做法(儘管有效)。

.menu-container { 
 
    width: 60px; 
 
    float: right; 
 
    border: 1px solid #999; 
 
    position: relative; 
 
} 
 

 
.menu-container .menu { 
 
    display: none; 
 
    list-style: none; 
 
    position: absolute; 
 
    min-width: 80px; 
 
    margin: 0; 
 
    padding: 0; 
 
    right: 0; 
 
} 
 

 
.menu-container:hover .menu, 
 
.menu-container .menu:hover { 
 
    display: block; 
 
} 
 

 
.menu-container .menu li { 
 
    border: 1px solid #999; 
 
    text-align: right; 
 
}
<div class="menu-container"> 
 
    Go to... 
 
    <ul class="menu"> 
 
    <li> 
 
     <a href="#">Item #1</a> 
 
    </li> 
 
    <li> 
 
     <a href="#">Item #2</a> 
 
    </li> 
 
    <li> 
 
     <a href="#">Item #3</a> 
 
    </li> 
 
    </ul> 
 
</div>

+0

好的提示!實際上,'position:relative'在我的原始代碼中不起作用 - 它與我在這裏發佈的這個略有不同。菜單位於標題中,因此列表應顯示在* Go to ... *標題下方。使用'position:relative',它會拋出標題,就像*裏面的'li'內容,而不是外部。我不確定我是否清楚。但無論如何,你的答案與這個問題有關。 – DontVoteMeDown

+0

[這](https://i.stack.imgur.com/U5AM9.png)就是我的意思。 – DontVoteMeDown

+1

您不必使用'position:relative;','position:absolute;'也可以使子元素的絕對位置與父元素相關。 'position:fixed;'也會創建關係,它不能是'position:static;'這實際上是默認的,並且被稱爲* unpositioned *。由於你的代碼不包含'.menu-container'的任何偏離位置,我假設它將是'position:static;'按照默認設置,並且想要指出父級的定位對於兒童的絕對定位是必不可少的。 – connexo