为什么其中带有 p 标签的 html div 标签与带有 img 标签的标签位置不同?
Why does a html div tag with a p tag inside it sit differently than one with an img tag inside it?
我在 Codecademy.com 上工作时编写了以下代码。基本上我有一堆用 <div>
标签创建的圆形容器。所有的容器在空的时候都整齐地排成一排。当我在某些 <div>
中添加图像时,它不会影响间距。但是,当我在其中一个 <div>
容器内的 <p>
标记内添加文本时,它使整个容器向下移动了半英寸。 (注意:删除或添加更多 <br>
标签无济于事,将边距设置为 0 也无济于事。)
我的问题是:为什么会发生这种情况,我怎样才能阻止它发生?
因为我这样做是为了学习,所以我肯定更关心理解为什么会发生这种情况,而不是简单地快速解决问题。谢谢。
代码如下:
div {
display: inline-block;
margin-left: 5px;
border-radius: 100%;
height: 100px;
width: 100px;
border: 2px solid black;
}
.friend {
border: 2px dashed #008000;
}
.family {
border: 2px dashed #0000ff;
}
.enemy {
border: 2px dashed #ff0000;
}
#best_friend {
border: 4px solid #00c957;
}
#archnemesis {
border: 4px solid #cc0000;
}
img {
border-radius: 100%;
height: 100px;
width: 100px;
}
div p {
text-align: center;
border: 0;
padding: 0;
}
<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="stylesheet.css" />
<title>My Social Network</title>
</head>
<body>
<div class="friend" id="best_friend">
<img src="http://www.smashbros.com/images/og/link.jpg" />
</div>
<div class="friend">
<img src="http://upload.wikimedia.org/wikipedia/commons/9/9e/Navi_oOot.png" />
</div>
<div class="family">
<img src="http://fc07.deviantart.net/fs70/i/2011/196/c/a/deku_tree_manip_by_thegeminisage-d3u262q.jpg" />
</div>
<div class="family">
<br>
<p>Forest elf guy number 7</p>
</div>
<div class="enemy" id="archnemesis">
<img src="#" />
</div>
<div class="enemy">
<img src="#" />
</div>
</body>
</html>
要解决此问题,您可以将 vertical-align
属性 更改为默认值以外的值,即 baseline
.
在这种情况下,以下方法可行:
div {
display: inline-block;
vertical-align: top;
/* other styling.. */
}
至于 为什么 该元素比其他元素低的原因,是因为文本与同级元素的基线对齐。请注意,如果您 remove the text,则不会再出现此问题。由于元素是 inline-block
,更改 vertical-align
属性 将对其产生影响。另一方面,如果元素是浮动的,您也不会看到这个问题。
因为有一种叫做紧急风格的东西 sheet,它正在为 <p> or <a> or <html> or <h1>
等原始标签提供......
<p>
总是给出文本 space.
所以最适合您的解决方案是为 <p>
插入一个样式
如果您对位置有疑问,可以使用 padding , margin,
并且您可以根据需要调整大小,这是一种新样式
我在 Codecademy.com 上工作时编写了以下代码。基本上我有一堆用 <div>
标签创建的圆形容器。所有的容器在空的时候都整齐地排成一排。当我在某些 <div>
中添加图像时,它不会影响间距。但是,当我在其中一个 <div>
容器内的 <p>
标记内添加文本时,它使整个容器向下移动了半英寸。 (注意:删除或添加更多 <br>
标签无济于事,将边距设置为 0 也无济于事。)
我的问题是:为什么会发生这种情况,我怎样才能阻止它发生?
因为我这样做是为了学习,所以我肯定更关心理解为什么会发生这种情况,而不是简单地快速解决问题。谢谢。
代码如下:
div {
display: inline-block;
margin-left: 5px;
border-radius: 100%;
height: 100px;
width: 100px;
border: 2px solid black;
}
.friend {
border: 2px dashed #008000;
}
.family {
border: 2px dashed #0000ff;
}
.enemy {
border: 2px dashed #ff0000;
}
#best_friend {
border: 4px solid #00c957;
}
#archnemesis {
border: 4px solid #cc0000;
}
img {
border-radius: 100%;
height: 100px;
width: 100px;
}
div p {
text-align: center;
border: 0;
padding: 0;
}
<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="stylesheet.css" />
<title>My Social Network</title>
</head>
<body>
<div class="friend" id="best_friend">
<img src="http://www.smashbros.com/images/og/link.jpg" />
</div>
<div class="friend">
<img src="http://upload.wikimedia.org/wikipedia/commons/9/9e/Navi_oOot.png" />
</div>
<div class="family">
<img src="http://fc07.deviantart.net/fs70/i/2011/196/c/a/deku_tree_manip_by_thegeminisage-d3u262q.jpg" />
</div>
<div class="family">
<br>
<p>Forest elf guy number 7</p>
</div>
<div class="enemy" id="archnemesis">
<img src="#" />
</div>
<div class="enemy">
<img src="#" />
</div>
</body>
</html>
要解决此问题,您可以将 vertical-align
属性 更改为默认值以外的值,即 baseline
.
在这种情况下,以下方法可行:
div {
display: inline-block;
vertical-align: top;
/* other styling.. */
}
至于 为什么 该元素比其他元素低的原因,是因为文本与同级元素的基线对齐。请注意,如果您 remove the text,则不会再出现此问题。由于元素是 inline-block
,更改 vertical-align
属性 将对其产生影响。另一方面,如果元素是浮动的,您也不会看到这个问题。
因为有一种叫做紧急风格的东西 sheet,它正在为 <p> or <a> or <html> or <h1>
等原始标签提供......
<p>
总是给出文本 space.
所以最适合您的解决方案是为 <p>
插入一个样式
如果您对位置有疑问,可以使用 padding , margin,
并且您可以根据需要调整大小,这是一种新样式