添加箭头儿童
链接下面是simpliest多级菜单的代码:添加箭头儿童
<nav>
<ul>
<li><a href="#">I am a 1st level link</a></li>
<li><a href="#">I am a 1st level link with children and I want to have an arrow next to me (or different background)</a>
<ul>
<li><a href="#">I am a 2nd level link</a></li>
<li><a href="#">I am a 2nd level link with children and I want to have an arrow next to me (or different background)</a>
<ul>
<li><a href="#">I am a 3nd level link</a></li>
<li><a href="#">I am a 3nd level link</a></li>
</ul>
</li>
<li><a href="#">I am a 2nd level link</a></li>
</ul>
</li>
<li><a href="#">I am a 1st level link</a></li>
<li><a href="#">I am a 1st level link</a></li>
</ul>
</nav>
有没有选择与孩子联系,并加入他们不同的样式(背景,列表样式类型的图标等的方法。)?菜单是动态的,因此在这种情况下给予ID或课程无济于事。
我很想在CSS3中看到它,如果不可能的话 - jQuery或PHP会好的。我希望它能够跨浏览器准备好。但目前甚至不知道从哪里开始?
非常感谢!
:only-child
假选择器选择它们父代的唯一子元素。你可以在CSS3中使用这个来设计元素而不用箭头,用箭头覆盖那些。您可以使用例如主要选择器的:first-of-type
假选择器试图阻止不支持:only-child
的浏览器在所有元素上显示箭头。
例如:
nav ul a:first-of-type {
/* :first-of-type for CSS3-incompat browsers; can be safely removed */
/* Apply arrow code */
background: ...;
}
nav ul a:only-child {
/* Undo arrow code above */
background: transparent;
}
:独生子和:第一类型选择器将在5年左右(当IE8掉落时)成为跨浏览器。 – 2010-11-16 00:20:40
@ŠimeVidas,OP提到了CSS3并使用了HTML5;我真的怀疑他们想要完美的IE兼容性。在我的例子中,使用':first-of-type'的目的是*防止*旧的浏览器发生意外。 – strager 2010-11-16 00:23:10
@stranger OP提到了“跨浏览器就绪”。 IE6与IE8的合并市场份额目前要大到无视。 – 2010-11-16 00:38:14
这可能让你去:
$('li>a')
.filter(function(){
return $(this).next().is('ul') ? true : false;
}).addClass('haveChild');
这似乎使用jQuery ...你可以定制专班为背景图像的错误工作或任何你想要的....
<script>
$(document).ready(function(){
$('ul a + ul').each(function(){
$(this).prev().addClass('special');
});
});
</script>
<style type="text/css">
.special {background-color: red;}
</style>
+1 - 尽管你可以缩短到'$('ul a + ul')。prev()。addClass('special'); – user113716 2010-11-16 00:58:13
您是否需要支持IE6? – 2010-11-16 00:21:29