Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML:空<;p></p>;标记不显示换行符_Html_Css - Fatal编程技术网

HTML:空<;p></p>;标记不显示换行符

HTML:空<;p></p>;标记不显示换行符,html,css,Html,Css,我们有一个用axml保存消息的.NET应用程序。我们需要做的是将其转换为html。我发现第三方库“HtmlFromXamlConverter”可以做到这一点,但有一个小缺陷:如果axml包含多个换行符,它将被转换为类似以下内容: <P ><SPAN STYLE="text-decoration:underline;" /> </P> <P ><SPAN STYLE="text-decoration:underline;" /> <

我们有一个用axml保存消息的.NET应用程序。我们需要做的是将其转换为html。我发现第三方库“HtmlFromXamlConverter”可以做到这一点,但有一个小缺陷:如果axml包含多个换行符,它将被转换为类似以下内容:

<P ><SPAN STYLE="text-decoration:underline;" /> </P>
<P ><SPAN STYLE="text-decoration:underline;" /> </P>
<P ><SPAN STYLE="text-decoration:underline;" /> </P>
.linebreak {
   display: block;
   margin-bottom: <value>px;
}


仅显示为一个换行符。无法插入“”作为值,因为存在下划线样式。所以问题是,有没有一种方法可以配置显示为换行符的空P标记?

据我所知,仅使用CSS无法实现这一点,您必须在段落内添加不可拆分的空格:

<p>&nbsp;</p>


如果您不需要下划线,但仍希望添加空格,则可以使用!CSS中的重要标记

p span {
   text-decoration: none !important; 
   /* This will force the underline to go away if you want to add spaces */
}
如果您只想在每个段落标记的底部添加一些边距,可以执行以下操作:

p { 
   display: block;
   margin-bottom: <value>px;
}
p{
显示:块;
边缘底部:px;
}
请记住,这将影响页面上的所有段落,对这些段落应用类将是仅调整这些换行标记的最佳解决方案。然后,您可以执行以下操作:

<P ><SPAN STYLE="text-decoration:underline;" /> </P>
<P ><SPAN STYLE="text-decoration:underline;" /> </P>
<P ><SPAN STYLE="text-decoration:underline;" /> </P>
.linebreak {
   display: block;
   margin-bottom: <value>px;
}
.linebreak{
显示:块;
边缘底部:px;
}

您始终可以使用javascript将空的标记替换为
。以下解决方案使用jQuery:

var emptyPs = $('P > SPAN[STYLE="text-decoration:underline;"]').filter(function() {
    var $this = $(this);
    return $.trim($this.text()).length == 0;});

emptyPs.replaceWith('<br />');
var-emptyPs=$('P>SPAN[STYLE=“text-decoration:underline;”“])。过滤器(函数(){
var$this=$(this);
返回$.trim($this.text()).length==0;});
emptyPs.replacetwith(“
”);
HTML代码非常奇怪且不完整,但我认为您无法修复它。使用CSS使空的
p
生成空行的方法,以及通常的CSS警告,是将其高度设置为与行高度相同,并将其边距设置为零(否则将删除此渲染中显示的默认顶部和底部边距):

这假设行高度为1.3,最好显式设置(而不是让浏览器默认设置):

应根据字体的属性选择值;但1.3对于典型情况来说是合理的


如果页面上有其他
p
元素,则需要增加一些复杂性,以将规则的效果仅限制在所需的集合。(没有办法根据CSS中的内容来选择元素;但JavaScript可以用于此。)

添加一个小的内联块怎么样:

p:after {
  content:"";
  display:inline-block;
  width:0px;
  outline:1px solid red; /* debug, remove me */
}

这将迫使空段落达到您设置的行高。

已经提到了一些聪明的解决方案,但我喜欢的一个解决方案是只使用CSS,即在
p
标记上设置最小高度

.myText {
  font-size: 14px;
  line-height: 18px;
}
.myText p {
  min-height: 18px;
}
这将使得即使是空的
p
标记也与它们的相邻标记占据相同的高度,并且您不需要乱插入文本

如果您正在显示用户输入,这非常好,因为您可能希望再次保存该用户输入,并且需要小心地删除所有插入的
或其他内容


对于缺点,它确实需要一些包装元素。我也希望我可以使用相对行高,但我看不到一种方法来实现这一点。

此解决方案为空段落提供了当前行高:

p:empty:before {
  content: ' ';
  white-space: pre;
}

一切都简单得多:

p:空{
显示:无;

}
它需要下划线样式吗?我试过了。太糟糕了,它将显示为带下划线的空白:(我无法删除下划线,因为在其他情况下它很有用。例如,对于链接来说,它不太好。它将显示短下划线。您可以用换行符替换空标记,例如string.replace(“,”
”)