如何在 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 代码,以允许带有按钮的可滚动侧边栏更改旁边播放器中的视频源?

HTML CSS中的垂直线[重复]

如何在 Angular 8 和 Angular 材料中单击 sidenav 中的菜单时在侧栏旁边显示我的组件

HTML+CSS实现网页的导航栏和下拉菜单

我如何在 cdk-overlay-pane 旁边为 Angular 7 中的材质菜单应用自定义类

如何创建旁边有 2x3 网格的侧边栏