HTML中的健壮行号(文本换行和字体大小更改)

Posted

技术标签:

【中文标题】HTML中的健壮行号(文本换行和字体大小更改)【英文标题】:Robust line number in HTML with (text wrapping and font size change) 【发布时间】:2017-08-28 00:42:09 【问题描述】:

我见过很多关于行号的问题,例如: Create line numbers on pre with CSS only

或者这个: Display line number in textarea

我的问题是,我还需要行数来计算被多行包裹的行。

section 
background: #303030;
color: #f1f1f1;
padding: 10px 16px;
border-radius: 2px;
border-top: 4px solid #00aeef;
-moz-box-shadow: inset 0 0 10px #000;
box-shadow: inset 0 0 10px #000;
counter-reset: line;


section div 
  display: block;
line-height: 1.5rem;
 


section div:before 
  counter-increment: line;
  content: counter(line);
  display: inline-block;
  border-right: 1px solid #ddd;
  padding: 0 .5em;
  margin-right: .5em;
  color: #888

<section>
  <div>lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.lorem ipsum.</div>
  <div>lorem ipsum. <span style="font-size: 54px;">big text</span></div>
  <div>lorem ipsum.</div>
</section>

如您所见,第 1 行被包裹在多个物理行上,当前计数不考虑它。

我在寻找答案时发现的另一种方法是添加与 textarea 高度相同的行号硬编码列表,但由于我需要支持多种字体大小,此方法将不起作用,并将显示行号 un -对齐。

示例(感谢:Aakash Chakravarthy,https://jsfiddle.net/vaakash/5TF5h/):

textarea
    background: url(http://i.imgur.com/2cOaJ.png);
background-attachment: local;
background-repeat: no-repeat;
padding-left: 35px;
padding-top: 10px;
    border-color:#ccc;
&lt;textarea rows="10" cols="40"&gt;&lt;/textarea&gt;

请注意,我的 html 是在不同的工具(etherpad)中生成的,我需要在从不同的工具获取 HTML 后添加行号,所以我不知道文本的长度或字体的大小在里面。

我的问题是: 如何在考虑文本换行和字体大小的情况下将行号添加到动态 HTML?

【问题讨论】:

【参考方案1】:

根据您的回答,我发现 textarea 的字体大小导致行号未对齐。因此您可以将字体大小设置为 14px,然后对齐行号。

textarea
background: url(http://i.imgur.com/2cOaJ.png);
background-attachment: local;
background-repeat: no-repeat;
padding-left: 35px;
padding-top: 10px;
border-color:#ccc;
font-size: 14px;//add the style
&lt;textarea rows="10" cols="40"&gt;&lt;/textarea&gt;

【讨论】:

以上是关于HTML中的健壮行号(文本换行和字体大小更改)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Minted Latex 包更改行号的字体大小

更改 R DataTables (DT) 中的字体大小

当字体大小在本机反应中增加时,文本不会换行

iOS 10中的UILabel,制作文字字体

更改字体大小后更改崇高文本默认主题中的行高

在 webview 中快速加载 html 文件,更改图像大小、字体和文本大小