如何在<p>或& lt; span>没有字符
How to provide default font height or content when <p> or <span> has no characters?
这是一个类似于这里的问题:HTML & lt; p>和& lt; span>问题。
以3结尾…我想知道为什么会发生以下情况。从这个例子开始:
没有任何特殊CSS规则的
<p>
元素没有文本当页面加载时,因此是height:0
。由于javascript操作时,它开始有字符,因此高度为设置为默认的font-size
,允许我们看到文本。
-
我怎么能保证这个
<p>
始终具有相同的高度(有或没有文本在里面)? -
为什么使用
em
的宽度会影响<p>
而不是<span>
:
p,span {width: 1em}
<p>this is a paragraph</p>
<span>this a span</span>
- 虽然我理解,在W3C一个"
span
元素是一个通用的包装措辞内容,本身不代表任何东西。,我的意图是让它代表一些东西……既然它在段落中的使用是如此频繁,为什么CSS不能像<p>
一样影响它的高度/宽度呢?
对于第一个问题,我给出了答案,但我没有将其标记为可接受的——我正在寻找一个答案,并给出理由来证明使用特定解决方案是合理的。
我只会编辑我的问题/答案,如果有错误或提出具体建议,以便这样做。
问题2
p
和span
的宽度行为是由于width
属性的CSS规范。
width
不适用于非替换的内联元素(span
),因此p
是块级元素,取width值。
请注意,如果您将display: inline-block
应用于span
,则会识别宽度,因为内联块不是非替换的内联元素。
参考:http://www.w3.org/TR/CSS21/visudet.html the-width-property
问题3
HTML提供了两个通用的普通元素,div
是块级元素,span
是内联元素。span
可以在任何元素中使用,无论是p
、li
、td
、i
等等。如果希望嵌套在p
中的span
具有特定的样式,则可以定义一个特定的CSS规则来启用所需的样式。如果您希望在宽度、内边距和边距方面具有类似p
的行为,那么您可以指定display: inline-block
。HTML规范没有指定通用的inline-block元素,可能是因为规范组中没有成员认为需要它。
请记住,HTML元素的默认样式依赖于浏览器,所以理论上,浏览器的默认样式表可以有p span
的规则,但据我所知,这样的实现并不存在。
问题1
为了防止一个空的p
标签坍缩到零高度,我将使用:after
伪元素来插入一个不间断的空间(
具有十六进制代码0xa0
)。
请注意,由于span
是一个内联元素,它的高度不会崩溃为零,因为一个内联的,非替换元素的高度是由line-height
属性决定的(height
被忽略),所以你不需要添加非断行空格,除非你想要一个空白的空间有非零的宽度。
p, span {
border: 1px dotted blue;
}
p:after, span:after {
content: ''a0';
}
<h4>Empty p</h4>
<p></p>
<p>p tag with text.</p>
<h4>Empty span</h4>
<span></span>
<span>span tag with text.</span>
下面的解决方案为没有文本的<p>
提供默认高度,并尝试在<span>
中模拟空内容:
p,span {height: 1em}
将设置高度:
相对于元素的font-size (2em表示当前字体大小的2倍)
p, span {height: 1em}
<p></p>
<p>Above there's a ghost paragraph</p>
<span></span>
<span>To the left there's NO visible trace of a span</span>
B 仅使用HTML,在<p>
内放置一个空格(
)(因此它实际上有一个字符):
<p> </p>
<p>Above there's a ghost paragraph with a space</p>
<span> </span>
<span>To the left there's a span with a space</span>
- 使用Clipboard.js复制span文本
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用RegExp查找url中的字符
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 用类javascript包装span标记中字符串中的字符索引
- 与字符串匹配的 span 字符
- 使用 javascript/jquery 为字符串中的某些字符添加 span 标记
- 使用 jquery,匹配单个字符后跟冒号并换行 span 标记
- 如何删除span中的连字符?(jQuery)
- 在一定数量的字符后,在p中添加一个span标记
- jQuery将博客日期头的连字符替换为span
- 随机旋转每个H3 Span元素的字符
- 将span标记添加到前面有特定字符的文本中
- Javascript 正则表达式查找字符并使用 span 动态换行文本
- 在 jquery span 文本中使用 HTML 字符名称
- 如何在
或& lt; span>没有字符