我尝试创建带有几个缩进级别的div,这取决于之前的元素。
我看到我们可以用"ul“和"li”来创建树,但是我必须在我的例子)=中使用div。
#container {
border: 2px solid black;
padding: 10px;
}
#container div {
height: 30px;
border: 1px solid black;
}
.title {
background-color: blueviolet;
}
.element {
background-color: greenyellow;
}
[data-id=title-2] {
margin-left: 20px;
}
[data-id=title-3] {
margin-left: 40px;
}
#container [data-id=title-2]~.element {
margin-left: 20px;
}
#container [data-id=title-3]~.element {
margin-left: 40px;
}<div id="container">
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="element">Element A</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="title" data-id="title-3">Title 3</div>
<div class="element">Element B</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="element">Element C</div>
</div>
我希望我的“元素C”与我的“标题-2”对齐,因为它前面有一个“标题-2”。
https://jsfiddle.net/ghncdfpt/
如果你有什么线索可以帮我的话,谢谢。
发布于 2019-07-19 19:54:19
一个讨厌的想法,但如果你知道你将有多少个连续的部分,它可能会工作。
此示例将适用于连续4个部分。注意最后一个错误的地方:
#container {
border: 2px solid black;
padding: 10px;
}
#container div {
height: 30px;
border: 1px solid black;
}
.title {
background-color: blueviolet;
}
.element {
background-color: greenyellow;
}
[data-id=title-2] {
margin-left: 20px;
}
[data-id=title-3] {
margin-left: 40px;
}
[data-id=title-2]~.element,
[data-id*=title]~.element~[data-id=title-2]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-2]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-2]~.element {
margin-left: 20px;
}
[data-id=title-3]~.element,
[data-id*=title]~.element~[data-id=title-3]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-3]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-3]~.element {
margin-left: 40px;
}<div id="container">
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="element">Element A</div>
<div class="element">Element A</div>
<div class="element">Element A</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="title" data-id="title-3">Title 3</div>
<div class="element">Element B</div>
<div class="element">Element B</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="element">Element C</div>
<div class="element">Element C</div>
<div class="element">Element C</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="title" data-id="title-3">Title 3</div>
<div class="element">Element D</div>
<div class="element">Element D</div>
<div class="element">Element D</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="element">wrong</div>
<div class="element">wrong</div>
<div class="element">wrong</div>
</div>
我们可以添加更多的选择器,最后一节将起作用:
#container {
border: 2px solid black;
padding: 10px;
}
#container div {
height: 30px;
border: 1px solid black;
}
.title {
background-color: blueviolet;
}
.element {
background-color: greenyellow;
}
[data-id=title-2] {
margin-left: 20px;
}
[data-id=title-3] {
margin-left: 40px;
}
[data-id=title-2]~.element,
[data-id*=title]~.element~[data-id=title-2]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-2]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-2]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-2]~.element {
margin-left: 20px;
}
[data-id=title-3]~.element,
[data-id*=title]~.element~[data-id=title-3]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-3]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-3]~.element,
[data-id*=title]~.element~[data-id*=title]~.element~[data-id*=title]~.element~[data-id*=title]~.element~[data-id=title-3]~.element {
margin-left: 40px;
}<div id="container">
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="element">Element A</div>
<div class="element">Element A</div>
<div class="element">Element A</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="title" data-id="title-3">Title 3</div>
<div class="element">Element B</div>
<div class="element">Element B</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="element">Element C</div>
<div class="element">Element C</div>
<div class="element">Element C</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="title" data-id="title-3">Title 3</div>
<div class="element">Element D</div>
<div class="element">Element D</div>
<div class="element">Element D</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="element">correct</div>
<div class="element">correct</div>
<div class="element">correct</div>
</div>
这背后的诀窍是,我们在上一节的基础上增加了细节,以确保始终应用正确的样式。
发布于 2019-07-19 17:49:55
您应该使用这个+选择器,它的select元素紧接您前面的slelector之后:
#container [data-id=title-3] + .element {
margin-left: 40px;
}
#container [data-id=title-2] + .element {
margin-left: 20px;
}如果它下面有另一个.element div,那么添加以下规则,将~和+组合起来:
#container [data-id=title-3] + .element ~ .element {
margin-left: 40px;
}
#container [data-id=title-2] + .element ~ .element {
margin-left: 20px;
}发布于 2019-07-19 17:57:22
您可以在标题div中嵌套.element div。只需要在height元素上将#container div更改为min-height。
#container {
border: 2px solid black;
padding: 10px;
}
#container div {
min-height: 30px;
border: 1px solid black;
}
.title {
background-color: blueviolet;
}
.element {
background-color: greenyellow;
margin-top: 10px;
}
[data-id=title-2] {
margin-left: 20px;
}
[data-id=title-3] {
margin-left: 40px;
}<div id="container">
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">
Title 2
<div class="element">Element A</div>
</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">Title 2</div>
<div class="title" data-id="title-3">
Title 3
<div class="element">Element B</div>
</div>
<div class="title" data-id="title-1">Title 1</div>
<div class="title" data-id="title-2">
Title 2
<div class="element">Element C</div>
</div>
</div>
https://stackoverflow.com/questions/57117320
复制相似问题