【发布时间】:2019-12-15 17:48:05
【问题描述】:
我正在尝试设计如下图所示的菜单
这是一个响应式菜单,在较小的屏幕上应该看起来像那个。
我现在面临的问题很少。
- 我必须在两个菜单之间添加一个边框,如下图所示,并保持子菜单从主菜单的基线向下约 40px。当我将底部边距添加到 ul li 时,子菜单显示,但当我尝试将指针移到它上面时消失。
-
即使子菜单的宽度大于父菜单的宽度,我也希望子菜单显示在父菜单的中心,我尝试过但未能使其完美。
响应式版本
/*Menu*/
.nav-center
{
text-align:center;
}
.menu-link {
display: none;
float: right;
text-decoration: none;
padding: 19px 10px;
}
.menu {
max-width: 60em;
-webkit-transition: all 0.3s ease-out;
-moz-transition: all 0.3s ease-out;
-ms-transition: all 0.3s ease-out;
-o-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;
}
.menu ul {
padding: 0px;
margin: 0px;
list-style: none;
position: relative;
display: inline-table;
}
.menu > li > ul.sub-menu {
min-width: 10em;
padding: 4px 0;
background-color: #f4f4f4;
border: 1px solid #CCC;
border: 1px solid rgba(0, 0, 0, 0.2);
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
.menu ul:after {
content: ""; clear: both; display: block;
}
.menu ul li {
padding: 0px;
border-right:1px solid #053A7D;
}
.menu > ul > li {
display: inline-block;
}
.menu ul li a {
display: block;
text-decoration: none;
color: #053A7D;
font-size: .9em;
}
.menu ul li > a {
padding: 5px 20px;
}
.menu ul ul {
display: none;
position: absolute;
top:100%;
min-width: 160px;
border-top: 2px solid #053A7D;
/*background-color: #f4f4f4;
border: 1px solid rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
*/
}
.menu ul li:hover > ul {
display: block;
}
.menu ul ul > li {
position: relative;
}
.menu ul ul > li a {
padding: 5px 2px 5px 2px;
height: auto;
background-color: #fff;
-webkit-transition: background-color 0.2s ease-out;
-moz-transition: background-color 0.2s ease-out;
-ms-transition: background-color 0.2s ease-out;
-o-transition: background-color 0.2s ease-out;
transition: background-color 0.2s ease-out;
}
.menu ul ul > li a:hover {
/*background-color: #AE5C10;
background-color: rgba(174, 92,16, 0.9);
color: #fff;
*/
}
.menu ul ul ul {
position: absolute;
left: 100%;
top:0;
}
@media screen and (max-width: 768px) {
a.menu-link {
display: block;
color: #fff;
background-color: #AE5C10;
background-color: rgba(174, 92,16, 0.9);
}
.menu {
clear: both;
min-width: inherit;
float: none;
}
.menu, .menu > ul ul {
overflow: hidden;
max-height: 0;
background-color: #f1f1f1;
}
.menu > li > ul.sub-menu {
padding: 0px;
border: none;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
border-radius: 0px;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
.menu.active, .menu > ul ul.active {
max-height: 55em;
}
.menu ul {
display: inline;
}
.menu > ul {
border-top: 1px solid #808080;
}
.menu li, .menu > ul > li {
display: block;
}
.menu li a {
color: #000;
display: block;
padding: 0.8em;
border-bottom: 1px solid #808080;
position: relative;
}
.menu li.has-submenu > a:after {
content: '+';
position: absolute;
top: 0;
right: 0;
display: block;
font-size: 1.5em;
padding: 0.55em 0.5em;
}
.menu li.has-submenu > a.active:after {
content: "-";
}
.menu ul ul > li a {
background-color: #e4e4e4;
height:58px;
padding: 19px 18px 19px 30px;
}
.menu ul ul, .menu ul ul ul {
display: inherit;
position: relative;
left: auto; top:auto;
box-shadow: none;
border:none;
}
}
/*Menu End*/
我已经设置了小提琴示例,在这方面我将不胜感激。
更新:为避免混淆,我正在上传另一张图片,其中以红色显示子菜单位置的指南
【问题讨论】:
-
小提琴看起来很不一样
-
@Marcel,图像中的一个显示是在图形程序中完成的,最后一张带有红线的图像仅供参考,因为一些用户对子菜单的中心对齐感到困惑。
-
如果您不在 CSS 中使用它们,为什么您的 HTML 包含所有类?
标签: javascript jquery html css menu