I am using CSS to create subheads that stay stuck while scrolling until the next subhead comes along and nudges it out of the way, but (because I'm using rotated text) I'd like to somehow control (through padding, perhaps?) when the the subhead becomes "unstuck" so that the subheads don't overlap. Here's what I have:
.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>
If you scroll up, you'll see the "A" subhead stay stuck until the "B" subhead comes along, but the two overlap for a moment. I'd like to be able to have the "A" header become unstuck so it appears to stay within it's own blue area.
Of course, the problem is compounded with longer headers:
.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>
I recognize that this may just be pushing CSS too far. I'd really like to avoid any Javascript if I can, but if I have to go that route I will.
Any ideas?