如何使用 z-index 将侧边栏移动到其他 HTML 元素的前面?
How can I move my sidebar to the front of other HTML elements with z-index?
fiddle 就在这里:https://jsfiddle.net/iggyfiddle/spcsyq8u/6/
如果您注意到,当您单击右上角的边栏按钮时,文本和图像就位于边栏的正前方。
从技术上讲,我可以将侧边栏元素移到最底部,这样就可以解决问题。但这不是正确的 CSS 方式,在我的实际应用程序代码中,这很难做到。
我四处寻找解决方案并想到了 z-index。我让 main sidebar 的 z-index 值 > primary-content 的 值,但它看起来仍然一样。主要内容是文本和图像在一起。
.main-sidebar {
padding:15px;
overflow:hidden;
width:300;
position: relative;
z-index: 1;
}
.primary-content {
position: relative;
z-index: 0;
}
如何使用 Z-index 将侧边栏移动到 所有内容 的前面?
将您的 z-index
值移动到 #main-sidebar-container
并将其设置为 >1000
(即 nav
柱的 z-index
):https://jsfiddle.net/g8bz9Leh/
#main-sidebar-container {
...
z-index: 1001;
}
将 z-index
添加到 #main-sidebar-container
id。
更改 css 以执行此操作。当我在您的 fiddle 中执行此操作时,它起作用了。原因是容器就是那个包含边栏的东西。所以如果它没有被推到顶部,它里面的任何东西也不会。
#main-sidebar-container {
padding:15px;
/*overflow:hidden;*/
width:300;
position: absolute;
z-index: 1111111;
}
.primary-content {
position: absolute;
z-index: 0;
}
第一个 z-index 在同一层工作(nav 和#main-sidebar-container 是同一层元素)
第 2 次将 z-index 添加到导航栏,将 z-index 添加到#main-sidebar-container,这样您就可以控制哪个元素位于顶部。
(另一种解决方案是您也可以将 z-index: 9999
设置为 #main-sidebar-container
)
/* Latest compiled and minified CSS included as External Resource*/
/* Optional theme */
@import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css');
body {
margin: 10px;
}
nav.navbar{
position: relative;
z-index: 1;
}
#main-sidebar-container {
height: auto;
position: fixed;
top: 0px;
bottom: 0px;
width: 200px;
background-color: #202020;
transition: width 0.35s ease;
-webkit-transition: width 0.35s ease;
-moz-transition: width 0.35s ease;
-o-transition: width 0.35s ease;
z-index: 10;
}
#main-sidebar-container a {
color: #ffffff;
}
.main-sidebar {
padding: 15px;
overflow: hidden;
width: 300;
position: relative;
z-index: 1;
}
.primary-content {
position: relative;
z-index: 0;
}
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<nav class="navbar navbar-light bg-faded">
<a class="navbar-brand navigation-title" href="#">
<span class="glyphicon glyphicon-apple" aria-hidden="true"></span>
</a>
<a class="navbar-brand navigation-title" href="#">One</a>
<a class="navbar-brand navigation-title" href="#">Two</a>
<a class="navbar-brand pull-right hamburger-menu" data-toggle="collapse" data-target="#main-sidebar-container" aria-controls="main-sidebar-container" aria-expanded="false" href="#">
Click for Sidebar
</a>
</nav>
<!-- sidebar -->
<div id="main-sidebar-container" class="collapse width pull-right">
<div class="main-sidebar">
<div class="row">
<div class="col-xs-12">
<a class="navbar-brand sidebar-texts" href="#">Menu</a>
<a class="navbar-brand sidebar-texts" data-toggle="modal" data-target=".login-modal-sm" href="#">Menu2</a>
</div>
</div>
</div>
</div>
<!-- end sidebar -->
<!-- main text -->
<div class="row primary-content">
<div class="col-md-12">
<h1>Hello</h1>
<h4>Lorem Ipsum I love Dimsum</h4>
<h2>
Hello Cat!
</h2>
<img class="card-img-top img-circle img-responsive pull-left" style="margin:0 auto;" src="http://placekitten.com/g/150/150" alt="Card image cap">
</div>
</div>
<!-- end main text -->
fiddle 就在这里:https://jsfiddle.net/iggyfiddle/spcsyq8u/6/
如果您注意到,当您单击右上角的边栏按钮时,文本和图像就位于边栏的正前方。
从技术上讲,我可以将侧边栏元素移到最底部,这样就可以解决问题。但这不是正确的 CSS 方式,在我的实际应用程序代码中,这很难做到。
我四处寻找解决方案并想到了 z-index。我让 main sidebar 的 z-index 值 > primary-content 的 值,但它看起来仍然一样。主要内容是文本和图像在一起。
.main-sidebar {
padding:15px;
overflow:hidden;
width:300;
position: relative;
z-index: 1;
}
.primary-content {
position: relative;
z-index: 0;
}
如何使用 Z-index 将侧边栏移动到 所有内容 的前面?
将您的 z-index
值移动到 #main-sidebar-container
并将其设置为 >1000
(即 nav
柱的 z-index
):https://jsfiddle.net/g8bz9Leh/
#main-sidebar-container {
...
z-index: 1001;
}
将 z-index
添加到 #main-sidebar-container
id。
更改 css 以执行此操作。当我在您的 fiddle 中执行此操作时,它起作用了。原因是容器就是那个包含边栏的东西。所以如果它没有被推到顶部,它里面的任何东西也不会。
#main-sidebar-container {
padding:15px;
/*overflow:hidden;*/
width:300;
position: absolute;
z-index: 1111111;
}
.primary-content {
position: absolute;
z-index: 0;
}
第一个 z-index 在同一层工作(nav 和#main-sidebar-container 是同一层元素)
第 2 次将 z-index 添加到导航栏,将 z-index 添加到#main-sidebar-container,这样您就可以控制哪个元素位于顶部。
(另一种解决方案是您也可以将 z-index: 9999
设置为 #main-sidebar-container
)
/* Latest compiled and minified CSS included as External Resource*/
/* Optional theme */
@import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css');
body {
margin: 10px;
}
nav.navbar{
position: relative;
z-index: 1;
}
#main-sidebar-container {
height: auto;
position: fixed;
top: 0px;
bottom: 0px;
width: 200px;
background-color: #202020;
transition: width 0.35s ease;
-webkit-transition: width 0.35s ease;
-moz-transition: width 0.35s ease;
-o-transition: width 0.35s ease;
z-index: 10;
}
#main-sidebar-container a {
color: #ffffff;
}
.main-sidebar {
padding: 15px;
overflow: hidden;
width: 300;
position: relative;
z-index: 1;
}
.primary-content {
position: relative;
z-index: 0;
}
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<nav class="navbar navbar-light bg-faded">
<a class="navbar-brand navigation-title" href="#">
<span class="glyphicon glyphicon-apple" aria-hidden="true"></span>
</a>
<a class="navbar-brand navigation-title" href="#">One</a>
<a class="navbar-brand navigation-title" href="#">Two</a>
<a class="navbar-brand pull-right hamburger-menu" data-toggle="collapse" data-target="#main-sidebar-container" aria-controls="main-sidebar-container" aria-expanded="false" href="#">
Click for Sidebar
</a>
</nav>
<!-- sidebar -->
<div id="main-sidebar-container" class="collapse width pull-right">
<div class="main-sidebar">
<div class="row">
<div class="col-xs-12">
<a class="navbar-brand sidebar-texts" href="#">Menu</a>
<a class="navbar-brand sidebar-texts" data-toggle="modal" data-target=".login-modal-sm" href="#">Menu2</a>
</div>
</div>
</div>
</div>
<!-- end sidebar -->
<!-- main text -->
<div class="row primary-content">
<div class="col-md-12">
<h1>Hello</h1>
<h4>Lorem Ipsum I love Dimsum</h4>
<h2>
Hello Cat!
</h2>
<img class="card-img-top img-circle img-responsive pull-left" style="margin:0 auto;" src="http://placekitten.com/g/150/150" alt="Card image cap">
</div>
</div>
<!-- end main text -->