7

我正在尝试将一些图标添加到引导下拉菜单(请参见下面的小提琴),因为您可以看到添加了图标,但它会将菜单项推到右侧,并且该菜单项不再与其他项对齐。

这样做的适当方法是什么?

在此处输入图像描述

js小提琴

<div class="pull-left">
<div class="pull-right">
    <div class="btn-group">                 
            <a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
                <span>Actions</span>
                <span class="caret"></span>
            </a>
            <ul class="dropdown-menu">
                <li><a href="#"><i class="icon-ok"></i>Item 1</a></li>
                <li><a href="#">Item 2</a></li>
                <li><a href="#">Item 3</a></li>
                <li class="divider"></li>
                <li><a href="#">Item 4</a></li>
                <li><a href="#">Item 5</a></li>

            </ul>
        </div>
</div>

4

2 回答 2

17

以下是我在 Bootstrap 3.x 中的做法:

带图标的菜单

标记:

<ul class="dropdown-menu">
  <li><a href="#" class="icon"><span
         class="glyphicon glyphicon-user"></span>User Profile</a></li>
  <li><a href="#">Log Out</a></li>
</ul>

CSS:

.dropdown-menu a.icon {
  position: relative;
  padding-left: 40px;
}
.dropdown-menu a.icon .glyphicon {
  top: 6px;
  left: 10px;
  font-size: 18px;
}

关键是字形图标是绝对定位的,即使它们“包含”在<a>标记中,默认情况下定位是相对于整个菜单的。通过将.icon类添加到包含图标的每个菜单锚点,它允许您相对于该锚点进行定位,并填充锚点文本,以便图标有空间正确显示。正如您在上面看到的,任何不包含.icon类或字形图标的菜单项都将正常显示为文本链接。

如果原始问题中的意图是始终让文本垂直对齐图标,只需将填充移动到.dropdown-menu a.

于 2014-04-22T18:21:30.720 回答
0

这将起作用。不幸的是,您似乎需要!important在通常最好尽量避免的背景图像上使用。请注意,某些较旧的浏览器不支持 nth-of-type。

@import url('http://twitter.github.com/bootstrap/assets/css/bootstrap.css');

.container {
    margin-top: 10px;
}

/* First Menu Item */
.dropdown-menu li:nth-of-type(1) { 
    background-image: url("http://files.softicons.com/download/application-icons/32x32-free-design-icons-by-aha-soft/png/32/Color%20test.png") !important; 
    background-repeat: no-repeat;
    background-size: 16px 16px;
    background-position: 3px 5px;
    padding-left: 5px;
}

/* Second Menu Item */
.dropdown-menu li:nth-of-type(2) { 
    background-image: url("http://files.softicons.com/download/application-icons/32x32-free-design-icons-by-aha-soft/png/32/Color%20test.png") !important; 
    background-repeat: no-repeat;
    background-size: 16px 16px;
    background-position: 3px 5px;
    padding-left: 5px;
}

JS 小提琴:http: //jsfiddle.net/syVk8/

编辑:好的,经过一点澄清,事实证明你根本不希望文本转移。这是一个类似的示例,左侧没有填充,还有一个名为 'ok' 的类,您可以将其应用于不同的菜单项以添加复选框(或任何您的图标):

li.ok { 
    background-image: url("http://files.softicons.com/download/application-icons/32x32-free-design-icons-by-aha-soft/png/32/Color%20test.png") !important; 
    background-repeat: no-repeat;
    background-size: 16px 16px;
    background-position: 3px 5px;
}

JS 小提琴:http: //jsfiddle.net/syVk8/2/

于 2013-05-14T23:07:34.853 回答