鉴于此HTML
<pre>
<div class="px_xml"><AddFileDialogPlaces id="<b>RVT_2016 Places</b>" delete_prior="true">
<div class="px_ind"><Place id="Favorites">C:\Users\[Px~User]\Links</Place>
<Place id="Datasets">C:\ProgramData\Datasets</Place>
<div class="px_ind"><Place id="Families">C:\ProgramData\Assets\Revit\2016\Libraries</Place></div>
<Place id="Desktop">Desktop</Place>
<Place id="My Computer">::{20D04FE0-3AEA-1069-A2D8-08002B30309D}</Place>
<Place id="My Network Places">::{208D2C60-3AEA-1069-A2D7-08002B30309D}</Place>
<Place id="Documents">Personal</Place>
<Delete>Revit Server Network View</Delete></div>
</AddFileDialogPlaces></div>
</pre>
,这在自定义CSS
中.px_xml {
font-family: monospace;
font-size: .7em;
color: #0000CC;
margin-bottom:0;
display: block;
}
.px_ind {
margin-left: 2em;
display: inline-block;
}
一切都按预期工作。但是,如果我删除Pre标签,因为我使用CSS设置等宽字体,这看起来无关紧要,那么颜色覆盖仅适用于第二个DIV。
现在我知道我可以保留Pre并跳过.px_ind样式,但我不想出于两个原因。一,它迫使我在艰难的道路上得到所有的缩进,两个让我没有简单的方法来修改缩进量。我宁愿在XML中保留一些空格只是为了帮助我理解编辑,同时允许样式真正驱动最终表达式,但这不需要Pre。 对于Pre标签来说,大多数情况下这似乎是一件奇怪的事情,或者缺乏做,所以我想理解它。
答案 0 :(得分:0)
pre
用于保存短语内容,div
不是允许的内容之一。浏览器尽可能地处理语法错误。
https://www.w3.org/TR/html5/grouping-content.html#the-pre-element
您可以使用解释此错误的浏览器,就好像您错过了div
和pre
并忘记关闭其中一个或两个。 .pix_ind
之后是.px_xml
,而不在其中,CSS不再继承。
您可以做的是删除pre
代码并改用CSS white-space:pre;
。
.px_xml {
white-space: pre;
/* here you pre tag is no longer needed */
font-family: monospace;
font-size: .7em;
color: #0000CC;
margin-bottom: 0;
display: block;
}
.px_ind {
margin-left: 2em;
display: inline-block;
}
<div class="px_xml"><AddFileDialogPlaces id="<b>RVT_2016 Places</b>" delete_prior="true">
<div class="px_ind"><Place id="Favorites">C:\Users\[Px~User]\Links</Place>
<Place id="Datasets">C:\ProgramData\Datasets</Place>
<div class="px_ind"><Place id="Families">C:\ProgramData\Assets\Revit\2016\Libraries</Place></div>
<Place id="Desktop">Desktop</Place>
<Place id="My Computer">::{20D04FE0-3AEA-1069-A2D8-08002B30309D}</Place>
<Place id="My Network Places">::{208D2C60-3AEA-1069-A2D7-08002B30309D}</Place>
<Place id="Documents">Personal</Place>
<Delete>Revit Server Network View</Delete></div>
</AddFileDialogPlaces></div>
显示浏览器以某种方式修复HTML的典型示例:当您构建表格时,如果缺少tbody
,浏览器会添加它,甚至可以在样式表中用作选择器。
tbody td {
border: solid;
padding:1em;
}
<table>
<tr>
<td>Is <code>tbody</code> really missing ?</td>
</tr>
</table>