【问题标题】:Float icon inside button to the right右侧按钮内的浮动图标
【发布时间】:2017-03-26 04:36:34
【问题描述】:

我在按钮内放置一个图标。要将图标与按钮的右侧对齐,我在图标上使用了float: right。但正如您将看到的,这会导致图标在 Firefox 上溢出,所以我需要另一个解决方案。

注意事项

  1. 我希望按钮中的文本居中对齐,因此无法在文本中添加float: left
  2. 图标需要浮动到按钮的右侧

这是图标和按钮的Sass

.icon-icomoon
    font-family: 'icomoon' !important
    speak: none
    font-style: normal
    font-weight: normal
    font-variant: normal
    text-transform: none
    line-height: 1
    -webkit-font-smoothing: antialiased
    -moz-osx-font-smoothing: grayscale

.icon-arrow-right:before
    content: "\e910"

.btn
    border-radius: 0
    padding: 20px 40px
    font-weight: 600
    font-family: $fontSansSerif
    font-size: 1.9em

    span.icon-arrow-right
        float: right
        font-size: 40px

.mobile-and-tablet-only
    display: none

    @media screen and (max-width: $mediaBreakpointTablet)
        display: block

.desktop-only
    display: none

    @media screen and (min-width: $mediaBreakpointTablet+1)
        display: block

这是按钮的HTML

<a href="#" class="btn btn-success">
  <span class="desktop-only">
    Let's make something awesome together
    <span class="icon-icomoon icon-arrow-right"></span>
  </span>
  <span class="mobile-and-tablet-only">
    Let's work together
    <span class="icon-icomoon icon-arrow-right"></span>
  </span>
</a>

这是 Chrome 浏览器中的样子:

这就是它在 Firefox 上的样子。如您所见,文本的宽度为 100%,导致图标溢出:

【问题讨论】:

    标签: html css sass


    【解决方案1】:

    尝试给出a.btnposition:relative,然后绝对定位span.icon-arrow-right (position: absolute)。然后,您可以通过将right: 3%; top: 33% 添加到箭头图标的任何所需位置。

    【讨论】:

    • 图标需要正好浮动在按钮的右边,所以添加right是不行的
    • @mightyspaj 为什么不呢?我只是在 codepen 中做了一个小测试,虽然没有复制确切的结构,但它似乎可以工作。
    • 啊,是的,我明白你的意思,我的错误。我刚刚重新测试了它并且它有效。在我错误地使用right之前
    【解决方案2】:

    你可以在你的跨度上使用:after

    btn {
       position:relative;
    }
    span{
      text-align:center;
    }
    span:after {
           content: url(myicon.png);
    
    }
    

    这样的话,你就不需要这个了

    <span class="icon-icomoon icon-arrow-right"></span>
    

    example example 2

    或者您可以使用 display: inline-block 以 % 为单位指定宽度。您也可以使用display:flex

    【讨论】:

    • 使用 :after 会产生与 :before 相同的问题
    • 我也尝试过使用display: inline-flex。它不允许您将图标浮动到右侧(这是我想要的)。至于使用display: inline-block,我想避免手动提供% 宽度(很乱)
    • 它的工作点击我在 firefox 和 chrome 上的示例:您需要在您的 after 上使用 position : absolute :和他的父级 .btn 上的相对位置,就像我在上面的 fiddle 示例中所做的那样。跨度:在{内容:“★”之后;位置:绝对;右:150px; }
    【解决方案3】:

    像这样。

    span{
      font-size:16px
    }
    
    img{
      vertical-align:-15%;
    }
    <button>
      <span>My Text</span>
      <img src="https://rack.pub/media/bitcoin.png" height="16px" >
    </button>

    【讨论】:

    • 这不会将图标浮动到按钮的右侧
    • 您希望图标位于按钮之外,在按钮的右侧吗?
    【解决方案4】:

    您可以尝试在按钮内联块内制作跨度(以防止跨越按钮宽度的 100%)。也不要忘记对浮动跨度的父容器(.btn)使用 clearfix。

    .btn {
      text-align: center;
      @include clearfix();
    
      > span {
        display: inline-block;
    
        &.icon-icomoon {
          float: right;
        }
      }
    }
    
    @mixin clearfix() {
      &::after {
        display: block;
        content: "";
        clear: both;
      }
    }
    

    【讨论】:

    • @mightyspaj,虽然这是一个引导代码,但我很抱歉。
    猜你喜欢
    • 2022-11-30
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    相关资源
    最近更新 更多