Maison > Questions et réponses > le corps du texte
Il y a deux éléments img span dans un p.
1. Définir la taille de la police : 0px
sur p<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title> relationship between height and font-size </title>
<style type="text/css">
*{
margin:0px;
border:0px;
box-sizing:border-box;
}
p{
border:1px solid black;
font-size:0px;
}
img{
border:1px solid red;
}
span{
border:1px solid blue;
}
</style>
</head>
<body>
<p>
<img src="https://i.stack.imgur.com/abMWp.jpg" alt=""><span>it is a car</span>
</p>
<script language="JavaScript">
var e1=document.getElementsByTagName("p")[0];
var e2=document.getElementsByTagName("img")[0];
alert("Target height is "+(e1.offsetHeight-e2.offsetHeight).toString());
</script>
</body>
</html>
Enregistrez-le sous car1.html et le résultat est 0.
2. Définissez font-size:0px
sur les deux éléments enfants de p<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title> relationship between height and font-size </title>
<style type="text/css">
*{
margin:0px;
border:0px;
box-sizing:border-box;
}
p{
border:1px solid black;
}
img{
border:1px solid red;
font-size:0px;
}
span{
border:1px solid blue;
font-size:0px;
}
</style>
</head>
<body>
<p>
<img src="https://i.stack.imgur.com/abMWp.jpg" alt=""><span>it is a car</span>
</p>
<script language="JavaScript">
var e1=document.getElementsByTagName("p")[0];
var e2=document.getElementsByTagName("img")[0];
alert("Target height is "+(e1.offsetHeight-e2.offsetHeight).toString());
</script>
</body>
</html>
Enregistrez-le sous car2.html, et le résultat d'exécution est 6px.
Comment expliquer ce comportement ?
巴扎黑2017-05-19 10:20:44
C'est l'effet de la taille de la police sur la balise img. Plus la taille de police p de la couche externe entourant l’élément img est grande, plus la marge inférieure sera grande. En tant qu'élément en ligne, span n'est pas aussi élevé que img et peut être ignoré. La différence de hauteur entre e1 et e2 est l'espace entre img et p. (Bien sûr, vous devez commenter la bordure, et ce n'est que lorsque p font-size:0 que vous pouvez obtenir e1-e2 égal à 0).
淡淡烟草味2017-05-19 10:20:44
Soulignez une chose : le cas 1 devrait être le cas 2
Trois points : La hauteur de
1.p est prise en charge par line-height
. line-height
撑起。
2.默认情况下,line-height
为normal
(1.1-1.2由浏览器决定),又是由font-size
决定
3.offsetHeight
还包括border
所以,我们再来看:
情况1:在父元素p
设置font-size:0
;此时,span
继承font-size:0
,但border
上下和2px,所以,p
的offsetHeight
=内容高度+border
,内容高度=img
的offsetHeight
+span
的2px,所以e1.offsetHeight-e2.offsetHeight=2
才对
情况2:在子元素上分别设置font-size:0
;img
和span
的情况和上述一样,但是p
的font-size
默认为16px
;line-height
2. Par défaut, line-height
est normal
(1.1-1.2 est déterminé par le navigateur), qui est déterminé par font-size
.
offsetHeight
inclut également une border
🎜
🎜Alors, regardons : 🎜Cas 1 : définissez font-size:0
dans l'élément parent p
à ce moment-là, span
hérite ; font-size:0
, mais border
haut et bas font 2 pixels, donc offsetHeight
=hauteur du contenu de p
+ border
, content height = offsetHeight
de img
+ 2px de span
, donc e1. offsetHeight-e2.offsetHeight= 2
est correct🎜Cas 2 : définition de font-size:0
; img
et span
sur l'enfant éléments respectivement et Identique à ci-dessus, mais la font-size
de p
est par défaut 16px
la line-height
La valeur est déterminée par le navigateur. Ainsi, la hauteur de son contenu change et la valeur finale est déterminée par le navigateur. 🎜