我正在建立一个有粘性导航栏和桌子的网站。 表格的第一列包含垂直文本。该表足够长,因此可以滚动。但是,滚动时,旋转的文本表现得很有趣:它出现在导航栏上。所有其他文本都按预期运行。
这是我的example.html:
<!DOCTYPE html>
<html lang="en">
<head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Funny overlay example</title>
</head>
<body>
<nav class="navbar">
<div>
Sticky Navbar
</div>
</nav>
<section>
<div>
<table>
<tr><td rowspan="8" class="cell_vert_text"><div class="rotwrap"><div class="textcon">Problematic Text</div></div></td><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
</table>
</div>
</section>
</body>
</html>
还有style.css:
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.navbar {
background: #ff0000;
position: sticky;
top: 0;
width: 100%;
}
table td.cell_vert_text {
text-align: center;
white-space: nowrap;
vertical-align: middle;
width: 1.5em;
}
table td.cell_vert_text div.rotwrap div.textcon {
transform: rotate(270deg);
margin-left: -10em;
margin-right: -10em;
}
我怀疑旋转对DOM结构有一些副作用,但我真的不明白发生了什么。我尝试通过引入z-index属性来解决问题,但它没有帮助。 我不只是在寻找一种解决方案来推动导航栏后面的旋转文本,而是清楚地解释实际发生的事情。谢谢!
答案 0 :(得分:2)
对元素进行转换会创建stacking context,因为它的父级都不是堆叠上下文,它与其他堆叠上下文相同,即导航栏(位置粘滞)。
如果我们在同一级别上有2个堆叠上下文,并且两者都没有z-index
,则最后一个显示在它之前的那些上面。
解决方案:在导航栏上设置z-index:
.navbar {
z-index: 1;
background: #ff0000;
position: sticky;
top: 0;
width: 100%;
}
<强>演示强>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.container {
height: 150px;
overflow: auto;
}
.navbar {
z-index: 1;
background: #ff0000;
position: sticky;
top: 0;
width: 100%;
}
table td.cell_vert_text {
text-align: center;
white-space: nowrap;
vertical-align: middle;
width: 1.5em;
}
table td.cell_vert_text div.rotwrap div.textcon {
transform: rotate(270deg);
margin-left: -10em;
margin-right: -10em;
}
<div class="container">
<nav class="navbar">
<div>
Sticky Navbar
</div>
</nav>
<section>
<div>
<table>
<tr>
<td rowspan="8" class="cell_vert_text">
<div class="rotwrap">
<div class="textcon">Problematic Text</div>
</div>
</td>
<td class="cell_horiz_text">Ok Text</td>
</tr>
<tr>
<td class="cell_horiz_text">Ok Text</td>
</tr>
<tr>
<td class="cell_horiz_text">Ok Text</td>
</tr>
<tr>
<td class="cell_horiz_text">Ok Text</td>
</tr>
<tr>
<td class="cell_horiz_text">Ok Text</td>
</tr>
<tr>
<td class="cell_horiz_text">Ok Text</td>
</tr>
<tr>
<td class="cell_horiz_text">Ok Text</td>
</tr>
<tr>
<td class="cell_horiz_text">Ok Text</td>
</tr>
</table>
</div>
</section>
</div>
答案 1 :(得分:2)
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body{
height: 5000px;
}
.navbar {
background: #ff0000;
position: sticky;
top: 0;
width: 100%;
z-index: 1;
}
table td.cell_vert_text {
text-align: center;
white-space: nowrap;
vertical-align: middle;
width: 1.5em;
}
table td.cell_vert_text div.rotwrap div.textcon {
transform: rotate(270deg);
margin-left: -10em;
margin-right: -10em;
}
<body>
<nav class="navbar">
<div>
Sticky Navbar
</div>
</nav>
<section>
<div>
<table>
<tr><td rowspan="8" class="cell_vert_text"><div class="rotwrap"><div class="textcon">Problematic Text</div></div></td><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
<tr><td class="cell_horiz_text">Ok Text</td></tr>
</table>
</div>
</section>
</body>
为导航栏规则指定正z-index
值
.navbar {
background: #ff0000;
position: sticky;
top: 0;
width: 100%;
z-index: 1
}