css - 垂直到水平子菜单

标签 css menu submenu

在我的网站 twoguysplayingzelda.com 上,我的子菜单(桌面 View )目前是垂直显示的,我想将其更改为水平显示。当用户将鼠标悬停在“游戏”选项卡上时,我希望子菜单水平拉伸(stretch),几乎就像包含所有游戏的第二个菜单栏一样。我的菜单 CSS 代码如下。感谢您的帮助!

div.navigation.section.no-padding.bg-dark { 
    background: #616161;
}

.main-menu {        
    font-family: 'Arial', sans-serif;   
    font-size: 1.0em;   
    text-align: center;
}       

.main-menu li { position: relative; }       

.main-menu > li { float: left; }        

.main-menu > li:before {        
    content: none;  
    display: block; 
    position: absolute; 
    right: 0;   
    top: 50%;   
    margin-top: -18px;  
    margin-right: -13px;    
}       

.main-menu > li:last-child:before { content: none; }        

.main-menu > li > a {       
    display: block; 
    padding-top: 12px;  
    padding-bottom: 12px;   
    padding-left: 12px; 
    padding-right: 12px;    
    font-size: 1.0em;   
    color: #FFFFFF; 
    text-transform: uppercase;  
    letter-spacing: 1px;    
    font-weight: 400;
}       

.main-menu > li:first-child > a { margin-left: 0; }     

.main-menu > .has-children > a,     
.main-menu > .page_item_has_children > a { padding-right: 12px; position: 
relative; }     

.main-menu > .has-children > a::after,      
.main-menu > .page_item_has_children > a::after {       
    content: "";    
    display: none;
    border: 5px solid transparent;      
    border-top-color: #999; 
    position: absolute; 
    z-index: 1001;  
    right: 29px;    
    top: 50%;   
    margin-top: -2px;   
}       

.main-menu li:hover > a { 
    cursor: pointer;
    background: #01B3D9;  
    color: #FFFFFF; }       

.main-menu > .has-children:hover > a::after,        
.main-menu > .page_item_has_children:hover > a::after { border-top-color: 
#fff; }     

/* 子菜单------------------------------------ */

.main-menu li ul {      
    position: absolute; 
    z-index: 10000; 
    display: block; 
    left: -9999px;  
    top: 10px;  
    -webkit-opacity: 0; 
    -moz-opacity: 0;    
    opacity: 0; 
    z-index: 999;   
    -webkit-transition: opacity 0.3s ease-in-out, top 0.3s ease-in-out; 
    -moz-transition: opacity 0.3s ease-in-out, top 0.3s ease-in-out;    
    -ms-transition: opacity 0.3s ease-in-out, top 0.3s ease-in-out; 
    -o-transition: opacity 0.3s ease-in-out, top 0.3s ease-in-out;  
    transition: opacity 0.3s ease-in-out, top 0.3s ease-in-out; 
}       

.is_mobile .main-menu li ul {       
    -webkit-opacity: 1; 
    -moz-opacity: 1;    
    opacity: 1; 
    display: none;  
}       

.main-menu > li > ul { padding-top: 20px; }     

.main-menu ul li {      
    float: none;        
    display: block;
    border-top: 1px solid rgba(255,255,255,0.075);              
}       

.main-menu ul li:first-child { border-top: none; }      

.main-menu ul > .has-children::after,       
.main-menu ul > .page_item_has_children::after {        
    content: "";
    color: #FFFFFF; 
    display: block; 
    border: 6px solid transparent;  
    border-left-color: rgba(255,255,255,0.4);   
    position: absolute; 
    z-index: 1001;  
    right: 10px;    
    top: 50%;   
    margin-top: -5px;   
}       

.main-menu ul > .has-children:hover::after,
.main-menu ul > .page_item_has_children:hover::after { border-left-color: 
#fff; }             

.main-menu ul li {      
    display: block; 
    width: 240px;   
    background: #616161;    
}       

.main-menu ul a {
    width: 100%;
    font-size: 1.0em;
    background: #616161;    
    display: block; 
    text-align: left;   
    font-weight: 400;   
    padding: 3px;   
    padding-left: 12px; 
    line-height: 130%;  
    color: #FFFFFF; 
}       

.main-menu ul a:hover {         
    background: #01B3D9;
    color: #FFFFFF; 
}       

.main-menu li:hover > ul {      
    -webkit-opacity: 1; 
    -moz-opacity: 1;    
    opacity: 1; 
    left: 138.25%;  
    margin-left: -120px;    
    top: 20.44px;   
}       

.is_mobile .main-menu li:hover ul { display: block; }       


/* Deep down --------------------------------------- */     


.main-menu ul li ul { 
    top: 5px; 
}       

.main-menu ul li:hover > ul {       
    top: 0; 
    left: 240px;    
    margin-left: 0; 
}       

.main-menu ul ul li { background: #3d3d3d; }        
.main-menu ul ul ul li { background: #4d4d4d; }     
.main-menu ul ul ul ul li { background: #4d4d4d; }      

最佳答案

仅供引用,您的游戏子菜单太大而无法水平显示。

这里是你如何做到的。

删除这个:

.main-menu li {
    position: relative;
}

然后添加这个

.main-menu li ul.sub-menu {
    display: flex; 
    position: absolute;
    left: 0;
    right: 0;
    overflow-x: auto;
    margin: 0;
}

应该看起来像:

enter image description here

还可以添加

.main-menu li ul.sub-menu {
    flex-wrap: wrap;
}

这会给你这个:

enter image description here

关于css - 垂直到水平子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50397488/

相关文章:

javascript - 如何将 JSON 动态插入到 Accordion 菜单中?

asp.net - MVC 3 中突出显示菜单和子菜单?

c# - mvc中的无限多级菜单

gridview - ExtJS 4 网格标题中未显示子菜单项

html - 如何在不破坏过渡 CSS/HTML 的情况下添加链接

css - 更改 wordpress 中的字体系列覆盖 WPBakery 页面构建器

javascript - 如何在 HTML pre 标签中禁用水平滚动

html - 如何使用:not selector in CSS?

css - 无论我尝试什么,标题都不会改变颜色

html - 如何在下拉菜单中创建子菜单 (HTML/CSS)