【发布时间】:2014-07-28 23:50:51
【问题描述】:
我构建 HTML/CSS/JS 菜单并希望将箭头向右对齐以指示该元素是子菜单。
我的问题是 Firefox 三角形(“▶”符号)显示在下一行而不是当前行...
Chromium 显示两种情况都很好。
防弹少年团有BUG和我的情况类似:
我尝试了 2 种策略,这是我的 HTML 结构:
<div class="name1">Submenu 1<span class="sub">▶</span></div>
<a href="#">Item 1</a>
<a href="#">Item 2</a>
<div class="name2">Submenu 2</div>
<a href="#">Item 1</a>
<a href="#">Item 2</a>
这是我的 CSS 显示的问题:
a, .name1, .name2 {
display: block;
white-space: nowrap;
}
.name1 > .sub {
float: right;
}
.name2:after {
content: "▶";
float: right;
}
JS Fiddle 用于游乐场。
我记得我读过代码,其中margin-right: -16px 或类似的与背景图像或其他东西一起使用以进行此类设计,但我不记得具体是如何设计的。
可能的解决方法是什么?
更新我制作more complete example,HTML:
<div class="container">
Top level menu
<div class="box">
<div class="name1">Very long submenu 1<span class="sub">▶</span></div>
<a href="#">Item 1 1 1</a>
<a href="#">Item 2</a>
<div class="name2">Very long submenu 2</div>
<a href="#">Item 1</a>
<a href="#">Item 2</a>
</div>
</div>
CSS:
a { border: green 1px dotted; margin: 2px; }
a, .name1, .name2 {
display: block;
white-space: nowrap;
}
.name1 > .sub {
display: inline-block;
float: right;
}
.name2:after {
content: "▶";
float: right;
}
.container {
display: inline-block;
background: gold;
position: relative;
}
.box { display: none; }
.container:hover > .box {
display: block;
position: absolute;
top: 100%;
}
【问题讨论】: