如何正确设置下拉菜单的样式

时间:2013-01-25 20:10:48

标签: jquery html css drop-down-menu

我在造型下拉菜单时遇到了问题。一切都工作正常,但我在我的CSS(它的工作)中有绝对的定位,但当我更改我的屏幕分辨率时它当然不能正常工作。我是一名当时的设计师,所以我想请求一些帮助:-) 这是我的菜单

<div class="navigation">
<!-- some links -->
    <div id="menu">
        <a href="gallery.html">Galerie</a>
        <div id="submenu">
            <a href="galleryOldRooms.html" title="Starší pokoje">Starší pokoje</a><br />
            <a href="galleryNewRooms.html" title="Novější pokoje">Novější pokoje</a>
        </div>
    </div>
</div>

这是相关的CSS

#submenu {
   display: none;
   padding: 0px;
   margin-top: 5em;
   margin-left: 27.5em;
   position: absolute;
   left: 0px;
}
.nav a {
   border-right: 2px solid #161616;
   color: #CCC;
   float: left;
   font: bold 1em Verdana,sans-serif;
   line-height: 51px;
   padding: 0 20px;
}

和JQuery一起做了辍学

$(document).ready(function() {
    $("#menu").hover(function() {
        $("#submenu").fadeIn(); 
        }, 
    function() {
        $("#submenu").fadeOut();
    });
});

如何才能提高浏览器和分辨率的独立性?感谢您的回答!

修改 当我增大或减小显示器的分辨率或尝试在更大的屏幕上查看时,下拉菜单会根据分辨率移动到左侧或右侧。这显然是我没有的。 Here是链接,它没有完成,所以不要对我有意义: - )

3 个答案:

答案 0 :(得分:2)

#menu必须有position:relative;

这样,根据#submenuposition:absolute;#menuleft:0px;意味着它会粘贴在{{1}的左边框上这就是你想要的,不需要#menumargin-left,只需添加margin-top并测试它是否正确定位在 Galerie 下,也许你需要增加顶部或减少它。

top:30px;

<强>更新

当我说#menu { position:relative; } #submenu { display: none; padding: 0px; position: absolute; left: 0px; top:30px; //find the best value } 必须有#menu时,我认为position:relative;是一个仅包含#menu Galerie 的div如果不是这种情况,如果<a>包含所有4个链接:Uvod .. Cenik ..等等......当然它会坚持到最开始。

你需要做的是为Galerie添加特殊div容器,意思是......

#menu

现在,必须为<div id="menu"> <a href="">Uvod</a> <a href="">Cenik</a> <div id="galerieParent"> <a href="">Galerie</a> <div id="submenu"> ...... </div> </div> <a href="">Kontakt</a> </div> 设置position:relative;

答案 1 :(得分:1)

这里有很多问题。我已经修改了布局,使其与大多数开发人员设置此类菜单的方式更加一致。我还颠倒了你的大多数ID和类,它们的使用方式几乎可以保证重复的ID。

这可能不是您问题的理想答案,但我认为其中有一些有用的信息。

http://jsfiddle.net/mrPse/8/

#nav {
    position: relative;
}
#nav a {
    border-right: 2px solid #161616;
    color: #CCC;
    float: left;
    font: bold 1em Verdana, sans-serif;
    line-height: 51px;
    padding: 0 20px;
}
#nav > li {position: relative; display: inline-block;}
#nav li ul li a {border-right: 0;}
.submenu {
    display: none;
    padding: 0px;
    margin-top: 3em;
    position: absolute;
    left: auto;
    width: 180px;
}
.submenu li a {border-right: 0;}

<ul id="nav">
    <li><a href="index.html">Úvod</a></li>
    <li><a href="prices.html">Ceník</a></li>
    <li class="menu">
        <a href="gallery.html">Galerie</a>
        <ul class="submenu" style="display: none;">
            <li><a title="Starší pokoje" href="galleryOldRooms.html">Starší pokoje</a></li>
            <li><a title="Novější pokoje" href="galleryNewRooms.html">Novější pokoje</a></li>
        </ul>
    </li>
    <li><a href="contact.html">Kontakt</a>

    </li>
</ul>

$(".menu").hover(function () {
    $(this).children(".submenu").fadeIn();
}, function () {
    $(this).children(".submenu").fadeOut();
});

答案 2 :(得分:0)

您需要添加一些CSS

#menu {position:relative;}

并更改

#submenu {margin-left:14.5em;}

根据需要进行调整。