加破折号直到换行符

问题描述 投票:2回答:2

可以设置文本样式,以便在出现换行符之前添加破折号。

示例:

Lorem ipsum dolor sitmet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labour et dolore magna aliqua。 ut enim ad minim veniam,quis nostrud ------------------------------------------ --------------

Lorem ipsum dolor sit amet,consectetur adipisicing elit --------------------------------------- -----------------------Lorem ipsum ------------------------------------------------ -------------------------------------------------- -----------------Lorem ipsum dolor坐在amet,consectetur ------------------------------------------- -------------------------------------

作为输入(tinymce生成的模板),但是可以根据需要引入任何额外的标记。这个想法是使用html2pdf使用这种格式从该html生成pdf文件,所以我想知道是否存在使用html / css / js,tinymce的插件或通过某种方式配置html2pdf类的解决方案。

我曾尝试将每个paragrah包装在span / p标签内,然后使用伪类:after

span:after {
  display: inline-block;
  content: " -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ";
  width: 100%;
  overflow: hidden;
}
<html>

<body>
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
  <br><br> Lorem ipsum dolor sit amet, consectetur adipisicing elit
  <br> Lorem ipsum
  <br> Lorem ipsum dolor sit amet, consectetur
</body>

</html>

使用大的内容属性属性,并在出现换行符时隐藏多余的破折号。但是,它显示了整个内容,而没有隐藏多余的破折号。

html css tinymce line-breaks html2pdf
2个回答
1
投票

CSS很接近,但是您在这里可以做的事情受到限制。使每一行都包裹在跨度中是关键。好像您缺少溢出:隐藏;在跨度上。应该存在,而不是在:after伪选择器上。

此外,将需要使用空白属性使跨度不环绕。

这里是一个小提琴,希望它能使您更接近:http://jsfiddle.net/adamfullen/6mG54/

span {
  display: block;
  overflow: hidden;
  white-space: nowrap;
}

span:after {
  content: " -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ";
}
<span>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
    </span>
<br>
<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit</span>
<br>
<span>Lorem ipsum</span>
<br>
<span>Lorem ipsum dolor sit amet, consectetur</span>

0
投票

您可以尝试以下方法:

body {
  background:url(http://placekitten.com/800/600);
}
div.container {
  border:1px solid white;
  padding:10px;
  width:700px;
  margin:0 auto;
}
div.inner-container {
  overflow:hidden;          
  position:relative;
  width:100%;
}
div.inner-container span {
  color:white;
  position:relative;     
  font-size:20px;
}
div.inner-container span:after {
  content:'';    
  position:absolute;
  width:300vw; /* as large as possible */
  border-bottom:0.05em dotted white;
  left:100%;
  bottom:0.25em;
  z-index:-1;
}

当然,您必须将文本包装到span元素中,然后全部包装在某些容器div中manually或使用脚本。这是用于选择某个元素(正文)的所有内容并为您包装文本的脚本:

$(document.body).contents().wrapAll("<div class='container'>")
                .closest('div.container')
                .wrapInner("<div class='inner-container'>")
                .end().filter(function(i,e){ return e.nodeType == 3}).wrap('<span>');

Demo.

请注意,我们使用2个容器,外部.container和内部.inner-container。这是因为.inner-container用于裁剪内容,而外部容器用于渲染边框。否则,边框(如果使用的话)将接近虚线的末端,这确实很丑陋。

EDIT:我已经测试了演示,除了所谓的FireFox之外,所有浏览器似乎都运行良好,同样,FireFox有其自己的行为方式,不关心标准,...我认为这里没有使用其他方法的解决方法unless。仍然有一些方法but请注意,此处的演示将所有虚线显示在图像背景上,还有其他解决方案,但不能那样工作(我的意思是文本背景将显示为难看),...

这里是the ugly demo支持FireFox,这很丑陋,因为您无法在父级的某些图像背景上显示文本(末尾带有虚线)。但是,如果背景稳定,则可以接受此演示(尽管它比第一个演示更复杂)。

© www.soinside.com 2019 - 2024. All rights reserved.