javascript - 我需要像包含的示例一样进行下拉和下拉

标签 javascript android jquery html css

<分区>


要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:Stack Overflow question checklist

关闭 9 年前

我需要像这样创建一个下拉导航栏(右上角)和一个下拉按钮/链接(在左上角)。一旦屏幕缩小到一定的像素宽度,就会显示下拉菜单。如果看不到下拉菜单 (NAV),请将浏览器调小。

enter image description here

它们需要响应浏览器的大小。这是一个移动网站(iphone 和 android)。如果可能,请包括 fiddle 。或详细说明。我不想只使用 boot strap 或任何其他平台 Html5 css3 和 javascript/jquery。请包括动画。

例子: http://treadsack.com/

我该怎么做?

非常感谢!

最佳答案

那么你可以使用 CSS media queriesviewport/screen 时应用不同的样式调整大小:

@media (max-width:600px) {
/* if the viewport is less than or equal to 600px hide the div */
    div { display:none; }
}

如果你有这样的标记结构:

<nav> 
<span>NAV</span>
<ul>
    <li>Home</li>
    <li>About</li>
    <li>News</li>
</ul>
</nav>

那么 CSS 将是:

ul {
    display:block;
}
li {
    display:inline-block;
    height:30px;
    line-height:30px;
}
span {
    display:none;
    height:30px;
    line-height:30px;
    cursor:pointer;
}
@media (max-width:600px) {
    ul {
        display:none;
    }
    li {
        display:block;
    }
    span {
        display:inline;
    }
}

然后在您单击 NAV 时显示/隐藏下拉菜单:

$('span').click(function () {
    $(this).siblings('ul').slideToggle('slow');
});

查看此 jsfiddle .


现在,当您单击 <span>再次隐藏下拉菜单,然后将视口(viewport)宽度调整为大于 600 内联菜单列表未显示。这是由于 .slideToggle() , js/jQuery 将其样式设置为内联属性 <ul style="">在元素上并覆盖 CSS 样式。您可以通过声明 !important 来绕过它在您的 CSS 上否决 jQuery 样式,但在这种情况下它不会有帮助,因为我们使用 jQuery 来滑动下拉菜单。

一个解决方案是处理 viewport/window也可以通过 jQuery 调整大小。 CSS 媒体查询监听 window.innerWidth但这可能会在跨浏览器(尤其是较旧的 IE)上返回不同的值。所以我们需要创建一个返回 viewport-width 的函数:

function viewportWidth() {
    var e = window,
        a = 'inner';
    if (!('innerWidth' in window)) {
        a = 'client';
        e = document.documentElement || document.body;
    }
    return e[a + 'Width'];
}

然后在窗口上使用它resize事件:

$(window).resize(function () {
    if (viewportWidth() <= 600) {
        $('span').show();
        $('ul').hide();
    } else {
        $('ul').show();
        $('span').hide();
    }
});

检查这个jsfiddle .

关于javascript - 我需要像包含的示例一样进行下拉和下拉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20671425/

上一篇:css - 如何使一个div出现在另一个css之下

下一篇:jquery - 使用 jquery 单独关闭同一类的每个 div?

相关文章:

java - NetworkInfo.isConnected() 返回 true 但没有连接

android - 如何获得android.Manifest.permission.MEDIA_CONTENT_CONTROL的android权限

jquery - 根据相同的类名更改多个 div 内容?

javascript - 这些javascript minifiers中的任何一个都删除了调试语句吗?

javascript - 应用程序关闭时 setTimeout 不起作用

javascript - 获取编码书 - 理解变量

android - 屏幕关闭时停止监听指纹

javascript - 使用 SetTimeout javascript 重复 Ajax 调用,意外执行

JavaScript:将对象数组转换为泛型中的 HashMap

javascript - Html 页面中选定的 div 突出显示