如何在 HTML/CSS 中的垂直菜单旁边创建内容部分
Posted
技术标签:
【中文标题】如何在 HTML/CSS 中的垂直菜单旁边创建内容部分【英文标题】:How to create a content section beside a vertical menu in HTML/CSS 【发布时间】:2021-06-17 20:28:25 【问题描述】:我正在尝试创建一个模板,所以我需要一个可编辑的区域 div(红色框)旁边的侧边菜单(蓝色框)来放置内容。我不知道怎么做。我尝试的每一件事都隐藏了菜单或我创建的新 div。我对这件事真的很陌生,我将不胜感激任何帮助实现这一目标,或者让我知道它是否可能。 rough sketch of what I want the site to look like
这是侧边菜单的代码。
@charset "utf-8";
p, ul, li, div, nav
padding: 0;
margin: 0;
body
font-family: Calibri;
#menu
overflow: auto;
position: relative;
z-index: 2;
.parent-menu
background-color: #0c8fff;
min-width: 200px;
float: left;
#menu ul
list-style-type: none;
#menu ul li a
padding: 10px 15px;
display: block;
color: #fff;
text-decoration: none;
#menu ul li a:hover
background-color: #007ee9;
#menu ul li:hover > ul
left: 200px;
-webkit-transition: left 200ms ease-in;
-moz-transition: left 200ms ease-in;
-ms-transition: left 200ms ease-in;
transition: left 200ms ease-in;
#menu ul li > ul
position: absolute;
background-color: #333;
top: 0;
left: -200px;
min-width: 200px;
z-index: -1;
height: 100%;
-webkit-transition: left 200ms ease-in;
-moz-transition: left 200ms ease-in;
-ms-transition: left 200ms ease-in;
transition: left 200ms ease-in;
#menu ul li > ul li a:hover
background-color: #2e2e2e;
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<link href="CSS/Styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<h3>CSS3 Vertical Menu With Sub Menus</h3>
<nav id="menu">
<ul class="parent-menu">
<li><a href="#">Home & Kitchen</a>
<ul>
<li><a href="#">item1</a></li>
<li><a href="#">item2</a></li>
<li><a href="#">item3 with submenu</a>
<ul>
<li><a href="#">item</a></li>
<li><a href="#">Even more</a>
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
<li><a href="#">item4</a></li>
<li><a href="#">item5</a></li>
<li><a href="#">item6</a></li>
</ul>
</li>
<li><a href="#">Electronics</a>
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
<li><a href="#">Clothing</a>
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
<li><a href="#">Cars & Motorbikes</a>
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
<li><a href="#">Books</a>
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
<li><a href="#">Support</a>
<ul>
<li><a href="#">Contact Us</a></li>
<li><a href="#">Forum</a>
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
</li>
<li><a href="#">Deliveries</a></li>
<li><a href="#">T&C</a></li>
</ul>
</li>
</ul>
</nav>
</body>
</html>
【问题讨论】:
【参考方案1】:我要做的是创建第三个 div 并给它一个类或 ID(我将称之为 Green Box),然后将其他两个 div 放在第三个中。
之后给 Green Box 一个display: inline;
。这样,div 将能够彼此相邻。
如果还没有解决,可以尝试更改红蓝框的margin
。
【讨论】:
我试过了,问题是侧边菜单导航标签宽度一直延伸到整个页面,因为用户悬停时会出现菜单项。我希望有一种方法可以将 nav 元素覆盖在 redbox 上,同时使 redbox 仍然可见。然后当菜单项出现时,它们将暂时覆盖内容(红色框)。 (我不介意让侧边菜单成为另一种使这种结构成为可能的方法)。谢谢 如果你添加一个 Z 索引?但我不确定。您还可以做的是摆脱导航标签,因为它们仅用于屏幕阅读器。或者我的最后一个选择是让导航标签不可见或隐藏?当它们被隐藏时,它们不再占用空间。我希望这有帮助!此外,您可以在 -not navigation- div 上使用margin-top: -100px
,这样您就可以强制 div 变得更高以上是关于如何在 HTML/CSS 中的垂直菜单旁边创建内容部分的主要内容,如果未能解决你的问题,请参考以下文章
如何创建 HTML / CSS 代码,以允许带有按钮的可滚动侧边栏更改旁边播放器中的视频源?
如何在 Angular 8 和 Angular 材料中单击 sidenav 中的菜单时在侧栏旁边显示我的组件