把bootstrap4 dropdown 的导航下拉菜单触发方式改为鼠标浮动触发

方法1:

 原文: https://zzll.org/article/bootstrap4-xialacaidan

很简单,css中加入如下代码

.dropdown:hover>.dropdown-menu {
    display: block;
}

.dropdown>.dropdown-toggle:active { pointer-events: none; } 

修改完成后发现一个小问题,菜单和文字间有一点空隙,鼠标移动到空隙后菜单就隐藏了。
我们再修改 dropdown-menu 的样式,加一个 mt-0 的样式就没有空隙了。

<div class="dropdown-menu mt-0" aria-labelledby="navbarDropdown">
    ...
</div>


方法2:

 git原文:https://github.com/ibmsoft/twitter-bootstrap-hover-dropdown

这个是bootstrap3的方法,修改后

; (function ($, window, undefined) {
// outside the scope of the jQuery plugin to
// keep track of all dropdowns
var $allDropdowns = $();

// if instantlyCloseOthers is true, then it will instantly
// shut other nav items when a new one is hovered over
$.fn.dropdownHover = function (options) {

// the element we really care about
// is the dropdown-toggle's parent
$allDropdowns = $allDropdowns.add(this.parent());

return this.each(function () {
var $this = $(this).parent(),
defaults = {
delay: 500,
instantlyCloseOthers: true
},
data = {
delay: $(this).data('delay'),
instantlyCloseOthers: $(this).data('close-others')
},
options = $.extend(true, {}, defaults, options, data),
timeout;

$this.hover(function () {
if (options.instantlyCloseOthers === true) {
$allDropdowns.removeClass('show');
$allDropdowns.find(".dropdown-menu").removeClass('show');
}

window.clearTimeout(timeout);
$(this).addClass('show');
$(this).find(".dropdown-menu").addClass('show');
}, function () {
timeout = window.setTimeout(function () {
$this.removeClass('show');
$this.find(".dropdown-menu").removeClass('show');
}, options.delay);
});
});
};
$('[data-hover="dropdown"]').dropdownHover();
})(jQuery, this);

//在你调用的地方里加上 time是你给的反应时间。比如500这样。
$('.dropdown-toggle').dropdownHover(time);


//点击链接如下:

$('a.dropdown-toggle').one('click', function () {
if ($(this).attr('href')!="")
location.href = $(this).attr('href');
});

猜你喜欢

转载自www.cnblogs.com/slwangzi/p/10617249.html
今日推荐