admin管理员组文章数量:1023120
I want the navbar to be sticky on wide screen, and this works. I don't want it to collapse when on a mobile viewport. How can I make it so that the navbar simply unsticks from the top when on a small screen? Here is my HTML:
<div class="navbar-light" style="position: sticky; top: 0px; background-color: #fff0d8;">
<div class="container">
<ul class="sc-nav nav navbar-nav nav-fill w-100 flex-md-row">
<li class="nav-item">
<a class="nav-link" href="#">aaa</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">bbbb</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ccc</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ddd</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">eee</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ffffffffff</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">sdasdasdasd</a>
</li>
</ul>
I want the navbar to be sticky on wide screen, and this works. I don't want it to collapse when on a mobile viewport. How can I make it so that the navbar simply unsticks from the top when on a small screen? Here is my HTML:
<div class="navbar-light" style="position: sticky; top: 0px; background-color: #fff0d8;">
<div class="container">
<ul class="sc-nav nav navbar-nav nav-fill w-100 flex-md-row">
<li class="nav-item">
<a class="nav-link" href="#">aaa</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">bbbb</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ccc</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ddd</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">eee</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ffffffffff</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">sdasdasdasd</a>
</li>
</ul>
Share Improve this question asked Nov 1, 2017 at 22:16 bogdanbogdan 6671 gold badge8 silver badges17 bronze badges 1
- which bootstrap version are you using ? – Aaqib Commented Nov 1, 2017 at 22:18
2 Answers
Reset to default 6Just use a media query to change the position
to relative
. Note that you'll need !important
to override your inline style declaration, as inline styles have the maximum level of specificity.
@media screen and (max-width: 768px) { /* Bootstrap's mobile view breakpoint */
.navbar-light {
position: relative !important;
}
}
This can be seen in the following example:
@media screen and (max-width: 480px) {
.navbar-light {
position: relative !important;
}
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn./bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
<div class="navbar-light" style="position: sticky; top: 0px; background-color: #fff0d8;">
<div class="container">
<ul class="sc-nav nav navbar-nav nav-fill w-100 flex-md-row">
<li class="nav-item">
<a class="nav-link" href="#">aaa</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">bbbb</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ccc</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ddd</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">eee</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ffffffffff</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">sdasdasdasd</a>
</li>
</ul>
Hope this helps! :)
- You could have used the built-in class
sticky-top
https://getbootstrap./docs/4.0/utilities/position/
Sticky top
Position an element at the top of the viewport, from edge to edge, but only after you scroll past it. The
.sticky-top
utility uses CSS’sposition: sticky
, which isn’t fully supported in all browsers.Microsoft Edge and IE11 will render
position: sticky
asposition: relative
. As such, we wrap the styles in a@supports
query, limiting the stickiness to only browsers that properly can render it.
<div class="sticky-top">...</div>
- and create a custom break point at
@media screen and (max-width: 767px)
to matchflex-md-row
break point.
https://getbootstrap./docs/4.0/layout/overview/#responsive-breakpoints
// Extra small devices (portrait phones, less than 576px)
// No media query since this is the default in Bootstrap
// Small devices (landscape phones, 576px and up)
@media (min-width: 576px) { ... }
// Medium devices (tablets, 768px and up)
@media (min-width: 768px) { ... }
// Large devices (desktops, 992px and up)
@media (min-width: 992px) { ... }
// Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }
@media screen and (max-width: 767px) {
.sticky-top {
position: relative !important;
}
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn./bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" >
<div class="navbar-light" style="background-color: #fff0d8;">
<div class="container">
<ul class="sc-nav nav navbar-nav nav-fill w-100 flex-md-row sticky-top">
<li class="nav-item">
<a class="nav-link" href="#">aaa</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">bbbb</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ccc</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ddd</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">eee</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ffffffffff</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">sdasdasdasd</a>
</li>
</ul>
<div style="height:200vh">give a scroll to the demo</div>
I want the navbar to be sticky on wide screen, and this works. I don't want it to collapse when on a mobile viewport. How can I make it so that the navbar simply unsticks from the top when on a small screen? Here is my HTML:
<div class="navbar-light" style="position: sticky; top: 0px; background-color: #fff0d8;">
<div class="container">
<ul class="sc-nav nav navbar-nav nav-fill w-100 flex-md-row">
<li class="nav-item">
<a class="nav-link" href="#">aaa</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">bbbb</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ccc</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ddd</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">eee</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ffffffffff</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">sdasdasdasd</a>
</li>
</ul>
I want the navbar to be sticky on wide screen, and this works. I don't want it to collapse when on a mobile viewport. How can I make it so that the navbar simply unsticks from the top when on a small screen? Here is my HTML:
<div class="navbar-light" style="position: sticky; top: 0px; background-color: #fff0d8;">
<div class="container">
<ul class="sc-nav nav navbar-nav nav-fill w-100 flex-md-row">
<li class="nav-item">
<a class="nav-link" href="#">aaa</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">bbbb</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ccc</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ddd</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">eee</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ffffffffff</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">sdasdasdasd</a>
</li>
</ul>
Share Improve this question asked Nov 1, 2017 at 22:16 bogdanbogdan 6671 gold badge8 silver badges17 bronze badges 1
- which bootstrap version are you using ? – Aaqib Commented Nov 1, 2017 at 22:18
2 Answers
Reset to default 6Just use a media query to change the position
to relative
. Note that you'll need !important
to override your inline style declaration, as inline styles have the maximum level of specificity.
@media screen and (max-width: 768px) { /* Bootstrap's mobile view breakpoint */
.navbar-light {
position: relative !important;
}
}
This can be seen in the following example:
@media screen and (max-width: 480px) {
.navbar-light {
position: relative !important;
}
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn./bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
<div class="navbar-light" style="position: sticky; top: 0px; background-color: #fff0d8;">
<div class="container">
<ul class="sc-nav nav navbar-nav nav-fill w-100 flex-md-row">
<li class="nav-item">
<a class="nav-link" href="#">aaa</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">bbbb</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ccc</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ddd</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">eee</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ffffffffff</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">sdasdasdasd</a>
</li>
</ul>
Hope this helps! :)
- You could have used the built-in class
sticky-top
https://getbootstrap./docs/4.0/utilities/position/
Sticky top
Position an element at the top of the viewport, from edge to edge, but only after you scroll past it. The
.sticky-top
utility uses CSS’sposition: sticky
, which isn’t fully supported in all browsers.Microsoft Edge and IE11 will render
position: sticky
asposition: relative
. As such, we wrap the styles in a@supports
query, limiting the stickiness to only browsers that properly can render it.
<div class="sticky-top">...</div>
- and create a custom break point at
@media screen and (max-width: 767px)
to matchflex-md-row
break point.
https://getbootstrap./docs/4.0/layout/overview/#responsive-breakpoints
// Extra small devices (portrait phones, less than 576px)
// No media query since this is the default in Bootstrap
// Small devices (landscape phones, 576px and up)
@media (min-width: 576px) { ... }
// Medium devices (tablets, 768px and up)
@media (min-width: 768px) { ... }
// Large devices (desktops, 992px and up)
@media (min-width: 992px) { ... }
// Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }
@media screen and (max-width: 767px) {
.sticky-top {
position: relative !important;
}
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn./bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" >
<div class="navbar-light" style="background-color: #fff0d8;">
<div class="container">
<ul class="sc-nav nav navbar-nav nav-fill w-100 flex-md-row sticky-top">
<li class="nav-item">
<a class="nav-link" href="#">aaa</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">bbbb</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ccc</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ddd</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">eee</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ffffffffff</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">sdasdasdasd</a>
</li>
</ul>
<div style="height:200vh">give a scroll to the demo</div>
本文标签:
版权声明:本文标题:javascript - How can I stop the bootstrap 4 navbar from sticking to the top of the page when in mobile viewport? - Stack Overflo 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/questions/1745577179a2157091.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论