为什么我的 css 仅下拉菜单在 Opera for mobile 中不起作用?

Why doesn't my css only drop down menu work in opera for mobile?

我的菜单显示在一行中,然后在较小的屏幕上变成下拉菜单。除了 opera for mobile 之外,它适用于所有浏览器。请有人能告诉我为什么吗?

我不明白为什么它在歌剧中不起作用? Opera 是新的 IE 吗?

HTML:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS Only Navigation Menu</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <label for="show-menu" class="show-menu">Show Menu</label>
    <input type="checkbox" id="show-menu" role="button">
    <ul id="menu">
        <li><a href="#">Home</a></li>
        <li>
            <a href="#">About &#65516;</a>
            <ul class="hidden">
                <li><a href="#">Who We Are</a></li>
                <li><a href="#">What We Do</a></li>
            </ul>
        </li>
        <li>
            <a href="#">Portfolio &#65516;</a>
            <ul class="hidden">
                <li><a href="#">Photography</a></li>
                <li><a href="#">Web &amp; User Interface Design</a></li>
                <li><a href="#">Illustration</a></li>
            </ul>
        </li>
        <li><a href="#">News</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
</body>
</html>

CSS:

/*Strip the ul of padding and list styling*/
ul {
    list-style-type:none;
    margin:0;
    padding:0;
    position: absolute;
}

/*Create a horizontal list with spacing*/
li {
    display:inline-block;
    float: left;
    margin-right: 1px;
}

/*Style for menu links*/
li a {
    display:block;
    min-width:140px;
    height: 50px;
    text-align: center;
    line-height: 50px;
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    color: #fff;
    background: #2f3036;
    text-decoration: none;
}

/*Hover state for top level links*/
li:hover a {
    background: #19c589;
}

/*Style for dropdown links*/
li:hover ul a {
    background: #f3f3f3;
    color: #2f3036;
    height: 40px;
    line-height: 40px;
}

/*Hover state for dropdown links*/
li:hover ul a:hover {
    background: #19c589;
    color: #fff;
}

/*Hide dropdown links until they are needed*/
li ul {
    display: none;
}

/*Make dropdown links vertical*/
li ul li {
    display: block;
    float: none;
}

/*Prevent text wrapping*/
li ul li a {
    width: auto;
    min-width: 100px;
    padding: 0 20px;
}

/*Display the dropdown on hover*/
ul li a:hover + .hidden, .hidden:hover {
    display: block;
}

/*Style 'show menu' label button and hide it by default*/
.show-menu {
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    text-decoration: none;
    color: #fff;
    background: #19c589;
    text-align: center;
    padding: 10px 0;
    display: none;
}

/*Hide checkbox*/
input[type=checkbox]{
    display: none;
    -webkit-appearance: none;
}

/*Show menu when invisible checkbox is checked*/
input[type=checkbox]:checked ~ #menu{
    display: block;
}


/*Responsive Styles*/

@media screen and (max-width : 760px){
    /*Make dropdown links appear inline*/
    ul {
        position: static;
        display: none;
    }
    /*Create vertical spacing*/
    li {
        margin-bottom: 1px;
    }
    /*Make all menu links full width*/
    ul li, li a {
        width: 100%;
    }
    /*Display 'show menu' link*/
    .show-menu {
        display:block;
    }
}

我已经看到移动浏览器采用了悬停效果,但大多数时候它有一些复杂性。悬停 "state" 与移动设备无关,这会导致您遇到一些问题。

我建议使用一点 Javascript 来解决问题。你可以尝试这样的事情:

// Toggle menu
$(document).ready(function(){
    $("#about").click(function(){
        $("#aboutSub").hide();
    });
});

结合以下HTML

<li>
    <a href="#" id="about">About</a>
    <ul id="aboutSub">
        <li><a href="#">Who We Are</a></li>
        <li><a href="#">What We Do</a></li>
    </ul>
</li>

在这种情况下,按 "About" 将隐藏子菜单。您可以 运行 一个 if 语句来检查该元素是否可见。您还可以使用 ToggleClass 将 class 添加到将状态从 display: block 更改为 display: none 的元素。这些只是解决此问题的一些简单解决方案。

希望这能让你走上正轨:)

Opera 当前的开发者版本存在下拉菜单问题。也许你 运行 喜欢这个。