当前位置: 代码迷 >> JavaScript >> 如何从左向右滑动导航栏?
  详细解决方案

如何从左向右滑动导航栏?

热度:64   发布时间:2023-06-05 10:13:05.0

Bootstrap支持从顶部切换导航栏。 屏幕尺寸较小时,如何从左侧滑动?

例如:

在上面提供的屏幕截图中,当调整屏幕大小时,导航栏被切换并从顶部向下滑动。 我宁愿导航栏从左侧滑动。 如何在Bootstrap中实现此功能?

当前,根据代码,导航栏从顶部滑动。 这是我的代码:

<nav class="navbar navbar-site navbar-default" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button data-target=".navbar-collapse" data-toggle="collapse" class="navbar-toggle" type="button"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
            <a href="{% url 'index' %} " class="navbar-brand logo logo-title">
            <span class="logo-icon"><i class="icon icon-search-1 ln-shadow-logo shape-0"></i> </span> <span>Companyname </span> </a> 
        </div>
        <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav navbar-right">
                {% if user.is_authenticated %}
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <span>{{user.first_name}}</span> <i class="icon-user fa"></i> <i class=" icon-down-open-big fa"></i></a>
                        <ul class="dropdown-menu user-menu">
                            <li class="active"><a href="account-home.html"><i class="icon-home"></i> Personal Home </a></li>
                            <li><a href="statements.html"><i class=" icon-money "></i> Payment history </a></li>
                            <li><a href="{% url 'logout' %}"> <i class="glyphicon glyphicon-off"></i> Signout </a></li>
                        </ul>
                    </li>
                {% else %}
                    <li><a href="{% url 'login' %}">Login</a></li>
                    <li><a href="{% url 'signup' %}">Signup</a></li>
                {% endif %}
                <li class="postadd"><a class="btn btn-block btn-border btn-post btn-danger" href="{% url 'post_ad' %}">Post Free Add</a></li>
            </ul>
        </div>
    </div>
</nav>

简单。 从更改默认行为

<button ... data-toggle="collapse" data-target="#my-navbar-collapse">

到我们现在要实现的slide-collapse功能

<button ... data-toggle="slide-collapse" data-target="#my-navbar-collapse">

菜单包含在ID为my-navbar-collapse div中。 请注意,使用id代替类选择器将改善可访问性,因为引导程序会自动将ARIA状态(展开/折叠)附加到菜单中。

<div id="my-navbar-collapse" class="collapse navbar-collapse">
    <ul class="nav navbar-nav">
        ...
    </ul>
</div>

引导程序中的.collapse类确保菜单最初被隐藏。


编码:

然后将以下Javascript粘贴到页脚中的某个位置:

// mobile menu slide from the left
$('[data-toggle="slide-collapse"]').on('click', function() {
    $navMenuCont = $($(this).data('target'));
    $navMenuCont.animate({'width':'toggle'}, 350);
});

以及以下CSS属性:

#my-navbar-collapse {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 1;
    width: 280px; /*example + never use min-width with this solution */
    height: 100%;
}

一些提示:

  • 最好也进行响应式查询,其中智能手机的菜单宽度为100%,而不是始终为280px。 它像一种魅力。
  • 如果您有台式机的水平菜单,而滑块仅用于较小的设备,则可以轻松利用 Bootstrap LESS变量

