javascript - 为什么水平列表项对齐不适用于动态添加的元素

标签 javascript css html html-lists

我正在创建一个 div 网格,并且决定使用无序列表作为容器,这样我就可以利用水平对齐包含 div 的列表项的优势。问题在于,该理由仅适用于页面加载之前编写的 HTML。如果我尝试使用 Javascript 动态创建和添加列表项,则论证失败。

这个fiddle演示了两个无序列表的问题,其中一个是静态填充的(成功),另一个是动态填充的(失败)。

代码如下:

HTML

<ul>
    <li><div></div></li>
    <li><div></div></li>
    <li><div></div></li>
</ul>

<ul id="list"></ul>  

Javascript

var list = document.getElementById("list");
for (var i=0; i<3; i++) {
    var li = document.createElement("li");
    var div = document.createElement("div");
    li.appendChild(div);
    list.appendChild(li);  
}  

CSS

ul {
    margin: 0;
    padding: 0;
    list-style-type: none;
    text-align: justify;
}
ul:after {
    content: "";
    width: 100%;
    display: inline-block;
}
li {
    display: inline;
}
div {
    display: inline-block;
    width: 100px;
    height: 100px;
    background: #4391EE;
    border: 1px solid black;
}

最佳答案

静态版本和动态版本之间的主要区别在于静态版本的每个元素之间有空格。

要修复动态版本,您还需要附加一些空格:

list.appendChild(document.createTextNode(" "));

这是一个演示:http://jsfiddle.net/thirtydot/kQNNe/1/

关于javascript - 为什么水平列表项对齐不适用于动态添加的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393557/

相关文章:

html - 将两个表格列彼此对齐

javascript - JavaScript 中逗号分隔的对象是什么?

javascript - HTML Canvas - 在选定位置绘制矩形

html - CSS为数字/非数字定义不同的格式

javascript - 如何使用 jquery 删除字段?

javascript - 在 Chrome 中滚动时出现 "rubber-band"问题

javascript - 将 d3 条形图重置为原始数据源时重复轴节点

javascript - 如果没有选择单选按钮,则发出警报

css - 使用 CSS3 转换将 DIV 放在一边

html - React JSX 文件的 W3C HTML 验证