我正在使用CSS创建子标题,使其在滚动时保持固定位置,直到下一个子标题出现并将其推开,但是(因为我使用了旋转文本)我希望通过控制填充等方式来控制子标题何时变为“非固定”状态,以避免子标题重叠。以下是我的代码:
.itemblock {
background-color: red;
color: white;
padding: 10px;
margin-bottom: 10px;
margin-left: 10px;
}
.subcategory {
border-left: solid 20px blue;
}
.subhead {
position: -webkit-sticky;
position: -moz-sticky;
position: -o-sticky;
position: -ms-sticky;
position: sticky;
color: white;
display: block;
height: 0px;
scroll: hidden;
top: 10px;
left: -40px;
margin-left: -18px;
transform-origin: top left;
transform: rotate(-90deg) translate(-20px);
}
<div class="subcategory">
<div class="subhead">A</div>
<div class="itemblock">Item A1</div>
<div class="itemblock">Item A2</div>
<div class="itemblock">Item A3</div>
<div class="itemblock">Item A4</div>
<div class="itemblock">Item A5</div>
<div class="itemblock">Item A6</div>
<div class="itemblock">Item A7</div>
<div class="itemblock">Item A8</div>
<div class="itemblock">Item A9</div>
</div>
<div class="subcategory">
<div class="subhead">B</div>
<div class="itemblock">Item B1</div>
<div class="itemblock">Item B2</div>
<div class="itemblock">Item B3</div>
<div class="itemblock">Item B4</div>
<div class="itemblock">Item B5</div>
<div class="itemblock">Item B6</div>
<div class="itemblock">Item B7</div>
<div class="itemblock">Item B8</div>
<div class="itemblock">Item B9</div>
</div>
<div class="subcategory">
<div class="subhead">C</div>
<div class="itemblock">Item C1</div>
<div class="itemblock">Item C2</div>
<div class="itemblock">Item C3</div>
<div class="itemblock">Item C4</div>
<div class="itemblock">Item C5</div>
<div class="itemblock">Item C6</div>
<div class="itemblock">Item C7</div>
<div class="itemblock">Item C8</div>
<div class="itemblock">Item C9</div>
</div>
当然,较长的标题问题更加复杂:
.itemblock {
background-color: red;
color: white;
padding: 10px;
margin-bottom: 10px;
margin-left: 10px;
}
.subcategory {
border-left: solid 20px blue;
}
.subhead {
position: -webkit-sticky;
position: -moz-sticky;
position: -o-sticky;
position: -ms-sticky;
position: sticky;
color: white;
display: block;
height: 0px;
scroll: hidden;
top: 10px;
left: -40px;
margin-left: -18px;
transform-origin: top left;
transform: rotate(-90deg) translate(-80px);
}
<div class="subcategory">
<div class="subhead">Subhead A</div>
<div class="itemblock">Item A1</div>
<div class="itemblock">Item A2</div>
<div class="itemblock">Item A3</div>
<div class="itemblock">Item A4</div>
<div class="itemblock">Item A5</div>
<div class="itemblock">Item A6</div>
<div class="itemblock">Item A7</div>
<div class="itemblock">Item A8</div>
<div class="itemblock">Item A9</div>
</div>
<div class="subcategory">
<div class="subhead">Subhead B</div>
<div class="itemblock">Item B1</div>
<div class="itemblock">Item B2</div>
<div class="itemblock">Item B3</div>
<div class="itemblock">Item B4</div>
<div class="itemblock">Item B5</div>
<div class="itemblock">Item B6</div>
<div class="itemblock">Item B7</div>
<div class="itemblock">Item B8</div>
<div class="itemblock">Item B9</div>
</div>
<div class="subcategory">
<div class="subhead">Subhead C</div>
<div class="itemblock">Item C1</div>
<div class="itemblock">Item C2</div>
<div class="itemblock">Item C3</div>
<div class="itemblock">Item C4</div>
<div class="itemblock">Item C5</div>
<div class="itemblock">Item C6</div>
<div class="itemblock">Item C7</div>
<div class="itemblock">Item C8</div>
<div class="itemblock">Item C9</div>
</div>
我认识到这可能过分地推动了CSS的能力。如果可能,我真的很想避免使用任何JavaScript,但如果必须采用这种方法,我会这样做。
有什么建议吗?
.subhead
文本颜色与背景相匹配的事实。我真正想做的是在.subhead
之间创建一个缓冲区,以便文本似乎被限制在.subcategory
的垂直边界内。但你的解决方案绝对比我发布的要好得多。 - TobyRush