这是完整的例子

 $(document).ready(function() { $('#slide-nav.navbar-inverse').after($('<div class="inverse" id="navbar-height-col"></div>')); $('#slide-nav.navbar-default').after($('<div id="navbar-height-col"></div>')); var slidewidth = '20%'; var navbarneg = '-' + slidewidth; if ($(window).width() < 767) { $('#navbar-height-col').css("width", slidewidth); $('#navbar-height-col').css("left", navbarneg); $('#slide-nav #slidemenu').css("width", slidewidth); $('#slide-nav #slidemenu').css("left", navbarneg); } $("#slide-nav").on("click", '.navbar-toggle', function(e) { // slider is active var selected = $(this).hasClass('slide-active'); // set slidemenu width $('#slidemenu').stop().animate({ left: selected ? navbarneg : '0px' }); // set navbar width $('#navbar-height-col').stop().animate({ left: selected ? navbarneg : '0px' }); // set content let $('#page-content').stop().animate({ left: selected ? '0px' : slidewidth }); // set navbar left $('.navbar-header').stop().animate({ left: selected ? '0px' : slidewidth }); $(this).toggleClass('slide-active', !selected); $('#slidemenu').toggleClass('slide-active'); $('#page-content, .navbar, body, .navbar-header').toggleClass('slide-active'); }); var selected = '#slidemenu, #page-content, body, .navbar, .navbar-header'; $(window).on("resize", function() { if ($(window).width() > 767 && $('.navbar-toggle').is(':hidden')) { $(selected).removeClass('slide-active'); } }); }); 
 body.slide-active { overflow-x: hidden } #page-content { position: relative; padding-top: 70px; left: 0; } #page-content.slide-active { padding-top: 0 } #slide-nav .navbar-toggle { cursor: pointer; position: relative; line-height: 0; float: left; margin: 0; width: 30px; height: 40px; padding: 17px 0 0 0; border: 0; background: transparent; } #slide-nav .navbar-toggle.slide-active .icon-bar { background: #CC0F0F; color: #CC0F0F; } .navbar-header { position: relative } .navbar.navbar-fixed-top.slide-active { position: relative } @media (max-width: 767px) { #slide-nav .container { margin: 0!important; padding: 0!important; height: 100%; } #slide-nav .navbar-header { margin: 0 auto; padding: 0 15px; } #slide-nav .navbar.slide-active { position: absolute; width: 80%; top: -1px; z-index: 1000; } #slide-nav #slidemenu { background: #f7f7f7; left: -100%; min-width: 0; position: absolute; padding-left: 0; z-index: 2; top: -8px; margin: 0; } #slide-nav #slidemenu .navbar-nav { min-width: 0; width: 100%; margin: 0; } #slide-nav #slidemenu .navbar-nav .dropdown-menu li a { min-width: 0; width: 80%; white-space: normal; } #slide-nav { border-top: 0 } #slide-nav.navbar-inverse #slidemenu { background: #333 } #navbar-height-col { position: fixed; top: 0; height: 100%; bottom: 0; background: #f7f7f7; } #navbar-height-col.inverse { background: #333; z-index: 1; border: 0; } #slide-nav .navbar-form { width: 100%; margin: 8px 0; text-align: center; overflow: hidden; /*fast clearfixer*/ } #slide-nav .navbar-form .form-control { text-align: center } #slide-nav .navbar-form .btn { width: 100% } } @media (min-width: 768px) { #page-content { left: 0!important } .navbar.navbar-fixed-top.slide-active { position: fixed } .navbar-header { left: 0!important } } 
 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="navbar navbar-inverse navbar-fixed-top" role="navigation" id="slide-nav"> <div class="container"> <div class="navbar-header"> <a class="navbar-toggle"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="navbar-brand" href="#">Project name</a> </div> <div id="slidemenu"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Menu</a> </li> <li><a href="#">Menu</a> </li> <li><a href="#">Menu</a> </li> </ul> </div> </div> </div> <div id="page-content"> <div class="container"> <h1 class="no-margin-top">Left Sidebar menu</h1> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid sunt minus libero quas soluta blanditiis voluptatibus, eveniet sint tempora! Maxime!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad laudantium deleniti ratione ea voluptas, dolore expedita nisi? Veniam, doloremque, reiciendis.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci blanditiis nam esse molestiae voluptatem maiores fugiat nulla commodi magni impedit.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempora ducimus iure ipsa ea officia aliquid quibusdam nostrum obcaecati itaque temporibus!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid sunt minus libero quas soluta blanditiis voluptatibus, eveniet sint tempora! Maxime!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad laudantium deleniti ratione ea voluptas, dolore expedita nisi? Veniam, doloremque, reiciendis.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci blanditiis nam esse molestiae voluptatem maiores fugiat nulla commodi magni impedit.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempora ducimus iure ipsa ea officia aliquid quibusdam nostrum obcaecati itaque temporibus!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid sunt minus libero quas soluta blanditiis voluptatibus, eveniet sint tempora! Maxime!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad laudantium deleniti ratione ea voluptas, dolore expedita nisi? Veniam, doloremque, reiciendis.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci blanditiis nam esse molestiae voluptatem maiores fugiat nulla commodi magni impedit.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempora ducimus iure ipsa ea officia aliquid quibusdam nostrum obcaecati itaque temporibus!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquid sunt minus libero quas soluta blanditiis voluptatibus, eveniet sint tempora! Maxime!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad laudantium deleniti ratione ea voluptas, dolore expedita nisi? Veniam, doloremque, reiciendis.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci blanditiis nam esse molestiae voluptatem maiores fugiat nulla commodi magni impedit.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempora ducimus iure ipsa ea officia aliquid quibusdam nostrum obcaecati itaque temporibus!</p> </div> </div> 

请尝试以下操作,并查看以下链接以获取更多说明-

<div class="navbar navbar-default navbar-fixed-side navbar-fixed-side-left" role="navigation">

看一下下面的Github链接以向左或向右修复导航栏

另一个有用的链接-

没有插件,我们可以做到这一点

见链接

 $('[data-toggle="slide-collapse"]').on('click', function() { $navMenuCont = $($(this).data('target')); $navMenuCont.animate({ 'width': 'toggle' }, 350); $(".menu-overlay").fadeIn(500); }); $(".menu-overlay").click(function(event) { $(".navbar-toggle").trigger("click"); $(".menu-overlay").fadeOut(500); }); // if ($(window).width() >= 767) { // $('ul.nav li.dropdown').hover(function() { // $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeIn(500); // }, function() { // $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeOut(500); // }); // $('ul.nav li.dropdown-submenu').hover(function() { // $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeIn(500); // }, function() { // $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeOut(500); // }); // $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { // event.preventDefault(); // event.stopPropagation(); // $(this).parent().siblings().removeClass('open'); // $(this).parent().toggleClass('open'); // $('b', this).toggleClass("caret caret-up"); // }); // } // $(window).resize(function() { // if( $(this).width() >= 767) { // $('ul.nav li.dropdown').hover(function() { // $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeIn(500); // }, function() { // $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeOut(500); // }); // } // }); var windowWidth = $(window).width(); if (windowWidth > 767) { // $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { // event.preventDefault(); // event.stopPropagation(); // $(this).parent().siblings().removeClass('open'); // $(this).parent().toggleClass('open'); // $('b', this).toggleClass("caret caret-up"); // }); $('ul.nav li.dropdown').hover(function() { $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeIn(500); }, function() { $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeOut(500); }); $('ul.nav li.dropdown-submenu').hover(function() { $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeIn(500); }, function() { $(this).find('>.dropdown-menu').stop(true, true).delay(200).fadeOut(500); }); $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { event.preventDefault(); event.stopPropagation(); $(this).parent().siblings().removeClass('open'); $(this).parent().toggleClass('open'); // $('b', this).toggleClass("caret caret-up"); }); } if (windowWidth < 767) { $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { event.preventDefault(); event.stopPropagation(); $(this).parent().siblings().removeClass('open'); $(this).parent().toggleClass('open'); // $('b', this).toggleClass("caret caret-up"); }); } // $('.dropdown a').append('Some text'); 
 @media only screen and (max-width: 767px) { #slide-navbar-collapse { position: fixed; top: 0; left: 15px; z-index: 999999; width: 280px; height: 100%; background-color: #f9f9f9; overflow: auto; bottom: 0; max-height: inherit; } .menu-overlay { display: none; background-color: #000; bottom: 0; left: 0; opacity: 0.5; filter: alpha(opacity=50); /* IE7 & 8 */ position: fixed; right: 0; top: 0; z-index: 49; } .navbar-fixed-top { position: initial !important; } .navbar-nav .open .dropdown-menu { background-color: #ffffff; } ul.nav.navbar-nav li { border-bottom: 1px solid #eee; } .navbar-nav .open .dropdown-menu .dropdown-header, .navbar-nav .open .dropdown-menu>li>a { padding: 10px 20px 10px 15px; } } .dropdown-submenu { position: relative; } .dropdown-submenu .dropdown-menu { top: 0; left: 100%; margin-top: -1px; } li.dropdown a { display: block; position: relative; } li.dropdown>a:before { content: "\\f107"; font-family: FontAwesome; position: absolute; right: 6px; top: 5px; font-size: 15px; } li.dropdown-submenu>a:before { content: "\\f107"; font-family: FontAwesome; position: absolute; right: 6px; top: 10px; font-size: 15px; } ul.dropdown-menu li { border-bottom: 1px solid #eee; } .dropdown-menu { padding: 0px; margin: 0px; border: none !important; } li.dropdown.open { border-bottom: 0px !important; } li.dropdown-submenu.open { border-bottom: 0px !important; } li.dropdown-submenu>a { font-weight: bold !important; } li.dropdown>a { font-weight: bold !important; } .navbar-default .navbar-nav>li>a { font-weight: bold !important; padding: 10px 20px 10px 15px; } li.dropdown>a:before { content: "\\f107"; font-family: FontAwesome; position: absolute; right: 6px; top: 9px; font-size: 15px; } @media (min-width: 767px) { li.dropdown-submenu>a { padding: 10px 20px 10px 15px; } li.dropdown>a:before { content: "\\f107"; font-family: FontAwesome; position: absolute; right: 3px; top: 12px; font-size: 15px; } } 
 <!DOCTYPE html> <html lang="en"> <head> <title>Bootstrap Example</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> </head> <body> <nav class="navbar navbar-default navbar-fixed-top"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="slide-collapse" data-target="#slide-navbar-collapse" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Brand</a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="slide-navbar-collapse"> <ul class="nav navbar-nav"> <li><a href="#">Link <span class="sr-only">(current)</span></a></li> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li><a href="#">Separated link</a></li> <li><a href="#">One more separated link</a></li> <li class="dropdown-submenu"> <a href="#" data-toggle="dropdown">SubMenu 1</span></a> <ul class="dropdown-menu"> <li><a href="#">3rd level dropdown</a></li> <li><a href="#">3rd level dropdown</a></li> <li><a href="#">3rd level dropdown</a></li> <li><a href="#">3rd level dropdown</a></li> <li><a href="#">3rd level dropdown</a></li> <li class="dropdown-submenu"> <a href="#" data-toggle="dropdown">SubMenu 2</span></a> <ul class="dropdown-menu"> <li><a href="#">3rd level dropdown</a></li> <li><a href="#">3rd level dropdown</a></li> <li><a href="#">3rd level dropdown</a></li> <li><a href="#">3rd level dropdown</a></li> <li><a href="#">3rd level dropdown</a></li> </ul> </li> </ul> </li> </ul> </li> <li><a href="#">Link</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li><a href="#">Separated link</a></li> </ul> </li> </ul> </div> <!-- /.navbar-collapse --> </div> <!-- /.container-fluid --> </nav> <div class="menu-overlay"></div> <div class="col-md-12"> <h1>Resize the window to see the result</h1> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus non bibendum sem, et sodales massa. Proin quis velit vel nisl imperdiet rhoncus vitae id tortor. Praesent blandit tellus in enim sollicitudin rutrum. Integer ullamcorper, augue ut tristique ultrices, augue magna placerat ex, ac varius mauris ante sed dui. Fusce ullamcorper vulputate magna, a malesuada nunc pellentesque sit amet. Donec posuere placerat erat, sed ornare enim aliquam vitae. Nullam pellentesque auctor augue, vel commodo dolor porta ac. Sed libero eros, fringilla ac lorem in, blandit scelerisque lorem. Suspendisse iaculis justo velit, sit amet fringilla velit ornare a. Sed consectetur quam eget ipsum luctus bibendum. Ut nisi lectus, viverra vitae ipsum sit amet, condimentum condimentum neque. In maximus suscipit eros ut eleifend. Donec venenatis mauris nulla, ac bibendum metus bibendum vel. </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus non bibendum sem, et sodales massa. Proin quis velit vel nisl imperdiet rhoncus vitae id tortor. Praesent blandit tellus in enim sollicitudin rutrum. Integer ullamcorper, augue ut tristique ultrices, augue magna placerat ex, ac varius mauris ante sed dui. Fusce ullamcorper vulputate magna, a malesuada nunc pellentesque sit amet. Donec posuere placerat erat, sed ornare enim aliquam vitae. Nullam pellentesque auctor augue, vel commodo dolor porta ac. Sed libero eros, fringilla ac lorem in, blandit scelerisque lorem. Suspendisse iaculis justo velit, sit amet fringilla velit ornare a. Sed consectetur quam eget ipsum luctus bibendum. Ut nisi lectus, viverra vitae ipsum sit amet, condimentum condimentum neque. In maximus suscipit eros ut eleifend. Donec venenatis mauris nulla, ac bibendum metus bibendum vel. </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus non bibendum sem, et sodales massa. Proin quis velit vel nisl imperdiet rhoncus vitae id tortor. Praesent blandit tellus in enim sollicitudin rutrum. Integer ullamcorper, augue ut tristique ultrices, augue magna placerat ex, ac varius mauris ante sed dui. Fusce ullamcorper vulputate magna, a malesuada nunc pellentesque sit amet. Donec posuere placerat erat, sed ornare enim aliquam vitae. Nullam pellentesque auctor augue, vel commodo dolor porta ac. Sed libero eros, fringilla ac lorem in, blandit scelerisque lorem. Suspendisse iaculis justo velit, sit amet fringilla velit ornare a. Sed consectetur quam eget ipsum luctus bibendum. Ut nisi lectus, viverra vitae ipsum sit amet, condimentum condimentum neque. In maximus suscipit eros ut eleifend. Donec venenatis mauris nulla, ac bibendum metus bibendum vel. </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus non bibendum sem, et sodales massa. Proin quis velit vel nisl imperdiet rhoncus vitae id tortor. Praesent blandit tellus in enim sollicitudin rutrum. Integer ullamcorper, augue ut tristique ultrices, augue magna placerat ex, ac varius mauris ante sed dui. Fusce ullamcorper vulputate magna, a malesuada nunc pellentesque sit amet. Donec posuere placerat erat, sed ornare enim aliquam vitae. Nullam pellentesque auctor augue, vel commodo dolor porta ac. Sed libero eros, fringilla ac lorem in, blandit scelerisque lorem. Suspendisse iaculis justo velit, sit amet fringilla velit ornare a. Sed consectetur quam eget ipsum luctus bibendum. Ut nisi lectus, viverra vitae ipsum sit amet, condimentum condimentum neque. In maximus suscipit eros ut eleifend. Donec venenatis mauris nulla, ac bibendum metus bibendum vel. </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus non bibendum sem, et sodales massa. Proin quis velit vel nisl imperdiet rhoncus vitae id tortor. Praesent blandit tellus in enim sollicitudin rutrum. Integer ullamcorper, augue ut tristique ultrices, augue magna placerat ex, ac varius mauris ante sed dui. Fusce ullamcorper vulputate magna, a malesuada nunc pellentesque sit amet. Donec posuere placerat erat, sed ornare enim aliquam vitae. Nullam pellentesque auctor augue, vel commodo dolor porta ac. Sed libero eros, fringilla ac lorem in, blandit scelerisque lorem. Suspendisse iaculis justo velit, sit amet fringilla velit ornare a. Sed consectetur quam eget ipsum luctus bibendum. Ut nisi lectus, viverra vitae ipsum sit amet, condimentum condimentum neque. In maximus suscipit eros ut eleifend. Donec venenatis mauris nulla, ac bibendum metus bibendum vel. </p> </div> </body> </html> 

使用它进行从右到左的滑动:

HTML:

<div class="nav ">
       <ul>
        <li><a href="#">HOME</a></li>
        <li><a href="#">ABOUT</a></li>
        <li><a href="#">SERVICES</a></li>
        <li><a href="#">CONTACT</a></li>
       </ul>
   </div>

CSS:

.nav{
    position: fixed;
    right:0;
    top: 70px;
    width: 250px;
    height: calc(100vh - 70px);
    background-color: #333;
    transform: translateX(100%);
    transition: transform 0.3s ease-in-out;

}
.nav-view{
    transform: translateX(0);
}

JS:

$(document).ready(function(){
  $('a#click-a').click(function(){
    $('.nav').toggleClass('nav-view');
  });
});

下载源文件: :

这里有一个类似的问题: 其中可接受的答案是使用jasny bootstrap。 如果没有Jasny来杯茶,还有其他答案。

有一个很好的帖子试图模仿jQuery和Bootstrap之类的Facebook应用中的左侧切换。 看看这个:

请参考此 。 需要注意以下几点:

  • 需要库。 特别是slideInLeftslideOutLeft动画。

  • 使用而不是Bootstrap的组件。

  • 设置dropdown-menu元素static通过应用类position-static就可以了。

  • 当显示dropdown-menu时, 利用应用于dropdown元素的show类。

  • 利用 left CSS属性执行过渡。 基本上,我们将设置left:-100%.dropdown.show .dropdown-menu ,我们将设置left:0px.dropdown .dropdown-menu

屏幕截图:

注意 :您可以从animate.cssdropdown-menu试用其他动画。

祝好运...

Bootstrap 4(2019年更新)

IMO最简单的方法是覆盖Bootstrap折叠动画,以使其从左到右过渡(宽度而不是高度)。 相反切换的display:block.collapse.show被使用,导航栏始终display:block ,其可根据需要和使用的过渡从两个方向倒塌你定位...

打开菜单: .collapse - .collapsing - .collapse.show
关闭菜单: .collapse.show - .collapsing.show - .collapse

    .navbar-collapse {
        position: absolute;
        top: 54px;
        left: -100%;
        width: 100%;
        transition: all 0.4s ease;
        display: block;
        opacity: 0.8;
    }
    .navbar-collapse.collapsing {
        height: auto !important;
        left: -100%;
        margin-left: 1px;
        transition: all 0.2s ease;
        opacity: 0.9;
    }
    .navbar-collapse.show {
        margin-left: 100%;
        transition: all 0.2s ease;
        opacity: 1;
    }

  相关解决方案