我的汉堡菜单总是会出现一些问题,当我尝试将其包含到任何页面时,页面上的项目会被推到底部。我尝试用绝对位置修复它,但也没有真正解决问题。我只是希望我的元素位于汉堡菜单的右侧,并且向左浮动看起来也不太好。
这是我的 HTML 汉堡菜单代码
<body>
<div id=alles>
<div class=schale>
<div class=burger>
<div class=bar>
</div>
</div>
</div>
<div class=seitenbar>
<form>
<div class=buttoncontainer>
<div class=buttonbox>
<i class="fa-regular fa-house"></i> <input class=buttons formaction=homepage.php type=submit value=Home>
</div>
<div class=buttonbox>
<br> <i class="fa-regular fa-key"></i> <input class=buttons formaction=register.php type=submit value=Registrierung>
</div>
<div class=buttonbox>
<br> <i class="fa-regular fa-clipboard-user"></i> <input class=buttons formaction=login.php type=submit value=Login>
</div>
</div>
</form>
</div>
</div>
</body>
以及汉堡菜单的CSS代码
*{
margin: 0;
}
.buttoncontainer{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
padding-left: 0.5vw;
padding-right: 0.5vw;
}
.buttons{
margin-top: 5vh;
margin-bottom: 1vh;
height: auto;
width: auto;
border-radius: 5%;
transition: 0.3s;
border-radius: 1vh;
}
.buttons:hover{
transition: all 0.3s;
color:cadetblue;
background-color: #1c1c21;
}
.schale{
position: relative;
display:flex;
width: 10vw;
min-height: 6vh;
background-color: #1c1c21;
z-index: 0;
}
.burger {
position: relative;
min-height: 2vh;
width: auto;
border-color: red;
padding-top: 0.5vw;
margin-top: 0.5vw;
margin-left: 1vw;
/* transition:all .5s ease-in-out; */
z-index: 0;
}
.bar{
min-height: 0.5vh;
min-width:1vw;
background-color: cadetblue;
border-radius: 5%;
transition: all 0.5s ease-in-out;
border-color: brown;
z-index: 0;
}
.bar::before, .bar::after{
content: "";
position: absolute;
min-height: 0.5vh;
min-width: 1vw;
background-color: cadetblue;
border-radius: 5%;
transition: all 0.5s ease-in-out;
}
.bar::before{
transform: translateY(-1vh);
}
.bar::after{
transform: translateY(1vh);
}
.burger.offen .bar{
transform: translateX(-1.5vw);
background-color:transparent;
background-color: transparent;
}
.burger.offen .bar::before{
transform: rotate(45deg) translate(1vw, -2vh);
}
.burger.offen .bar::after{
transform: rotate(-45deg) translate(1vw, 2vh);
}
.seitenbar{
position: relative;
display: flex;
justify-content: left;
align-content: center;
width: 10vw;
left: -21vw;
height: 94.91vh;
background-color: #1c1c21;
transition: all 0.5s ease-in-out;
z-index: 2;
}
.fa-house{
color:cadetblue;
}
.fa-key{
color:cadetblue;
}
.fa-clipboard-user{
color:cadetblue;
}
以及菜单的 JavaScript 部分
const burgerr = document.querySelector(".burger");
var seitenbar = document.querySelector(".seitenbar");
let öffnen = false;
burgerr.addEventListener("click", () =>{
if (öffnen == false) {
burgerr.classList.add("offen");
öffnen = true;
seitenbar.style.left= "0px";
}
else {
burgerr.classList.remove("offen");
öffnen = false;
seitenbar.style.left="-21vw"
}
// if (öffnen==true) {
// alert("test")
// }
}
);
这是我想要包含汉堡的页面的 HTML 代码
<body>
<?php
include "menu.php" ?>
<link rel=stylesheet href=dashboard.css>
<div id=alles>
<div id=boxen>
<div id=veranstaltungen class=elemente>
Veranstaltungen
<!-- Alle Veranstaltungen anzeigen können
Anzeige, welche Veranstaltungen im Studiengang noch fehlen
Anzeige, welche Veranstaltungen im Studiengang noch fehlen -->
</div>
<div id=veranstaltungen_fertig class=elemente>
abeschlossene veranstaltungen
</div>
<div id=studiengang class=elemente>
Studiengang
<!-- Die Noten der Studenten anzeigen lassen, in der Form, dass zu jedem Studiengang jedes Modul angezeigt wird -->
</div>
</div>
</div>
</body>
以及页面的CSS代码
#boxen{
display:grid;
border-style: solid;
border-width: 1vw;
border-color:black;
grid-template-columns: auto;
grid-template-rows: 1vw, 1vw, 1vw;
justify-content: center;
}
.elemente{
border-style: solid;
border-width:5vw;
border-color:cornflowerblue;
}
如何解决这个问题?
我已经尝试过
float:left;
,但它不起作用,而且绝对位置也没有真正锻炼
没什么可说的,只是一个带有汉堡下拉菜单的非常基本的香草导航栏。添加了一些解释性注释,但我不是 CSS 专家,因此可能存在跨平台问题。不擅长动画,所以忽略了它。哈哈。
function toggleDisplay (el, displayAs = 'block') {
if (window.getComputedStyle(el).display === 'none') {
el.style.display = displayAs
} else {
el.style.display = 'none'
}
}
const burgerr = document.querySelector('#burgerr')
const seitenbar = document.querySelector('#seitenbar')
const logEl = document.querySelector('#log')
burgerr.addEventListener("click", () => {
toggleDisplay(seitenbar, 'block')
})
document.querySelector('#menu-close').addEventListener('click', () => {
toggleDisplay(seitenbar, 'block')
})
document.querySelector('#menu-home').addEventListener('click', () => {
log.textContent = 'home action'
toggleDisplay(seitenbar)
})
document.querySelector('#menu-register').addEventListener('click', () => {
log.textContent = 'register action'
toggleDisplay(seitenbar)
})
document.querySelector('#menu-login').addEventListener('click', () => {
log.textContent = 'login action'
toggleDisplay(seitenbar)
})
document.querySelector('#nav-title').addEventListener('click', () => {
log.textContent = 'home action'
})
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
nav {
list-style-type: none;
background-color: black;
color: white;
user-select: none; /* prevent highlighting menu items */
#burgerr {
padding: 0.5rem; /* more fat-finger friendly */
cursor: pointer; /* interactive cursor */
}
> .nav-bar {
display: flex;
width: 100%;
justify-content: space-between;
align-items: center;
padding: 0 0.5rem;
}
#seitenbar {
display: none;
background-color: black;
color: white;
/* remove menu from normal page flow
so it can't push stuff around.
*/
position: absolute;
top: 0; /* no positioning drama */
left: 0; /* just use a close button in menu */
border: 1px solid gray;
> li {
cursor: pointer;
padding: 0.5rem;
&:not(last-of-type) {
border-bottom: 1px solid gray;
}
}
}
}
p {
text-align: center;
}
#log-container {
width: 100%;
position: absolute;
bottom: 0.25rem;
text-align: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Example</title>
</head>
<body>
<nav>
<div class="nav-bar">
<span id="burgerr" title="menu hamburger">☰</span>
<h1 id="nav-title">Title | Logo</h1>
</div>
<ul id="seitenbar">
<li id="menu-close">
<span>Close Menu</span>
</li>
<li id="menu-home">
<span>Home</span>
</li>
<li id="menu-register">
<span>Register</span>
</li>
<li id="menu-login">
<span>Login</span>
</li>
</ul>
</nav>
<p>A simple example.</p>
<div id="log-container">
<p id="log"></p>
</div>
</body>
</html>