我正在尋找基於單擊的單選列表。而不是普通的下拉列表,我想要一個覆蓋菜單(類似於我們在Facebook上看到的,當我們更改隱私設置時,出現的單個選擇列表)。是基於CSS還是任何代碼示例來創建類似的列表?我發現網上的所有列表都與我們在f/b上看到的懸停列表不同。CSS單選列表示例
謝謝。
事情是這樣的:
我正在尋找基於單擊的單選列表。而不是普通的下拉列表,我想要一個覆蓋菜單(類似於我們在Facebook上看到的,當我們更改隱私設置時,出現的單個選擇列表)。是基於CSS還是任何代碼示例來創建類似的列表?我發現網上的所有列表都與我們在f/b上看到的懸停列表不同。CSS單選列表示例
謝謝。
事情是這樣的:
它只是彈出一個菜單,使用可以選擇的選項。
如果你使用jQuery它會是這樣的插件 http://plugins.jquery.com/project/selectbox
我無法找到一個非JS-溶液(和JS我使用jQuery分配focus
到任意元素這將保持子菜單打開(從好的一面來說,我敢肯定Facebook會使用某種類型的JavaScript來實現它們的實現)
但是,我把一個幾個例子,這些很像Facebook,只是下拉列表,用JavaScript處理程序將focus
分配給點擊的元素(以保持子無論鼠標在頁面上的位置如何,菜單都會打開,直到用戶點擊其他地方)。
考慮到這一點,我已經使用了標準的CSS下拉式加價:
<ul>
<li><a href="#">Symbol</a>
<ul>
<li>option 1</li>
<li>option 2</li>
<li>option 3</li>
</ul>
</li>
<li><a href="#">Symbol</a>
<ul>
<li>option 1</li>
<li>option 2</li>
<li>option 3</li>
</ul>
</li>
<li><a href="#">Symbol</a>
<ul>
<li>option 1</li>
<li>option 2</li>
<li>option 3</li>
</ul>
</li>
</ul>
用CSS:
ul {
list-style-type: none;
padding: 0;
margin: 0 auto;
}
ul li {
display: inline-block;
position: relative;
width: 100px;
border-bottom: 1px solid #ccc;
}
ul li ul {
display: none;
width: 100%;
position: absolute;
top: 1em;
left: 0;
}
ul li a:hover + ul,
ul li a:active + ul,
ul li a:focus + ul {
display: block;
}
ul li ul li {
border: 0 none transparent;
}
而jQuery的:
$(document).ready(
function() {
$('li a').click(
function(){
$(this).focus();
});
}
);
請注意,我已經使用了a
元素,因爲focus
比普通元素更容易分配給錨點,在這種情況下,li
元素更容易分配給錨點。然而第二個版本,具有相同的最終結果是具有以下的jQuery實現:
$(document).ready(
function() {
$('li').click(
function(){
$('li').not(this).removeAttr('tabindex');
$(this).attr('tabindex','-1').focus();
});
}
);
斯圖尼科爾斯的CSS Play似乎已經實現了這一個純CSS的解決方案(with a gallery),但我還沒有我的工作方式,通過他的CSS怎麼看他做到了。
謝謝,我會玩弄它,看看它是如何工作的。 – Tony 2010-10-29 16:30:22
不用擔心,你很歡迎=) – 2010-10-29 16:34:46
您的意思是:[Facebook privacy-settings截圖](http://image.bayimg.com/naaoiaadc.jpg)?如果你這樣做,那麼這不是一個'select'列表,更多的是標籤導航效果。 – 2010-10-29 15:34:49
純CSS AFAIK無法實現基於點擊的選擇列表。 – 2010-10-29 15:35:04
沒有沒有。當我們將更新(或者如果您點擊自定義設置)從「每個人」到「朋友之友」更改爲「僅限朋友」時,我們從哪裏更改隱私設置的列表。 – Tony 2010-10-29 15:45:50