Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将鼠标悬停在其他导航栏项目上时禁用聚焦_Javascript_Jquery_Css_Navbar - Fatal编程技术网

Javascript 将鼠标悬停在其他导航栏项目上时禁用聚焦

Javascript 将鼠标悬停在其他导航栏项目上时禁用聚焦,javascript,jquery,css,navbar,Javascript,Jquery,Css,Navbar,我遇到了一个问题,我的导航栏项目在悬停时会出现下划线动画。单击后,动画将停留在那里。但是,如果我将鼠标悬停在相邻的导航栏项上,这两行将彼此相邻,看起来像一条长线 所以这里produkt是焦点,preise是悬停的。我希望,当我悬停在preise上时,产品不会被关注。但是,如果我没有选择preise,则focus“返回”到产品。代码如下 .undeline:before { content: ''; position: absolute; width: 100%;

我遇到了一个问题,我的导航栏项目在悬停时会出现下划线动画。单击后,动画将停留在那里。但是,如果我将鼠标悬停在相邻的导航栏项上,这两行将彼此相邻,看起来像一条长线

所以这里produkt是焦点,preise是悬停的。我希望,当我悬停在preise上时,产品不会被关注。但是,如果我没有选择preise,则focus“返回”到产品。代码如下

.undeline:before {
    content: '';
    position: absolute;
    width: 100%;
    height: 3px;
    bottom: 0;
    left: 0;
    background: #52ae49;
    border-radius:3px;
    margin-top: -10px;
    visibility: hidden;
    transform: scaleX(0);
    transition: all 0.3s ease-in-out 0s;
}


.undeline:hover:before {
    visibility: visible;
    display: block;
    transform: scaleX(1);
}

.undeline:focus:before  {
    content: '';
    position: absolute;
    width: 100%;
    height: 3px;
    bottom: 0;
    left: 0;
    background: #52ae49;
    border-radius:3px;
    margin-top: -10px;
    visibility: visible;
    display: block;
    transform: scaleX(1);
}
我想,我将不得不使用JavaScript和.forEach来管理它。我试过这个

    function mouseOver() {
    $(".underline").each(function() {
    $(this).blur('focus');
    });
}

function mouseOut() {
    $("underline").each(function() {
    $(this).addClass('focus');
    });
    }

但是没有成功

这里你指的是焦点,我想你指的是点击链接时的焦点。As focus更适合输入字段等html元素

请运行下面的代码段以查看它的运行情况

$('.nav li')。在('click',function()上{
var$link=$(此);
if(!$link.hasClass('selected')){
$link.addClass('selected');
$link.sides().removeClass('selected');
$link.sides().removeClass('dimmed');
}
});
$('.nav li')。悬停(
//悬停处理程序
函数(){
$(this).同级('.selected')。每个(函数(){
if(!$(this).hasClass('dimmed')){
$(this.addClass('dimmed');
}
});
},
//悬停处理程序
函数(){
$(this).同级('.selected')。每个(函数(){
$(this.removeClass('dimmed');
});
});
.nav{
显示器:flex;
}
李国荣先生{
位置:相对位置;
列表样式:无;
填充物:5px10px;
文本转换:大写;
光标:指针;
}
li.已选择。暗显:之前,
李:以前{
内容:'';
位置:绝对位置;
宽度:100%;
高度:3倍;
底部:0;
左:0;
背景#52ae49;
边界半径:3px;
利润上限:-10px;
可见性:隐藏;
变换:scaleX(0);
过渡:所有0.3秒均为0秒;
}
李:悬停:之前{
能见度:可见;
显示:块;
变换:scaleX(1);
}
李:选择:之前{
内容:'';
位置:绝对位置;
宽度:100%;
高度:3倍;
底部:0;
左:0;
背景#52ae49;
边界半径:3px;
利润上限:-10px;
能见度:可见;
显示:块;
变换:scaleX(1);
}

  • 产品
  • 特权

  • 请提供您的HTML和可验证的示例。您基本上救了我的命,我太棒了!如果我可以这样说的话,我发现了一种排除类的更简单方法:.navbar开始:hover.undeline:focus:before{transform:scaleX(0);transition:all 0.3s ease in out 0s;.navbar开始:hover.undeline:hover:before{visibility:visible!重要;display:block;transform:scaleX(1);}它也起作用了,但问题是,我无法在滚动或删除时添加.undeline类。因为它有这些很难选择的伪计算。所以您的解决方案解决了滚动问题。谢谢!我很高兴它对您有帮助:)