【问题标题】:How to Have Child Links Displayed after being Visited after Display:none, Display: Hover显示:无,显示:悬停后访问后如何显示子链接
【发布时间】:2016-08-01 04:08:17
【问题描述】:

我有一个子链接导航菜单,仅当父项悬停时才会显示。所以我使用了显示:无,然后是:悬停显示,我想要的是,一旦访问(单击)其中一个子链接,就会显示子链接菜单。

我这里有一个小提琴,请确保将 html 屏幕最小化,以便导航菜单不会闪烁。

https://jsfiddle.net/omq2ky0v/

        html {
        padding: 0;
        margin: 0;
      background-color: #efe;
    }

    a:link,
    a:visited {
        text-decoration: none;
    }

    /* Standard Nav Menu */
    .site-nav ul {
        margin: 0;
        padding: 0;
    }

    .site-nav ul:before, .site-nav ul:after { content: ""; display: table; }
    .site-nav ul:after { clear: both; }
    .site-nav ul { *zoom: 1; }

    .site-nav ul li {
        list-style: none;
        display: inline-block;
    }


    .site-nav ul li a:link,
    .site-nav ul li a:visited {
        display: block;
    }


    /* Clearfix */
    .clearfix:before, .clearfix:after { content: ""; display: table; }
    .clearfix:after { clear: both; }
    .clearfix { *zoom: 1; }

    /* Children Links */

    .page_item_has_children:hover .children { 
    display: block;}

    .page-item:hover {text-decoration: none;}
    .children {
        display: none;
    }


    .children-links {
        margin-bottom: 20px;
        font-size: 80%;
    }

    .children-links a:link,
    .children-links a:visited {
        text-decoration: none;
        padding-bottom: 2px;
    }

    .children-links ul {
        float: left;
    }

    .children-links li {
        margin-right: 20px;
    }

    .children-links .parent-link {
        float: left;
        margin-right: 20px;
        padding-right: 20px;
        border-right: 1px solid #DDD;
        font-size: 120%;

【问题讨论】:

    标签: css list parent-child nav display


    【解决方案1】:

    你可以试试这个

    .current_page_ancestor a:visited + ul.children{ display:block !重要的; }

    我也在你之前的代码中的 jsFiddle 中尝试过这个。

    enter code herehttps://jsfiddle.net/omq2ky0v/8/

    【讨论】:

    • 太棒了!这样可行。谢谢
    • 即使在重新加载页面后,这不会强制display: block 吗?因为访问过的标志是由浏览器为访问过的ankers保存的。
    • 这就是他所说的他真正需要的东西。如果访问过就显示它?
    • 好的,认为它应该在重新加载后消失。那么它很好:)
    • 我认为这有什么问题是即使尚未访问父链接,仍然强制 children 显示。但我目前正在寻找解决方案。 ;)
    【解决方案2】:

    点击类active给父类,如果父类有该类,则通过css永久显示子类:

    .page_item.active > .children > .page_item{
        display: block;
    }
    

    如果您单击正文中的其他位置,请从父级中删除 active 类,让子级消失:

    $('document').on('mousedown', function(oEvent){
        // check if navigation is open and if one of the childs is clicked, and do stuff
        $(oEvent.currentTarget) ....
    });
    

    【讨论】:

    • 我应该把第二块放在哪里?
    • 它的 Javascript 代码 - 你必须把它放在你的标题中的一个脚本标签中 (w3schools.com/tags/tag_script.asp)。它不完整(需要检查当前目标是否在您的活动导航树中,如果是,则不执行任何操作/处理单击您的导航 - 例如显示/隐藏导航元素。如果没有,请检查是否有活动导航并删除active 类)
    • 代替全局监听器,你也可以使用“mouseleave”,它会覆盖子元素。 $('document').on('mouseleave', '.page_item.active', function(){ $(this).closest('.page_item.active').removeClass('active'); })跨度>
    • 感谢您的意见,我对 Javascript 很好奇,但目前 Marks 解决方案就足够了。我不认为他的回答会在未来引起问题。你呢?
    • 好像我误解了你的要求,标记答案是正确的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2020-12-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多