如果没有JavaScript,是否有可能创建一个流动的阶梯级联元素?
含义:
[1]
[2]
[3]
[.]
等等任何数量的元素。
我正在使用这样的标记:
<div id="container">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
通过流动,我的意思是我在步骤中有多少元素并不重要,它只会起作用 - 所以没有每个元素的绝对定位,或者每个元素都有逐渐增加的余量(除非那里有&#39) ;某些方法可以永久地用css我不知道)。
此外,没有无限的子元素 - 一个可接受的解决方案可以在必要时混合使用更多元素,但这些框不应该是彼此的子元素。
固定尺寸可以,但首选灵活。
我确实有pen going here,但还没有成功。
答案 0 :(得分:1)
感谢@Banzay的链接,我使用浮动的子元素进行了解决,并在内容中添加了另一层包含作为内联块元素。
*{border-width:0;margin:0;padding:0;box-sizing:border-box;}
#con{
margin:50px;
background:#acc;
}
#con>div{
position:relative;
background:#ccd;
height:50px;
}
#con>div:before {
float: left;
content: "\00a0";
width: 50px;
height: 51px;
}
#con>div>div{
display:inline-block;
height:50px;
width:50px;
background:#000;
color:#fff;
}
&#13;
<div id="con">
<div><div>1</div></div>
<div><div>2</div></div>
<div><div>3</div></div>
<div><div>4</div></div>
<div><div>5</div></div>
</div>
&#13;
答案 1 :(得分:-1)
以下是您可以调整HTML的想法:
我知道,它依赖于嵌套元素而不是兄弟姐妹
.container {
position:relative;
width:20px;
height:20px;
}
.container div{
position:absolute;
width:20px;
height:20px;
border:1px solid;
left:100%;
top:100%;
}
.container div.bigger {
width:100px;
}
.container div.taller {
height:50px;
}
&#13;
<div class="container">
<div>1
<div class="taller">2
<div>3
<div class="bigger">4
<div>5</div>
</div>
</div>
</div>
</div>
</div>
&#13;
答案 2 :(得分:-1)
假设这是动态生成的HTML,您可以利用服务器端语言设置变量,并在CSS中使用calc
函数。
div {
margin-top: 5px;
border: 1px solid #d0d0d0;
height: 25px;
background-color: #e0e0e0;
/* This is the important line */
margin-left: calc(var(--indent) * 15px);
}
&#13;
<div style="--indent: 0;"></div>
<div style="--indent: 1;"></div>
<div style="--indent: 2;"></div>
<div style="--indent: 3;"></div>
<div style="--indent: 4;"></div>
<div style="--indent: 5;"></div>
<div style="--indent: 6;"></div>
<div style="--indent: 7;"></div>
<div style="--indent: 8;"></div>
<div style="--indent: 9;"></div>
<div style="--indent: 10;"></div>
<div style="--indent: 11;"></div>
<div style="--indent: 12;"></div>
<div style="--indent: 13;"></div>
<div style="--indent: 14;"></div>
<div style="--indent: 15;"></div>
<div style="--indent: 16;"></div>
<div style="--indent: 17;"></div>
<div style="--indent: 18;"></div>
<div style="--indent: 19;"></div>
&#13;
当然,如果你能做到这一点,它确实提出了一个问题,为什么不只是使用你的脚本语言来设置margin-left: ${incrementor} * indent
内联。
我确实试图利用CSS计数器,但遗憾的是calc
不支持使用计数器