【问题标题】:Float right doesn't work right in CSS浮动右移在 CSS 中不能正常工作
【发布时间】:2017-05-01 13:45:07
【问题描述】:

我在 CSS 中为 float right 创建了一个示例。但是,我对元素之间的顺序和空间有疑问。结果是这样的:

灰点应该在绿点的右侧,甚至在绿点的右侧。

有什么想法吗?谢谢,

这是我的代码示例:https://jsfiddle.net/dalenguyen/mfj78LL5/

.green-dot {
  color: #20b08f;
}
.gray-dot {
  color: grey;
}
.professional-skills .green-dot,
.professional-skills .gray-dot {
  float: right;
  font-size: 1.5rem;
}
<div class="professional-skills">
  <h2>Professional Skills</h2>
  <p>Web Design <span class="green-dot">&#x25cf; &#x25cf; &#x25cf; &#x25cf; &#x25cf;</span></p>
  <p>Design <span class="green-dot">&#x25cf; &#x25cf; &#x25cf;</span><span class="gray-dot">&#x25cf; &#x25cf;</span></p>
</div>
</div>

【问题讨论】:

    标签: html css flexbox css-float css-grid


    【解决方案1】:

    CSS float 属性从未设计用于构建布局。

    它是为图像周围的文字而设计的。

    由于 CSS 没有提供更好的布局系统,浮动(以及表格、内联块和绝对定位)已被用作 hack 解决方法。

    但是现在 CSS3 flexgrid 模块具有 wide browser support,并且它们是专门为构建布局而设计的,您应该考虑使用它们。

    section {
      display: flex;
    }
    
    section > * {
      margin: 0;
      align-self: center;  /* 1 */
    }
    
    section > p {
      margin-right: auto;  /* 2 */
    }
    
    .green-dot {
      color: #20b08f;
      font-size: 1.5rem;
    }
    
    .gray-dot {
      color: grey;
      font-size: 1.5rem;
    }
    <article class="professional-skills">
    
      <h2>Professional Skills</h2>
    
      <section>
        <p>Web Design</p>
        <span class="green-dot">&#x25cf;</span>
        <span class="green-dot">&#x25cf;</span>
        <span class="green-dot">&#x25cf;</span>
        <span class="green-dot">&#x25cf;</span>
        <span class="green-dot">&#x25cf;</span>
      </section>
    
      <section>
        <p>Design</p>
        <span class="green-dot">&#x25cf;</span>
        <span class="green-dot">&#x25cf;</span>
        <span class="green-dot">&#x25cf;</span>
        <span class="gray-dot">&#x25cf;</span>
        <span class="gray-dot">&#x25cf;</span>
      </section>
    
    </article>

    注意事项:

    1. 在此处了解align-self 属性:

    2. 在此处了解auto 边距:

    【讨论】:

      【解决方案2】:

      您可以更新以下内容:

      .professional-skills .green-dot, .professional-skills .gray-dot
      {
        float: right;
        font-size: 1.5rem;
        padding-right:5px;
      }
      

      它会起作用,但最好将每个圆圈保持在一个单独的 DIV 中。

      【讨论】:

      • 谢谢@Mhd Jarkas。这是一个有效的快速解决方案。
      【解决方案3】:

      当使用float:right; 时,最远的元素始终是 HTML 代码中之前存在的元素。如果您希望灰点与绿点对齐,则必须先将它们插入 HTML。

      此外,如前所述,您可能希望将点拆分成单​​独的容器,这样您就可以完全控制间距(而不是在点之间使用空格)。请参阅 Mhd.Jarkas 的回答。

      希望对你有帮助!

      【讨论】:

      • 是的,确实如此。我在这里有很多解决方案。
      【解决方案4】:

      不均匀间距是由float: right;引起的,在您的示例中,第二行有2个跨度,而第一行只有1个跨度,并且浮动删除了标签之间的空白渲染。

      您可以将每个点包装成一个跨度,这将解决间距问题,并注意浮动导致的颠倒顺序。

      .green-dot {
        color: #20b08f;
      }
      
      .gray-dot {
        color: gray;
      }
      
      .professional-skills .green-dot,
      .professional-skills .gray-dot {
        float: right;
        font-size: 1.5rem;
        margin-left: 5px;
        margin-top: -5px;
      }
      <div class="professional-skills">
        <h2>Professional Skills</h2>
        <p>
          Web Design
          <span class="green-dot">&#x25cf;</span>
          <span class="green-dot">&#x25cf;</span>
          <span class="green-dot">&#x25cf;</span>
          <span class="green-dot">&#x25cf;</span>
          <span class="green-dot">&#x25cf;</span>
        </p>
        <p>
          Design
          <span class="green-dot">&#x25cf;</span>
          <span class="green-dot">&#x25cf;</span>
          <span class="green-dot">&#x25cf;</span>
          <span class="gray-dot">&#x25cf;</span>
          <span class="gray-dot">&#x25cf;</span>
        </p>
      </div>

      【讨论】:

        【解决方案5】:

        试试这个

        .green-dot,.green-dot-1 {
          color: #20b08f;
        }
        .gray-dot,.gray-dot-1 {
          color: grey;
        }
        
        .professional-skills .green-dot, .professional-skills .gray-dot{
          float: right;
          font-size: 1.5rem;
        }
        #dots{
        font-size: 1.5rem;
        float : right;
        }
        #abc{
        float: left;
        }
        #clear {
        clear: both;
        }
        .green-dot-1{
        padding-right: 5px;
        }
        <div class="professional-skills">
          <h2>Professional Skills</h2>
          <p>Web Design <span class="green-dot">&#x25cf; &#x25cf; &#x25cf; &#x25cf; &#x25cf;</span></p>
          <p id="abc">Design </p>
        <div id="dots">  
          <span class="green-dot-1">&#x25cf; &#x25cf; &#x25cf;</span><span class="gray-dot-1">&#x25cf; &#x25cf;</span>
          </div>
          <div id="clear"></div>
        </div>
        </div>

        【讨论】:

        • 感谢@Nimish 的帮助。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-08
        • 1970-01-01
        • 2016-03-06
        • 2017-07-07
        相关资源
        最近更新 更多