javascript - 响应式下拉菜单

标签 javascript html css

我在左侧有一个导航 ul,在中间有一个 Logo ,在右侧有另一个 ul,如下所示:

Home    Works    Podcast                  Logo                 Journal    About    Contact 

悬停时有一个关于作品和关于的下拉菜单,我现在想做两件事:

1 - 在移动版本上,我想像这样将导航更改为菜单图标

Logo                                                                     Menu

2 - 在菜单上单击它应该打开新的移动菜单但是如何使下拉菜单在移动设备上工作因为移动设备上没有悬停 以及如何使导航垂直,因为我在左侧有 ul,在右侧有 ul,在中间有 Logo ,我希望它像这样

Home
Works
Podcast
Journal
About
Contact

这是一支密码笔,对不起,我知道我要更多了:

https://codepen.io/anon/pen/jQzYye

最佳答案

我在这里回答您 Logo /菜单定位和订单在移动和桌面上只使用一个菜单而不是两个菜单并将 Logo 作为第一个列表项。请查看整个代码中的注释。

html:

<header id="header">
        <nav class="site-navigation">
            <ul>
        <!-- move logo into li at start of list, ditch the div: -->
        <li class="logo"><h1>Humane</h1></li>
                <li class="left-menu-item active"><a href="">Home</a></li>
                <li class="left-menu-item"><a href="">Works</a>
                    <ul>
                        <li><a href="">Metro</a></li>
                        <li><a href="">Text</a></li>
                        <li><a href="">Columns</a></li>
                        <li><a href="">Full Width</a></li>
                        <li><a href="">Box</a></li>
                    </ul>
                </li>
                <li class="left-menu-item"><a href="">Podcast</a></li>
                <li class="right-menu-item"><a href="">Journal</a></li>
                <li class="right-menu-item"><a href="">About</a>
                    <ul>
                        <li><a href="">Agency</a></li>
                        <li><a href="">Freelancer</a></li>
                    </ul>
                </li>
                <li class="right-menu-item"><a href="">Contact</a></li>
            </ul>
        </nav>
    </header>

CSS:

body {
  max-width: 1600px;
  margin: 0 auto;
}
#header {
    padding: 120px 0;
}

.site-navigation ul {
    list-style: none;
    padding: 0;
}

.site-navigation ul li a {
    color: #A3A3A3;
    text-decoration: none;
    display: block;
}
.site-navigation ul li a:hover {
    font-weight: bold;
    color: black;
}
.site-navigation ul li a::after {
    content: '';
    display: block;
    width: 0;
    height: 1px;
    background: #39393B;
    transition: width .3s;
}
.site-navigation ul li a:hover::after {
    width: 100%;
    transition: width .3s;
}

.site-navigation ul li ul  {
    position: absolute;
    visibility: hidden; /* hides sub-menu */
    opacity: 0;
    z-index: -1;
    -webkit-transition: all 0.4s;
    -o-transition: all 0.4s;
    transition: all 0.4s;
}
.site-navigation ul li ul li {
    padding: 20px 0;
}
.site-navigation ul li:hover ul  {
    visibility: visible; /* shows sub-menu */
    opacity: 1;
    z-index: 1;
}
.active {
    border-bottom: 1px solid #39393B;
}

@media only screen and (max-width : 1019px) {

}


@media only screen and (min-width : 1020px) {
  /* add ul so flex is on ul and move into desktop only media query */
  .site-navigation ul { 
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
}
   /* move into desktop only media query */
  .site-navigation ul li { 
    display: inline-block;
}
 /* move into desktop only media query */
.site-navigation ul li:not(:first-child) {
    margin-left: 2em;
}
  /* add flex order in your media query for desktop only */
.site-navigation ul li.left-menu-item {
    order:1; /* add this */
}
/* add flex order in your media query for desktop only */
.site-navigation ul li.logo {
    order:2; /* add this */
}
/* add flex order in your media query for desktop only */
.site-navigation ul li.right-menu-item {
    order:3; /* add this */
}
}

链接:https://codepen.io/carolmckayau/pen/zMWWXX

关于javascript - 响应式下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53439992/

相关文章:

CSS:选择每第二个 child 而不是每第四个

javascript - AngularJS 未加载我的页面之一

javascript - karma junit 报告崩溃

Javascript,有没有办法将数组编写为没有逗号或空格的单个文本字符串?

html - 为什么相对定位会导致元素下方有空间?

css - <td style="中的元素

javascript - 在partialView (MVC) 中查找类并将变量传递给函数

html - 表格和 div 图像 CSS 问题

javascript - 在点击此链接后,在绑定(bind)到 anchor 链接的 onclick 函数内获取 URL/ anchor

html - 在 flexbox 网格中使一些元素成为高度的两倍