php - 所选菜单项的浮点线颜色

标签 php javascript jquery css menu

我在我的 wordpress 网站上使用浮线菜单,我得到了 THIS FAR在一些帮助下。

现在我的问题是如何使选定的导航 float 线与鼠标悬停在菜单项上时的颜色相同?此时鼠标一关闭,它就变为默认的红色。

这就是我要实现的目标:

当菜单 1 被选中时(点击后),浮点线颜色应该是#0f0

已选择菜单 2 - #ee0

已选择菜单 3 - #05f

感谢任何帮助。

最佳答案

var sse1 = function () { 上面添加 var currentSelected; 并在下面的 block 中添加 currentSelected=k;

  for (var i = 0; i < a.length; i++) {
            if (url.indexOf(a[i].href.toLowerCase()) != -1 && a[i].href.length > nLength) {
                k = i;
                nLength = a[i].href.length;
            }
        }

将当前选中列表的索引推送到currentSelected

所以在你的customHandleMenu函数中使用它

var navigations=[
/* Nav 1 style */
{floatColor: '#0f0',
borderColor: '#0f0'},
/* Nav 2 style */
{floatColor: '#ee0',
borderColor: '#ee0'},
/* Nav 3 style */
{floatColor: '#05f',
borderColor: '#05f'},
];

function customHandleMenu() {
  // get nav selector
  var nav = $('#sses1 > ul');

  // get float line selector
  var floatLine = $('.highlight'); // .hightlight must exist at this point

  // get colors for the current page
  var defaultBGcolor = navigations[currentSelected]["borderColor"];
  var defaultBorderColor = navigations[currentSelected]["borderColor"];
  var defaultNavBorderColor = navigations[currentSelected]["borderColor"];
  // change background-color and border-color on mouseenter event

  $('.nav-item-1').on({
    mouseenter: function () {
      setColors({
        floatColor: navigations[0]["floatColor"],
        borderColor: navigations[0]["borderColor"]
      });
    }
  });

  $('.nav-item-2').on({
    mouseenter: function () {
      setColors({
        floatColor: navigations[1]["floatColor"],
        borderColor: navigations[1]["borderColor"]
      });
    }
  });

  $('.nav-item-3').on({
    mouseenter: function () {
      setColors({
        floatColor: navigations[2]["floatColor"],
        borderColor: navigations[2]["borderColor"]
      });
    }
  }); 

    /*
       ...
    */

    // put back default colors on the mouseleave event
    $('#sses1 > ul > li').on({
        mouseleave: function() {
          setColors({floatColor:defaultBGcolor, borderColor:defaultNavBorderColor});
        }
    });
          setColors({floatColor:defaultBGcolor, borderColor:defaultNavBorderColor});

    function setColors(args) {
        if (typeof args.floatColor != "undefined") {
            floatLine.css('background-color', args.floatColor);
        }

        if (typeof args.borderColor != "undefined") {
            floatLine.css('border-color', args.borderColor);
            nav.css('border-bottom-color', args.borderColor);
        }
    }
}

Live demo | Demo source

要防止 Float Line 动画加载,只需按照代码中注释的说明进行操作即可

//slip.style.left = items[k].offsetLeft + "px";
sse1.move(items[k]); //comment out this line and uncomment the line above to disable initial animation

创建:

slip.style.left = items[k].offsetLeft + "px";
// sse1.move(items[k]); comment out this line and uncomment the line above to disable initial animation.

此外,您可以选择性地添加

$('#sses1 li, #sses1 a').on('click',function(){ 
  $('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mouseout");
  $('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mouseleave");
  $('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mouseenter");
  $('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mousein");
  $('#sses1, #sses1 ul, #sses1 li, #sses1 a').unbind("mouseover");
  sse1={};
});

到您的 customhandlemenu 函数,在页面准备加载时完全禁用任何不需要的动画。

Live demo | Demo source

关于php - 所选菜单项的浮点线颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298104/

相关文章:

php - 按电子邮件分组并获取组中最早创建的日期 - Laravel Eloquent

JavaScript 二维数组

jquery - DIV 内的右对齐按钮

javascript - 激活 div 内元素的监听器而不激活 div 的监听器

php - Twig 访问 protected /私有(private)模型变量

php - Mysql 表行添加不起作用

php - 为我的 PHP 应用程序实现 ACL

javascript - 如何将多个类名添加到 nextjs 元素

Javascript new 关键字不重置所有属性

jquery - 如何使用 jQuery 在 HTML 输入框中只允许数字(0-9)?