【问题标题】:Add custom arrow to Zurb-Foundation drop-down buttons将自定义箭头添加到 Zurb-Foundation 下拉按钮
【发布时间】:2014-07-18 06:52:12
【问题描述】:

我使用 Zurb Foundation 样式和 Sass 混合创建了一个按钮。我使用@include dropdown-button($base-style:false); 摆脱了默认的箭头样式。现在我想在它的位置插入我自己的箭头(右侧)

这是默认按钮:

现在这是我的按钮:

我希望我的看起来像这样:

这是我的html:

<a class="login width-limit" href="#" data-dropdown="drop">Client_Test_1 </a><br>
      <ul id="drop" data-dropdown-content class="f-dropdown">
        <li><a href="#">Logout</a></li>
        <li><a href="#">Account Settings</a></li>
        <li><a href="#">Change SMTP Settings</a></li>
      </ul>

这是我的 scss:

.login {
  @include grid-column(2);
  @include button();
  @include dropdown-button($base-style:false);
  font-family: $font-stack;
  font-size: .9em;
  color: #fff;
  background-color: $secondary-color;
  height: 27px;
  border-radius: 7px;
  margin: 6px 0 5px 0;
  padding: 5px 4px 5px 4px;
}
.width-limit {
  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
  -moz-box-sizing: border-box;    /* Firefox, other Gecko */
  box-sizing: border-box;         /* Opera/IE 8+ */
  display: inline-block;
  white-space: nowrap; 
  overflow: hidden;
  text-overflow: ellipsis;
  padding-right: 2em; //shrink text 
}
.login:hover {
  background-color: $primary-color;
}

这是一个小提琴:http://jsfiddle.net/Yq5uU/

如何添加我自己的自定义箭头使其看起来像第三个示例? 提前致谢。

【问题讨论】:

  • 如果按钮的大小适合您的网格,是否使它们足够大以适合文本会使它们不再适合您的网格?
  • @cimmanon 是的,确实如此,也许有一种方法可以使按钮不属于顶部标题的一部分,并且以某种方式响应名称长度。我已经用代码更新了我的问题。让我知道你的想法?
  • Foundation 就是这样制作带有箭头的按钮 github.com/zurb/foundation/blob/master/scss/foundation/… 看看 @mixin dropdown-button

标签: drop-down-menu grid sass zurb-foundation mixins


【解决方案1】:

你不能让它无限长而不破坏页面布局。如此简单的解决方案将决定它可以获取多长时间并设置按钮容器以在它开始看起来有线之前填充最大数量的列。然后您可以根据需要在容器内对齐按钮,如果它太长,您可以将部分名称替换为 "..." css:overflow:hidden; text-overflow:ellipsis; 或使用 js 显示简短形式.

示例:http://jsfiddle.net/z8aWL/2/

【讨论】:

  • 谢谢,我真的很喜欢你的解决方案,虽然我不完全确定如何实现它。我在我的问题中包含了代码和 jsfiddle,你能帮帮我吗?
  • 谢谢!我几乎让它完美运行。问题是,当我有 14 个字符时,它仍然与下拉箭头略有重叠,但任何超过 14 个字符的字符都可以通过 ... 修复它。我怎样才能让……早点进来?这是我的代码目前的样子:jsfiddle.net/QM8Kp 谢谢!
  • @MattCamp jsfiddle.net/FvRERwidth-limit 中使用padding-right 来缩小它。
  • @MattCamp 你也可以使用:after 选择器和top left 属性移动小箭头。
  • @MattCamp 尝试添加 !important 并提高特异性css-tricks.com/specifics-on-css-specificity
【解决方案2】:

grid column 2 mixin 给你这个:

width: grid-calc($columns, $total-columns);

如果您使用默认的 12 格,您的输入如下所示:

width: grid-calc(2, 12);

calc函数返回2除以12的百分比

width: 16.67%;

然后您将用 150 像素覆盖该宽度值。如果您对大行使用默认网格值,则应接近 167px 宽。

如果你想保持这种响应,你应该避免设置硬 px 值。

现在对于长名称,您有两个基本选择。通过隐藏溢出来截断名称(如 JAre 建议的那样),或者让疯狂的长名称破坏您的网格,但包含在按钮中。然后你不需要设置宽度。 grid col mixin 所做的只是给你一个宽度百分比。该行设置宽度的值(其中 col 是百分比)。你的按钮仍然包含在一行中,所以你应该很高兴。

如果您有权访问您的用户名数据库,我认为您最好的选择是找到“最坏的情况”并为此进行设计。或者更好的是,首先将缩短的名称值返回到您的设计中。

【讨论】:

  • 感谢@fontophilic。不幸的是,我不太明白你建议我做什么。我对网格非常陌生,并且使用 sass mixins。很抱歉给您带来不便,但您能否尝试改写您所说的内容来帮助我?
  • 嗨@MattCamp,我确实将其保留为开放式,因为我可以看到多种解决您问题的好方法。 1. 为“最坏情况”设计 2. 截断名称。 3. 让名字完整显示。如果您希望名称在按钮内完整显示(如您最初的问题所问),您需要删除任何宽度限制,包括网格混合。
  • 非常感谢! @fontophilic,我想截断名称,但我现在发现的问题是下拉菜单上的小箭头仍然与文本重叠。这是一个 jsfiddle:jsfiddle.net/cuYjF 有没有办法移动箭头或修复文本以便更快地截断?
  • 我希望能得到一些帮助。在我的斗争中,我决定重新开始,从头开始再试一次。我走了很远,然后卡住了。我已经更改了上面的问题以匹配我的新问题。看一看。谢谢!
猜你喜欢
  • 2023-03-22
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
相关资源
最近更新 更多