gpt4 book ai didi

javascript - 为什么 JS 添加的元素的样式与页面加载时的不同?

转载 作者:行者123 更新时间:2023-11-30 08:53:28 24 4
gpt4 key购买 nike

我有这样一种情况,有时元素是在页面加载时加载的,有时它们是在稍后由 JavaScript 生成的,没有什么特别的。然而,动态生成的元素在 Chrome、FireFox 和 Safari 中的间距明显不同。

下面是一个 HTML 页面,其中一大块元素在页面加载时位于 DOM 中,并且这些元素的精确副本在页面加载后由 JavaScript 添加。由于某些原因,JS 添加的元素(#added-late 中的元素)的样式与 #exists-at-page-load 中的元素不同,尽管所有样式和布局都是一样。

问题:为什么静态生成的元素(#exists-at-page-load 中的元素)周围有额外的空间?

<!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>

最佳答案

要么在 div 之间使用 javascript 插入空格:

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 );

或者确保您的 HTML 不会:

<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>

Here's js和间距的每一种组合。

关于javascript - 为什么 JS 添加的元素的样式与页面加载时的不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15692267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com