【发布时间】:2019-07-17 02:41:39
【问题描述】:
我正在制作斐波那契螺旋线。代码如下。我需要创建螺旋的第二层(螺旋由一系列嵌套的 div 组成)并使用 for 循环创建多个层。 我需要使用 .item-one 类更改文件中第一个 div 元素的高度,而不是使用 .item-one 类的后续 div。
我如何只选择第一个,记住将有另外 4 个 div 元素与类 .item-one 也是他们父母的第一个孩子,只使用 CSS 和 vanilla JS? (我只需要更改第一个的高度,并且需要将所有其余的 .item-one div 设置为不同的高度。)
我试过 :first-child 和 :first-of-type 但所有 .item-one 元素都是它们各自父母的第一个孩子,所以 :first-child 和 :first-of-type 都选择所有.item-one 元素,而不仅仅是页面上的第一个元素。 这个帖子select first element of the same class 很接近,除了解决方案选择所有第一个子元素,而我只想选择该类文件中的第一个 div。
代码:
HTML
<div class="item-one">
<div class="item-two">
<div class="item-three">
<div class="item-four"></div>
</div>
</div>
</div>
JS
window.addEventListener('load', function() {
var $items = document.getElementsByTagName("div");
var $item = $items[0];
var $cloned_item = $item.cloneNode(true);
var $final_item = $items[$items.length - 1];
for (var i = 1; i <= 5; i++) {
$final_item.appendChild($cloned_item);
$final_item = $items[$items.length - 1];
$cloned_item = $item.cloneNode(true);
}
});
最终结果看起来像这样。
<div class="item-one">
<div class="item-two">
<div class="item-three">
<div class="item-four">
<div class="item-one">
<div class="item-two">
<div class="item-three">
<div class="item-four">
<div class="item-one">
<div class="item-two">
<div class="item-three">
<div class="item-four">...and so on...</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
【问题讨论】:
-
您需要在 CSS 规则中使用第一个
<div class="item-one">的父级,否则您将无法在没有脚本的情况下解决该问题 -
我会为每个 div 添加一个额外的类,它会告诉您它是哪个组的成员——它为您的代码添加了一个缺少的逻辑。
<div class="item-one one"> <div class="item-two one"> <div class="item-three one"> <div class="item-four one"> <div class="item-one two"> <div class="item-two two"> <div class="item-three two"> <div class="item-four two"> <div class="item-one three"> <div class="item-two three">...and so on...</div> -
@LGSon 谢谢!我试图用 :first-child 等将它过度复杂化。
标签: javascript html css css-selectors