我有一个简单(外观)菜单的概念,它使用 only CSS 扩展和缩回子菜单。
这是概念化的:
<ul>
<li><a href="#">home</a></li>
<li><a href="#">main one</a>
<ul>
<li><a href="#">sub one</a></li>
<li><a href="#">sub two</a></li>
<li><a href="#">sub three</a></li>
</ul>
</li>
<li><a href="#">main two</a>
<ul>
<li><a href="#">sub one</a></li>
<li><a href="#">sub two</a></li>
</ul>
</li>
<li><a href="#">main three</a></li>
</ul>
我已经使用嵌套的无序列表编写了上面的基本框架(忽略了类,id,管道符号等缺少),但是我无法保持内联的所有内容。所有列表都是list-style-type: none
,所有列表项都会向左浮动。
另外,我不知道如何防止自动换行,以便将整个列表项整体移动到一个新行,而不是一分为二。
此外,我可以将什么属性与transition属性结合使用,以便在鼠标单击时滑出嵌套列表?
答案 0 :(得分:2)
我可以想到两种方法:
1。使用a:focus + ul
(IE a:active + ul
)点击扩展菜单。
优点:
tabindex='1'
添加到您想要在点击时触发操作的链接(如展开的子菜单)缺点:
工作原理:
a:focus
选择具有焦点的链接(链接在点击后获得焦点并保持焦点,直到点击其他内容)a:focus + ul
选择无序列表(ul
),它是具有焦点的链接的兄弟(在这种情况下被点击后)并且紧跟在它之后(=之间没有其他元素)他们在HTML中 - 请参阅:adjacent sibling combinator a:focus + ul li
选择作为上述无序列表后代的列表项a:focus + ul a
选择上述无序列表后代的链接2。使用复选框hack。
优点:
缺点:
工作原理:
input[type=checkbox]:checked
选中已选中的复选框;这里隐藏了复选框(在其上设置display: none
),但点击label
会选中id
与for
属性的值相同的复选框已点击的label
; input[type=checkbox]:checked ~ ul
选择无序列表,该列表是已选中复选框的兄弟(不一定相邻) - 请参阅:general sibling combinator 答案 1 :(得分:0)
将主要一个孩子设为
display:none;
并悬停在主要的
上将它们设置为
display:block;