J'ai une situation où des éléments sont parfois chargés au chargement de la page, et parfois ils sont générés par JavaScript à une date ultérieure, rien d'extraordinaire. Cependant, les éléments générés dynamiquement sont espacés sensiblement différents dans Chrome, FireFox et Safari.Pourquoi les éléments JS ajoutés sont-ils différents de ceux au chargement de la page?
Ci-dessous est une page HTML où un morceau d'éléments est dans les DOM au chargement de la page et une copie exacte de ces éléments est ajoutée par JavaScript après chargement de la page. Pour une raison quelconque, les éléments ajoutés au JS (ceux de #added-late
) sont différents de ceux du #exists-at-page-load
, bien que le style et la disposition soient les mêmes.
Question: Pourquoi les éléments générés statiquement, ceux de #exists-at-page-load
, ont-ils un espace supplémentaire autour d'eux?
<!DOCTYPE html>
<html>
<style>
.dark-section-header {
background-color: #222;
margin-bottom: 5px;
}
.dark-section-header div {
display: inline-block;
height: 30px;
width: 20px;
margin: 0;
margin-left: 10px;
}
.dark-section-header .track-menu {
outline: 1px dashed #f00;
}
.dark-section-header .play-button {
outline: 1px dashed #0f0;
}
.dark-section-header .star-button {
outline: 1px dashed #77f;
}
</style>
</head>
<body>
<div id="exists-at-page-load">
<div class="dark-section-header">
<div class="play-button"></div>
<div class="track-menu"></div>
<div class="star-button"></div>
</div>
</div>
<div id="added-late"></div>
<script>
setTimeout(function(){
document.getElementById('added-late').innerHTML =
'<div class="dark-section-header">' +
'<div class="play-button"></div>' +
'<div class="track-menu"></div>' +
'<div class="star-button"></div>' +
'</div>';
}, 0);
</script>
</body>
</html>
[jsFiddle] (http : //jsfiddle.net/Wnr6z/) – Eric