html - 如何仅在换行符上添加边距?

标签 html css

当一个字符串被分成多行时,我试图添加一个 margin-bottom

我阅读了有关 box-decoration-break 的内容,但这似乎并没有实现我想要实现的目标。

下面的代码片段显示了我正在尝试做的事情(只有最后一行应该有一个 margin-bottom)。

div {
  max-width: 250px;
}

table {
  border-collapse: collapse;
}

table, th, td {
  border: 1px solid black;
}

td div {
  margin-bottom: 25px;
}
<div>
  <table>
    <tr>
       <td>One</td>
       <td>1</td>
       <td>
          <div>This is a short string</div>
       </td>
    </tr>
    <tr>
       <td>Two</td>
       <td>2</td>
       <td>
          <div>This is a short string</div>
       </td>
    </tr>
    <tr>
       <td>Three</td>
       <td>3</td>
       <td>
          <div>This string is way too long so it will be broken</div>
       </td>
    </tr>
  </table>
<div>

最佳答案

我搜索答案的每个地方都说这是不可能的,所以我们需要一个严肃的巫术和一些你必须同意的限制。

table {
  border-collapse: collapse;
}

table, th, td {
  border: 1px solid black;
}
td span {
  display: inline-block;
}

div {
  width: 250px;
}
td span:after {
  content: "";
  margin-top: calc((100% - 250px + 1px / 10) * 16 * 10);
  display: block;
}
<div>
  <table>
    <tr>
       <td>One</td>
       <td>1</td>
       <td>
         <div><span>This is a short string</span></div>
       </td>
    </tr>
    <tr>
       <td>Two</td>
       <td>2</td>
       <td>
         <div><span>This is a short string</span></div>
       </td>
    </tr>
    <tr>
       <td>Three</td>
       <td>3</td>
       <td>
         <div><span>This string is way too long so it will be broken</span></div>
       </td>
    </tr>
  </table>
<div>

我想到的最好的想法是根据高度添加边距,因为两行或更多行会使它更高。不幸的是,高度、边距、填充、边框以及可能其他所有内容的百分比都基于父项的……宽度。

因此,让我们利用已有的资源。环绕文本意味着宽度达到最大值 - 比方说 250px。一行表示宽度必须小于250px。因此,让我们从我们拥有的任何宽度中减去最大 250px。如果达到最大宽度,我们将以负数或 0 结束。现在让我们添加 1px 并将其乘以当前 font-size (16px)。现在请记住,对于文本最终具有 249.5px 的极端情况,我们将有一半的边距低于 :(。为了缓解这种情况,我们可以减少 1px n 次,并将它乘以我们的 nfont-size。值越小,它越安全。

限制:

  • 容器的宽度必须已知(固定),因为您必须从 100% 中减去 if。
  • 边距的字体大小或高度也必须以“像素”为单位。不能使用基于微小位单位的值相乘(1em 不起作用)。
  • 我们需要用额外的标签包裹文本,这样父元素的宽度就基于文本(inline 或类似的)。如果确保此列的宽度保持不变,则可以去掉 div

希望对您有所帮助;)

关于html - 如何仅在换行符上添加边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60653379/

相关文章:

javascript - 如何根据鼠标的位置滚动画廊?

php - 在没有插件的情况下使用内置在 thickbox 中的 wordpress

html - 我怎样才能防止宽度 :100vw from causing a scrollbar to appear?

javascript - 如何使用javascript只允许将数字填充到带有类名的输入引用中?

javascript - 判断某个jQuery事件是否已过期(事件冒泡已结束)

javascript - 当选中第 n 个复选框时,针对某个类的第 n 个元素?

css - 如何使字体全高

javascript - 增加复选框大小 - Phonegap Android

javascript - JQuery Image slider 从json加载图片

jquery - 我怎样才能得到有多少div水平滚动jquery