【问题标题】:Fill remaining whitespace in line with dots (multiline text)用点填充剩余的空白(多行文本)
【发布时间】:2019-07-19 01:51:15
【问题描述】:

我试图让一个 html 页面看起来像这样:

我已经很接近了,但我想再做一步,尝试用点填充文本中的所有空白,直到行尾。全部不用js。

我为单行元素找到了不同的解决方案,就像我在文档中的大多数解决方案一样,但对于多行元素没有任何解决方案。
我更接近的是使用:after 选择器添加一些点作为内容并在文本上设置overflow: hidden,这导致我的较长行消失了。

我正在使用 table atm 来解决这个问题:

.container {
  width: 600px;
  text-align: justify;
  font-family: 'Arial Narrow', arial, sans-serif;
}

table {
  width: 100%;
}

.incipit {
  width: 10%;
}

.text {
  width: 90%;
}

.page {
  width: 15px;
}

.level-0>.text {
  width: 100%;
}

.level-0 {
  font-weight: bold;
}

.level-1 {
  font-weight: bold;
}
<div class="container">
  <h2>
    Table of Contents
  </h2>
  <table>
    <tr class='level-0'>
      <td class="text" colspan="2">First level index element</td>
      <td class="page" align="right" valign="bottom">1</td>
    </tr>
    <tr class="level-1">
      <td class="incipit" valign="top">Art. 1</td>
      <td class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vel elementum erat. In non magna tellus. Donec id tellus ut leo consequat elementum. Praesent eu ligula in neque ultricies mollis sit amet sed risus.</td>
      <td class="page" align="right" valign="bottom">1</td>
    </tr>
  </table>
</div>

这是一个fiddle,里面有我现在拥有的代码。

你们有没有遇到过同样的问题?任何建议表示赞赏

【问题讨论】:

    标签: html css


    【解决方案1】:

    您可以使用:after 用点填充可用空间(.)。我在 td 级别添加了overflow: hiddenposition:relative

    .text:after{
        content: " ....................................................................................................................... ";
        position: absolute;
        padding-left: 5px;
    }
    

    请看下面的片段:

    .container {
      width: 600px;
      text-align: justify;
      font-family: 'Arial Narrow', arial, sans-serif;
    }
    
    table {
      width: 100%;
    }
    
    .incipit {
      width: 10%;
    }
    td{  
      overflow: hidden;
        position: relative;
    }
    
    .text { 
      width: 90%;
    }
    .text:after{
        content: " ....................................................................................................................... ";
        position: absolute;
        padding-left: 5px;
    }
    
    .page {
      width: 15px;
    }
    
    .level-0 > .text {
      width: 100%;
    }
    
    .level-0 {
      font-weight: bold;
    }
    
    .level-1, .level-2 {
      font-weight: bold;
    }
    <div class="container">
      <h2>
      Table of Contents
      </h2>
      <table>
      <tr class='level-0'>
        <td class="text" colspan="2">First level index element</td>
        <td class="page" align="right" valign="bottom">1</td>
      </tr>
      <tr class="level-1">
        <td class="incipit" valign="top">Art. 1</td>
        <td class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vel elementum erat. In non magna tellus. Donec id tellus ut leo consequat elementum. Praesent eu ligula in neque ultricies mollis sit amet sed risus.</td>
        <td class="page" align="right" valign="bottom">1</td>
      </tr>
      <tr class="level-2">
        <td class="incipit" valign="top">Art. 2</td>
        <td class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vel elementum erat. In non magna tellus. Donec </td>
        <td class="page" align="right" valign="bottom">2</td>
      </tr>
      </table>
    </div>

    你也可以测试一下here..

    【讨论】:

    • 对于 html 部分,这是一个很好的解决方案,可悲的是,当我试图让它适用于我的案例并将其传递给 itext2pdf 以从中获取 pdf 时,一切都坏了。无论如何,答案对于我提出的问题来说是完美的,对延迟感到抱歉。
    • 很高兴它有帮助:)
    【解决方案2】:

    只需在 div 的底部使用虚线边框。您可以使用 flexbox 强制 div 跨越剩余空间。我没有使用一个普通的 div 表,它在用例中更灵活,但如果你想使用一个表,你可以应用相同的理念。这是一个简单的例子:

    .row {
      display: flex;
      width: 100%;
    }
    
    .dots {
      flex: 1;
      border-bottom: 1px dotted #000;
    }
    <div class="row">
      <div class="text">First level index element</div>
      <div class="dots"></div>
      <div class="page">1</div>
    </div>

    【讨论】:

    • 很好的洞察力,但当文本长度为 2 行或更多时,我似乎无法使其工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多