如何使用 flexbox 水平放置 3 个按钮? [复制]

Posted

技术标签:

【中文标题】如何使用 flexbox 水平放置 3 个按钮? [复制]【英文标题】:How to use flexbox to position 3 buttons horizontally? [duplicate] 【发布时间】:2019-11-20 03:27:00 【问题描述】:

我有 3 个按钮,我试图将它们排成一行(例如 prev btn、middle btn、next btn),现在我只是将它显示为一个按钮在另一个 2 的顶部。我不能更改html只是css fyi

    body 
      color: #838383;
      font-family: "Mada", sans-serif;
      font-size: 0.875rem;
    

    .post .pagination 
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      padding-top: 1.5rem;
      padding-bottom: 1.5rem;
    

    .post .pagination a 
      width: 48%;
    

    .post .pagination .link 
      border: 2px solid #007cad;
      text-align: center;
      margin-bottom: 0.75rem;
      padding: 0.5rem;
    

    .post .pagination a,
    .post .pagination .view-all 
      text-decoration: none;
      color: #007cad;
      font-weight: 700;
    

    .post .pagination .view-all 
      width: 100%;
    

    /* hover effects */
    .pagination .link 
      background: #fff;
      color: #007cad;
      background-size: 250% 100%;
    

    .pagination .next .link 
      background: linear-gradient(to left, #fff 50%, #007cad 50%);
      background-size: 250% 100%;
      background-position: right top;
      transition: all 0.5s ease;
      max-width: 250px;
    

    .pagination .prev .link 
      background: linear-gradient(to right, #fff 50%, #007cad 50%);
      background-size: 250% 100%;
      background-position: left top;
      transition: all 0.5s ease;
      max-width: 250px;
    

    .pagination .next .link:hover 
      background-position: left top;
    

    .pagination .prev .link:hover 
      background-position: right top;
    

    .pagination .next .link:hover,
    .pagination .prev .link:hover 
      background-color: #007cad;
      color: #fff;
      opacity: 1;
    

    @media only screen and (min-width: 1366px) 
      .post .pagination 
        padding-right: 0.9375rem;
        padding-left: 0.9375rem;
        max-width: 50rem;
        margin: 0px auto 0 auto;
      
    
      <body>
        
        <div class="post grid-x grid-padding-x">
            <div class="small-12 medium-10 medium-offset-1 cell pagination"> 
                <a class="view-all">
                    <div class="link">View full team member list</div>
                </a>
                    <a class="prev">
                        <div class="link">&lt; Prev bio</div>
                    </a>
                    <a class="next">
                        <div class="link">Next bio &gt;</div>
                    </a>

            </div>
        </div>
      </body>

我有 3 个按钮,我试图将它们排成一行(例如 prev btn、middle btn、next btn),现在我只是将它显示为一个按钮在另一个 2 的顶部。我用过flexbox 来显示它当前的状态,但我很难像我上传的解决方案图片一样将这些按钮对齐在一起。

  <body>

    <div class="post grid-x grid-padding-x">
        <div class="small-12 medium-10 medium-offset-1 cell pagination"> 
            <a class="view-all">
                <div class="link">View full team member list</div>
            </a>
                <a class="prev">
                    <div class="link">&lt; Prev bio</div>
                </a>
                <a class="next">
                    <div class="link">Next bio &gt;</div>
                </a>

        </div>
    </div>
  </body>

【问题讨论】:

您需要发布相关的 CSS 类以查看它们在做什么。 您在使用 Zurb 基金会吗?您是否有任何影响您的代码的现有样式?我们需要查看minimal reproducible example 以提供真正适用的帮助。 假设你想用 CSS 做这个,请显示你的 CSS 是的,很抱歉这篇文章是用当前的 css 更新的 【参考方案1】:

你可以使用 display: flex;如果您无法更改结构,则移动元素。 (不建议)。如果您可以更改 HTML 本身,它会更容易。如果你想把它们放在一起,你可以使用一些 CSS flexbox。

您可以在此处了解有关 flexbox 的更多信息:https://css-tricks.com/snippets/css/a-guide-to-flexbox/

    body 
      color: #838383;
      font-family: "Mada", sans-serif;
      font-size: 0.875rem;
    

    .post .pagination 
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      padding-top: 1.5rem;
      padding-bottom: 1.5rem;
    

    .post .pagination a 
      flex: 1; /* changed */
      margin: 10px; /* added */
    

    .post .pagination .link 
      border: 2px solid #007cad;
      text-align: center;
      margin-bottom: 0.75rem;
      padding: 0.5rem;
    

    .post .pagination a,
    .post .pagination .view-all 
      text-decoration: none;
      color: #007cad;
      font-weight: 700;
    

    .post .pagination .view-all 
      /* width: 100%; -- removed */
      order: 2;
    
    
    /* added */
    .post .pagination .next 
      order: 3;
    
    /* end added */

    /* hover effects */
    .pagination .link 
      background: #fff;
      color: #007cad;
      background-size: 250% 100%;
    

    .pagination .next .link 
      background: linear-gradient(to left, #fff 50%, #007cad 50%);
      background-size: 250% 100%;
      background-position: right top;
      transition: all 0.5s ease;
      max-width: 250px;
    

    .pagination .prev .link 
      background: linear-gradient(to right, #fff 50%, #007cad 50%);
      background-size: 250% 100%;
      background-position: left top;
      transition: all 0.5s ease;
      max-width: 250px;
    

    .pagination .next .link:hover 
      background-position: left top;
    

    .pagination .prev .link:hover 
      background-position: right top;
    

    .pagination .next .link:hover,
    .pagination .prev .link:hover 
      background-color: #007cad;
      color: #fff;
      opacity: 1;
    

    @media only screen and (min-width: 1366px) 
      .post .pagination 
        padding-right: 0.9375rem;
        padding-left: 0.9375rem;
        max-width: 50rem;
        margin: 0px auto 0 auto;
      
    
<div class="post grid-x grid-padding-x">
  <div class="small-12 medium-10 medium-offset-1 cell pagination">
    <a class="view-all" href="<?= get_field('team_page', 'options') ?>">
      <div class="link">View full team member list</div>
    </a>
    <a class="prev">
      <div class="link">&lt; Prev bio</div>
    </a>
    <a class="next">
      <div class="link">Next bio &gt;</div>
    </a>

  </div>
</div>

【讨论】:

不建议使用 order 属性(屏幕阅读器等)。如果您可以更改 HTML 本身,但在某些情况下,它可能会有所帮助。 -- 添加您自己的 css 样式,在您编辑您的帖子之前丢失。

以上是关于如何使用 flexbox 水平放置 3 个按钮? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何水平放置按钮和字段级别

垂直和水平居中的flexbox [重复]

css 浏览器导航栏如何将按钮平均放置

如何在不使用 Flexbox 的情况下水平对齐元素?

将 3 个不相等的块左、中、右对齐

当博客标题长度不同时,如何使用flexbox将元素排成一行