允许点击twitter引导下拉切换链接?
我们已经设置了twitter引导下拉菜单来进行hover(而不是点击[是的,我们知道在触摸设备上没有hover])。 但是我们希望能够让我们的主要链接工作,当我们点击它。
默认情况下,twitter bootstrap阻止它,所以我们如何重新启用它?
只需在你的主播上添加禁用的类:
<a class="dropdown-toggle disabled" href="http://google.com"> Dropdown <b class="caret"></b></a>
所以在一起的东西就像:
<ul class="nav"> <li class="dropdown"> <a class="dropdown-toggle disabled" href="http://google.com"> Dropdown <b class="caret"></b> </a> <ul class="dropdown-menu"> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> </ul> </li> </ul>
对于那些抱怨“子菜单不下来”的人,我这样解决了,这对我来说看起来很干净:
1)除了你的
<a class="dropdown-toggle disabled" href="http://google.com"> Dropdown <b class="caret"></b> </a>
把一个新的
<a class="dropdown-toggle"><b class="caret"></b></a>
并移除<b class="caret"></b>
标签,所以它看起来像
<a class="dropdown-toggle disabled" href="http://google.com"> Dropdown</a><a class="dropdown-toggle"><b class="caret"></b></a>
2)样式他们与以下的CSS规则:
.caret1 { position: absolute !important; top: 0; right: 0; } .dropdown-toggle.disabled { padding-right: 40px; }
.caret1类中的风格是将它完全放置在您的li
的右侧。
第二种方式是在下拉列表的右侧添加一些填充字符,以防止重叠菜单项的文本。
现在你有一个很好的响应菜单项,在桌面和移动版本看起来不错,这是可以点击和下拉取决于你是否点击文字或插入符号。
由于没有真正的答案是有效的(select的答案禁用下拉列表),或使用JavaScript覆盖,在这里。
这是所有的HTML和CSS修复(使用两个<a>
标签):
<ul class="nav"> <li class="dropdown dropdown-li"> <a class="dropdown-link" href="http://google.com">Dropdown</a> <a class="dropdown-caret dropdown-toggle"><b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> </ul> </li> </ul>
现在这里是你需要的CSS。
.dropdown-li { display:inline-block !important; } .dropdown-link { display:inline-block !important; padding-right:4px !important; } .dropdown-caret { display:inline-block !important; padding-left:4px !important; }
假设你希望这两个<a>
标签在任何一个hover处突出显示,你还需要重写引导程序,你可以使用下面的代码:
.nav > li:hover { background-color: #f67a47; /*hover background color*/ } .nav > li:hover > a { color: white; /*hover text color*/ } .nav > li:hover > ul > a { color: black; /*dropdown item text color*/ }
我不确定将顶级锚点元素设置为可点击的锚点的问题,但这里是使桌面视图具有hover效果以及移动视图保持其可点击能力的最简单的解决scheme。
// Medium screens and up only @media only screen and (min-width: $screen-md-min) { // Enable menu hover for bootstrap // dropdown menus .dropdown:hover .dropdown-menu { display: block; } }
这样移动菜单仍然按照它应该的方式运行,而桌面菜单将在hover时而不是点击时展开。
另一种解决scheme就是从定位点中删除“dropdown-toggle”类。 点击后不再会触发dropwon.js,所以你可能想让子菜单显示在hover状态。
你可以使用JavaScript snippit
$(function() { // Enable drop menu clicks $(".nav li > a").off(); });
这将解除阻止url更改的点击事件。
这是一个从数据hover切换到数据切换取决于屏幕宽度的小黑客:
/** * Bootstrap nav menu hack */ $(window).on('load', function () { // On page load if ($(window).width() < 768) { $('.navbar-nav > li > .dropdown-toggle').removeAttr('data-hover').attr('data-toggle', 'dropdown'); } // On window resize $(window).resize(function () { if ($(window).width() < 768) { $('.navbar-nav > li > .dropdown-toggle').removeAttr('data-hover').attr('data-toggle', 'dropdown'); } else { $('.navbar-nav > li > .dropdown-toggle').removeAttr('data-toggle').attr('data-hover', 'dropdown'); } }); });