将插入符号定位在 Bootstrap 下拉按钮中

Posted

技术标签:

【中文标题】将插入符号定位在 Bootstrap 下拉按钮中【英文标题】:Position the caret in Bootstrap dropdown button 【发布时间】:2017-04-22 19:29:43 【问题描述】:

我想修改 Bootstrap 下拉按钮,以便在填充后将插入符号从按钮宽度的计算中移出。换句话说,我想通过在每一侧提供相等的填充来使按钮中的文本“居中”,但下拉插入符号仍然在右侧。

我尝试了几件事,包括在按钮上使用相对定位(根本不起作用)和绝对定位(部分起作用但失去垂直定位/居中)。

此外,还有几件事让这变得更棘手:

有些下拉菜单没有文字,只有一个图标 使用 Font Awesome 添加图标(使用 :before 元素/选择器)

示例 HTML:

<div class="btn-group"
    <button type="button" class="btn btn-default dropdown-toggle fa fa-download">
        <span class="caret"></span>
    </button>
    <button type="button" class="btn btn-default fa fa-envelope"></button>
</div>

<div class="btn-group">
    <button type="button" class="btn btn-default dropdown-toggle">
        More <span class="caret"></span>
    </button>
</div>

正如您在“正确”示例中所见,插入符号不再影响按钮的宽度(而是在“内部”按钮的填充,如粉红色线条所示)。有谁知道这怎么可能?谢谢!

更新:

感谢@Dekel 的回答(稍作调整以适应我的需要并适用于两种类型[只有图标的和有文本的]):

/* I also removed the space in the html before the caret, which is where "top" comes in */
.btn.fa .caret 
    left: 5px;
    position: absolute;
    top: calc(50% - 1px);

.btn .caret 
    position: absolute;
    top: calc(50% - 1px);
    right: -12px;

Codepen Example

【问题讨论】:

你能举个例子吗? (jsfiddle/sn-p/codepen) @Dekel 谢谢,我忘了把它添加到原始消息中。 【参考方案1】:

我几乎可以肯定这就是您要找的东西:

.btn .caret 
    position: absolute;
    top: calc(50% - 1px);

请检查并告诉我。 第二个按钮块没有插入符号作为宽度计算的一部分。我在容器中添加了另一个类来设置这些特定值:http://codepen.io/anon/pen/aBGrWW

【讨论】:

现在这似乎对我有用,谢谢!我删除了在 HTML 中添加的空间,而是使用left: 来补偿(更干净)。 .btn.fa .caret left: 5px; position: absolute; top: calc(50% - 1px); .btn .caret right: -12px; position: absolute; top: calc(50% - 1px); 【参考方案2】:

如果您将position: absolute; 应用于插入符号,它将不再影响文本的位置。然后,您可以使用 righttop 属性将插入符号定位在您希望它在填充内显示的位置。

例子:

.btn .caret 
    position: absolute;
    right: 10px;
    top: 10px;

注意:确保按钮不是 position: static,以便插入符号锚定到按钮(即设为 position: relative;)。

【讨论】:

感谢您的回复。我认为top: calc(50% - 1px); 在个人方面比top: 10px; 更干净(并且响应更快),特别是如果我们将来更改按钮/行高/填充。

以上是关于将插入符号定位在 Bootstrap 下拉按钮中的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 导航栏下拉菜单定位

twitter bootstrap问题:右对齐下拉标题中的插入符号

如何在 Bootstrap 中将单个下拉菜单附加到正文

Bootstrap 4 Dropdown Navbar 使用 Plus 和 Minus Fontawesome 5 更改插入符号

Bootstrap 3 <select> 将下拉箭头向左移动并更改其块的颜色

使用三点跨度触发 DropDown