【问题标题】:How to make the first menu link look as if it is hovered until hovering another link [closed]如何使第一个菜单链接看起来好像是悬停的,直到悬停另一个链接[关闭]
【发布时间】:2014-05-19 06:35:31
【问题描述】:

我有一个菜单,它可以在悬停时更改链接背景图像,并为每个链接替换该菜单“框架”中的中心图像。 我需要做的是使菜单的第一个链接显示为好像一直悬停,并且它的中心图像也显示,但是一旦悬停其他菜单链接之一,它应该被关闭。 有什么想法吗?

【问题讨论】:

  • 提供一些代码或小提琴链接
  • 请发布您目前拥有的代码?
  • 请向我们展示您到目前为止所做的尝试。
  • 对不起菜单链接:israelijewel.com/1.html

标签: html css hover


【解决方案1】:

想法:将所有按钮包装在一个新的 div 中,当您将鼠标悬停在该 div 上时,删除第一个按钮的样式,除非您悬停第一个按钮,然后在悬停时按照您的需要设置每个按钮的样式

html:

<div class='home_gallery'>
  <div id='buttons'>
    <a class='mofet-link' href='mofet'><img....></a>
    <!-- the rest of the a tags -->
  </div>
</div>

css:

.mofet-link {
  //set the state you want initially, like when the mose hover over it
}
#buttons:hover .mofet-link {
  //set the state as NOT hovered
}
.mofet-link:hover {
  //set the state as hovered
}

现在,默认值将是规则 .mofet-link(悬停)给出的值,当您将鼠标悬停在任何按钮上时,css 将是 #buttons:hover .mofet-link(未悬停)处的值,除非您悬停 mofet-link,否则应用的规则将是 .mofet-link:hover (hovered)

您可以稍微调整一下订单或使用类似的东西:

.mofet-link:hover {
  background: your_background !important;
}

如果您有其他 css 以更高的优先级覆盖您想要的内容,或者编写一个更精确的选择器。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    一般来说,你不能只用css控制一个父元素,所以你必须做一些技巧:

    例如,如果您有一个多级菜单,您可以保留应用于父元素的样式,只需编写如下内容:

    ul li:hover li
    {
       ...
    }
    

    这样,假设鼠标悬停在嵌套的 LI 上,也会将样式应用于父级,例如主栏中的主列表项。

    如果你没有多级菜单,你无论如何都可以在 html 中声明它,并将所有内容风格化以显示为所有同等级别的链接,以达到你的目标;-)

    评论后更新 这里是jquery代码:

    jQuery( document ).ready(function() {
    
       $('.home-gallery a').hover(
         function() {
           $('.mofet-link').removeClass( "active" );
           $('.mofet-link img').removeClass( "active_img" );
         }, 
         function() 
         {
           $('.mofet-link').addClass( "active" );
           $('.mofet-link img').addClass( "active_img" );
         });
    });
    

    你还必须修改你的css,添加一些规则:

    .active_img, .mofet-link:hover img {
        display: block !important;
        max-height: 250px !important;
        max-width: none;
        right: 220px;
        top: 20px;
    }
    
    
    .active, .mofet-link:hover {
        background-image: url("http://www.israelijewel.com/websites/mishne-torah/wp-content/themes/twentyfourteen-child/images/gallery/mofet-button.jpg");
        background-position: right 4px top 6px;
        background-repeat: no-repeat;
        margin-bottom: 0;
        margin-top: 0;
    }
    

    并且,为了正确运行 jQuery,请将其放在页面的 HEAD 部分。例如:

    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    

    【讨论】:

    • 菜单不是多级菜单,每个分类都有一个链接,可以在以下链接中看到:israelijewel.com/1.html
    • 你不能用纯css和html的实际结构来做。如果你想保持实际的 html,你应该使用 JQuery 来添加/删除第一个菜单项上的特定类,当悬停在另一个菜单项上时。或者,如果您不想使用 Jquery,您应该更改您的 html 代码,将所有其他链接放在第一个 LI 中,使您的菜单(结构上)成为一个多级菜单。然后您可以添加 CSS 以便像现在一样显示它们,但后台是一个嵌套菜单。 Tt 不是一个干净的 html 代码....但它会工作,如果你不想使用 jQuery。
    • 我不介意使用 Jquery,但我不知道如何... 有没有类似的东西可以指导我,以便我学习如何做?还是您袖子里的示例代码?谢谢!
    • 好的,我在他的页面中添加了以上所有代码,但它似乎没有做任何事情。也许我没有把 Jquery 代码放在正确的地方?我确实尝试将它放在 Head 和 Body 部分,然后在两者中但什么都没有...... Jquery 代码到底应该放在哪里?
    • 它错过了 READY() 子句。 ;-) 请看代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2014-05-24
    • 2016-08-25
    • 2013-03-13
    • 2021-01-24
    • 1970-01-01
    • 2014-03-28
    相关资源
    最近更新 更多