2013-05-14 81 views
6

我试图将一些图标添加到引导程序下拉菜单中(请参见下面的提琴) 正如您可以看到图标被添加,但它会将这些图标推到右侧,菜单项目不再与其他项目对齐。将图标添加到引导程序下拉菜单项

什么是适当的方法来做到这一点?

enter image description here

js fiddle

<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> 

+0

我发布了一个答案,但重新阅读你的问题后,也许我没有回答你的问题。我不明白 - 右边有什么动作?你在说下拉图标吗?我的小提琴没有看到任何图标。 –

+0

我已添加图片以显示我的意思 - 谢谢 –

+0

我没有在您的小提琴上看到该复选框?我不会用''标签来做。在我的例子中使用背景图像,它不会重新定位文本。我手动将文本移动5个像素,但是如果您从我的答案中删除了“填充左侧”,它将不会移动... –

回答

0

这将工作。不幸的是,您似乎需要在背景图片上使用!important,这通常是最好避免的。请注意,某些较旧的浏览器不支持该类型。

@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/

17

以下是我在引导3.x中这样做:

Menu with icon

标记:

<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; 
} 

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

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