html - float 语句破坏了 block 级元素?

标签 html css

我正在尝试制作 I rate it ??/??完美地居中对齐并 float 在左侧,因此 I rate it ??/??单词将具有完美的垂直形状。当我这样做时,float 语句会破坏 block 级元素并超出它。这是一个例子:

li {
  display: block;
  background: green;
  border-top: 2px solid #fff;
  border-bottom: 2px solid #fff;
  padding: 20px 0px 20px 10px;
}

span.rate {
  color: #fff;
  margin-right: 65px;
  padding: 20px 10px;
  float: right;
  background: rgb(10, 10, 10);
}
<ol>
  <li>Text1<span class="rate">I rate it 10/10</span></li>
  <li>Text2 Text Text Text Text Text<span class="rate">I rate it 6/10</span></li>
  <li>Text5<span class="rate">I rate it 9/10</span></li>
  <li>Text9 Text Text<span class="rate">I rate it 2/10</span></li>
</ol>

这是另一个示例,但没有 float陈述。它看起来很完美,但没有 float: right;声明,它根本不是垂直对齐的。它不像第一个那样完全对齐:

li {
  display: block;
  background: green;
  border-top: 2px solid #fff;
  border-bottom: 2px solid #fff;
  padding: 20px 0px 20px 10px;
}

span.rate {
  color: #fff;
  margin-right: 65px;
  padding: 20px 10px;
  background: rgb(10, 10, 10);
}
<ol>
  <li>Text1<span class="rate">I rate it 10/10</span></li>
  <li>Text2 Text Text Text Text Text<span class="rate">I rate it 6/10</span></li>
  <li>Text5<span class="rate">I rate it 9/10</span></li>
  <li>Text9 Text Text<span class="rate">I rate it 2/10</span></li>
</ol>

最后。我想要I rate it ??/??成为:

1- 垂直完美对齐。

2- 完美适合 block 级元素。

最佳答案

您可以混合使用 display: flex;position:absolute; 来实现此目的

li {
  display: flex;
  background: green;
  border-top: 2px solid #fff;
  border-bottom: 2px solid #fff;
  padding: 20px 0px 20px 10px;
  justify-content: flex-start;
  align-items: center;

}

span.rate {
  color: #fff;
  position: absolute;
  right: 0;
  padding: 20px 10px;
  background: rgb(10, 10, 10);
  width: 11ch;
}
<ol>
  <li>Text1<span class="rate">I rate it 10/10</span></li>
  <li>Text2 Text Text Text Text Text<span class="rate">I rate it 6/10</span></li>
  <li>Text5<span class="rate">I rate it 9/10</span></li>
  <li>Text9 Text Text<span class="rate">I rate it 2/10</span></li>
</ol>


编辑:

为了避免隐藏文本,您还可以使用 display: grid;

li {
  display: grid;
  grid-template-columns: 1fr 11ch;
  background: green;
  border-top: 2px solid #fff;
  border-bottom: 2px solid #fff;
  padding-left: 10px ;
  justify-content: flex-start;
  align-items: center;

}

span.rate {
    color: #fff;
    padding: 10px 0 10px;
    background: rgb(10, 10, 10);
    width: 12ch;
    height: 100%;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
}
<ol>
  <li>Text1<span class="rate">I rate it 10/10</span></li>
  <li>Text2 Text Text Text Text Text<span class="rate">I rate it 6/10</span></li>
  <li>Text5<span class="rate">I rate it 9/10</span></li>
  <li>Text9 Text Text azlkejalzkje alkjez alkzj ealk zjeal zkjeal kzjea lzkej  eazmlk emalkz emaklz emlkaz melkaz emlkaz emlka zemlk 12345678<span class="rate">I rate it 2/10</span></li>
</ol>

关于html - float 语句破坏了 block 级元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67330813/

相关文章:

html - 使用 css 着色 SVG 内容 url

html - bash + ftp : File is empty on upload

css - 为什么我的 <li> 在使用位置 :relevant on p tags within the <li>? 时四处移动

html - 显示一组带有内联标题的图像,同时保持按高度缩放

html - CSS - 这种情况最好使用什么(px、%、vw、wh 或 em)?

html - 将固定位置父 div 内的 div 设置为 100% 宽度

html - Bootstrap 模态主体出现故障

html - 无序列表的中心列表项

css - padding-left 和 left 属性 CSS 的区别

css - 为什么我的链接在移动设备上保持悬停状态?