简体   繁体   English

如何在移动设备和平板电脑设备上使导航菜单响应为两行?

[英]How to make navigation menu responsive as two rows on mobile and tablet devices?

I have navigation menu that I tried to make it responsive in two rows on mobile phone and tablet break point. 我有一个导航菜单,我试图使其在手机和平​​板电脑断点上两行响应。

My html code to do this is like below but it does not seem to work for me. 我的html代码如下所示,但对我来说似乎不起作用。

 .navbar-default .navbar-nav>li { display: inline-block; } @media all and (max-width: 841px) { #ID { clear:both; display: block; margin-left: 25px; } li#liMore ul.dropdown-menu { position: absolute !important; background: #f8f8f8 !important; } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <!-- Latest compiled and minified JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"> <div class="navbar navbar-default navbar-static-top" role="navigation"> <ul class="nav navbar-nav"> <li id="item"> <a href="javascript:void(0)" id="New"><i class="fa fa-file-text-o"></i>&nbsp;Add New Page</a> </li> <li id="item"> <a href="javascript:void(0)" id="Edit"><i class="fa fa-pencil-square-o"></i>&nbsp;Update Page</a> </li> <li id="item"> <a href="javascript:void(0)" id="Cancel"><i class="fa fa-undo"></i>&nbsp;Cancel</a> </li> <li id="liID"> <div class="navbar-form navbar-left"> <div class="form-group"> <input type="text" class="form-control" name="ID" id="ID" placeholder="Enter ID" value="" style="width:197px;"> </div> </div> </li> <li id="liMore"> <div class="btn-group" style=""> <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">More Actions</button> <button type="button" class="btn btn-primary" data-toggle="dropdown"> <i class="fa fa-caret-down"></i> </button> <ul class="dropdown-menu"> <li><a href="javascript:void(0)" onclick="copy('frm')"><i class="fa fa-files-o"></i>&nbsp;Copy</a></li> <li><a href="javascript:void(0)" onclick="paste('frm')"><i class="fa fa-clipboard"></i>&nbsp;Paste</a></li> <li><a href="javascript:void(0)" id="Reverse"><i class="fa fa-reply"></i>&nbsp;Delete</a></li> <li class="divider"></li> <li><a href="javascript:void(0)" id="listLive"><i class="fa fa-list"></i>&nbsp;List Page</a></li> <li><a href="javascript:void(0)" id="listAuth"><i class="fa fa-list"></i>&nbsp;List draft Page</a></li> <li><a href="javascript:void(0)" id="listHist"><i class="fa fa-list"></i>&nbsp;List saved Page</a></li> <li class="divider"></li> <li><a href="javascript:void(0)" onclick="exportCSV.apply(this,['frm','export.csv'])"><i class="fa fa-print"></i>&nbsp;Export</a></li> </ul> </div> </li> </ul> </div> 

I would like to keep New Edit Cancel as one row while text box and drop down as another row on mobile and tablet break point. 我想在text box and drop down将“ New Edit Cancel保留为一行,而在移动设备和平板电脑的断点处保留为“另一行”。 Although I set text box to display block and clear both to force it break into new line, it does not break into new line as another row for me. 尽管我将文本框设置为显示block并清除了both以强制其换行,但对于我来说,它不会换行。

What is css style trick that I can do to archive above result as I want? 我可以根据自己的意愿将以上结果归档的CSS样式技巧是什么? Thanks. 谢谢。

I cannot say I would recommend this approach as it's rather antithetical to the scope of the Navbar component (which is to responsively collapse links, not expand vertically). 我不能说我会推荐这种方法,因为它与Navbar组件的范围完全相反(即响应性折叠链接,而不是垂直扩展)。 That being said, if we restructure your code to comply with Bootstrap 3.x formatting and apply a bit more of the Bootstrap Grid into your Navbar you can get something functional. 话虽如此,如果我们重组您的代码以符合Bootstrap 3.x格式并将更多的Bootstrap网格应用到Navbar您将获得一些功能。

 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" type="text/css" rel="stylesheet"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> <div class="navbar navbar-default navbar-static-top" role="navigation"> <div class="container-fluid"> <div class="row"> <div class="col-xs-12 col-md-8"> <ul class="nav navbar-nav"> <li class="pull-left"><a href=""><i class="fa fa-file-text-o"></i> Add New Page</a></li> <li class="pull-left"><a href=""><i class="fa fa-pencil-square-o"></i> Update Page</a></li> <li class="pull-left"><a href=""><i class="fa fa-undo"></i> Cancel</a></li> </ul> </div> <div class="col-xs-12 col-md-4"> <div class="row"> <div class="col-xs-8 col-md-7"> <form class="navbar-btn form-horizontal"> <input type="text" class="form-control" placeholder="Enter ID"> </form> </div> <div class="col-xs-4 col-md-5"> <div class="btn-group navbar-btn"> <button type="button" class="btn btn-primary" data-toggle="dropdown">More Actions</button> <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <li><a href=""><i class="fa fa-files-o"></i> Copy</a></li> <li><a href=""><i class="fa fa-clipboard"></i> Paste</a></li> <li><a href=""><i class="fa fa-reply"></i> Delete</a></li> <li class="divider"></li> <li><a href=""><i class="fa fa-list"></i> List Page</a></li> <li><a href=""><i class="fa fa-list"></i> List draft Page</a></li> <li><a href=""><i class="fa fa-list"></i> List saved Page</a></li> <li class="divider"></li> <li><a href=""><i class="fa fa-print"></i> Export</a></li> </ul> </div> </div> </div> </div> </div> </div> </div> 

Where this approach is, perhaps, a little more friendly is that it relies exclusively on Bootstraps native responsive framework; 也许这种方法更友好的地方在于它完全依赖于Bootstraps本机响应框架。 you don't need to create your own media query rules at all. 您根本不需要创建自己的媒体查询规则。

Where you're going to run into some difficulty is the btn-group . btn-group是您遇到困难的地方。 When you use <button> you cannot take advantage of btn-group-justified so this button will never make full use of the column if it doesn't need to. 当您使用<button>您无法利用btn-group-justified优势,因此,如果不需要,此按钮将永远不会充分利用该列。

I would also encourage you to review Bootstraps Documentation for proper usage of its framework. 我也鼓励您查看Bootstraps文档以正确使用其框架。 The code you've presented above utilizes classes incorrectly in several places which may impact expected functionality. 您上面提供的代码在几个地方错误地使用了类,这可能会影响预期的功能。

Additionally, please note that the ID attribute is meant to be unique; 另外,请注意, ID属性是唯一的。 your <li id="item"> should either be changed to reflect a unique ID for each list item, or to use a class (which does not need to be unique). 您应该更改<li id="item">以反映每个列表项的唯一ID ,或使用一个类(不必是唯一的)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM