为什么我的文本和 div 框显示在我的 navbar/hamburger 菜单中而不是页面底部?
Why is my text and div boxes showing in my navbar/hamburger menu rather than the bottom of the page?
这是我第一次 post 在这里,如果格式不正确,我深表歉意。
我正在使用 HTML、CSS 和一点点 JavaScript 制作网站;我正在创建主页。在该页面中,我创建了一个汉堡菜单,当它打开时,您可以看到“主页”、“联系人”、“功能”等列表。那部分非常好。
然后我想在视频下方添加一些内容框。我的代码是正确的;然而,当我进入我的网站时,我看不到我创建的任何框,但是当我打开汉堡菜单时,我看到框和文本在那里。
我怎样才能让它不在菜单中,而是在底部?请帮忙。
我附上了一张图片来展示它的外观:
const menuToggle = document.querySelector('.toggle')
const showCase = document.querySelector('.showcase')
menuToggle.addEventListener('click', () => {
menuToggle.classList.toggle('active')
showCase.classList.toggle('active')
})
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700;800&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
}
.showcase {
position: absolute;
right: 0;
width: 100%;
min-height: 100vh;
padding: 100px;
display: flex;
justify-content: space-between;
align-items: center;
background: black;
color: white;
z-index: 2;
transition: 0.8s;
}
.showcase header {
position: absolute;
top: 0;
left: 0;
width: 100%;
padding: 40px 100px;
z-index: 1000;
display: flex;
align-items: center;
justify-content: space-between;
}
.logo {
text-transform: uppercase;
cursor: pointer;
}
.toggle {
position: relative;
width: 60px;
height: 60px;
background: url('menu.png');
background-repeat: no-repeat;
background-size: 30px;
background-position: center;
cursor: pointer;
}
.toggle.active {
background: url('menu.png');
background-repeat: no-repeat;
background-size: 25px;
background-position: center;
}
.showcase video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0.8;
}
.showcase.active {
right: 300px;
}
.overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #03a9f4;
mix-blend-mode: overlay;
}
.text {
position: relative;
z-index: 10;
}
.text small {
font-size: 30px;
line-height: 1em;
}
.text h1 {
font-size: 3em;
font-weight: 700;
line-height: 1em;
}
.text a {
display: inline-block;
font-size: 1em;
background: white;
padding: 10px 30px;
text-decoration: none;
color: black;
margin-top: 10px;
text-transform: uppercase;
letter-spacing: 2px;
transition: 0.3s;
}
.text a:hover {
letter-spacing: 6px;
}
.social {
position: absolute;
bottom: 20px;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
}
.social li {
list-style: none;
}
.social li a {
display: inline-block;
filter: invert(1);
margin-right: 20px;
transform: scale(0.7);
transition: 0.5s;
}
.social li a:hover {
transform: scale(0.5) translateY(-20px);
}
.menu {
position: absolute;
top: 0;
right: 0;
width: 300px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.menu ul {
position: relative;
list-style: none;
}
.menu ul li a {
text-decoration: none;
font-size: 25px;
color: black;
}
.menu ul li a:hover {
color: #03a9f4;
}
@media(max-width: 991px) {
.showcase,
.showcase header {
padding: 40px;
}
.text small {
font-size: 20px;
}
.text h1 {
font-size: 2em;
}
}
.boxes .container {
display: flex;
justify-content: space-between;
}
.box {
flex: 1;
background: #0a51cc;
color: white;
border-radius: 10px;
margin: 20px 10px;
box-shadow: 0 3px 5px black;
padding: 15px 20px;
}
@media (max-width: 768px) {
.header .container {
flex-direction: column;
padding-top: 20px;
text-align: center;
}
.boxes .container {
display: block;
text-align: center;
}
}
<section class="showcase">
<header>
<h2 class="logo">Blizzard Notify</h2>
<div class="toggle"></div>
</header>
<video src="snow.mp4" muted loop autoplay></video>
<div class="overlay"></div>
<div class="text">
<small>Welcome to Blizzard Notify</small>
<h1>A discord server.</h1>
<a href="#">Explore</a>
</div>
<ul class="social">
<li>
<a href="#"><img src="instagramlogo.png"></a>
</li>
<li>
<a href="#"><img src="twitterlogo.png"></a>
</li>
</ul>
</section>
<div class="menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Features</a></li>
<li><a href="#">Testimonials</a></li>
<li><a href="#">FAQ</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<br>
<br>
<h1 id="features">
Features
</h1>
<section class="boxes">
<div class="container">
<div class="box">
<h2>Detailed Guides</h2>
<p>Dummy Text</p>
</div>
<div class="box">
<h2>Raffles</h2>
<p>Dummy Text for Now.</p>
</div>
<div class="box">
<h2>Lowkey Flips</h2>
<p>Dummy Text for now.</p>
</div>
</div>
</section>
我试图摆脱 JavaScript,但没有帮助;我还尝试在元素之间添加一些 space 但没有任何反应。然后我试着看看我的 CSS 是否有误,但一切似乎都很好。我真的不知道我做错了什么。
将 position: relative
属性 添加到您的 .boxes
div 可以解决问题,因为它通过文档的正常流向元素提供位置。
在您的 CSS 中,您没有为 .boxes
容器分配任何内容,因此默认情况下它设置为 static
,导致了您的问题。
body{
overflow-y: "scroll"; (this is optional.)
}
...
.boxes{
position: relative
}
...
此外,我注意到您使用内联 <script>
。为了获得最佳实践,请确保它位于 <body>
的末尾以提高性能。
这是我第一次 post 在这里,如果格式不正确,我深表歉意。
我正在使用 HTML、CSS 和一点点 JavaScript 制作网站;我正在创建主页。在该页面中,我创建了一个汉堡菜单,当它打开时,您可以看到“主页”、“联系人”、“功能”等列表。那部分非常好。
然后我想在视频下方添加一些内容框。我的代码是正确的;然而,当我进入我的网站时,我看不到我创建的任何框,但是当我打开汉堡菜单时,我看到框和文本在那里。
我怎样才能让它不在菜单中,而是在底部?请帮忙。
我附上了一张图片来展示它的外观:
const menuToggle = document.querySelector('.toggle')
const showCase = document.querySelector('.showcase')
menuToggle.addEventListener('click', () => {
menuToggle.classList.toggle('active')
showCase.classList.toggle('active')
})
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700;800&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
}
.showcase {
position: absolute;
right: 0;
width: 100%;
min-height: 100vh;
padding: 100px;
display: flex;
justify-content: space-between;
align-items: center;
background: black;
color: white;
z-index: 2;
transition: 0.8s;
}
.showcase header {
position: absolute;
top: 0;
left: 0;
width: 100%;
padding: 40px 100px;
z-index: 1000;
display: flex;
align-items: center;
justify-content: space-between;
}
.logo {
text-transform: uppercase;
cursor: pointer;
}
.toggle {
position: relative;
width: 60px;
height: 60px;
background: url('menu.png');
background-repeat: no-repeat;
background-size: 30px;
background-position: center;
cursor: pointer;
}
.toggle.active {
background: url('menu.png');
background-repeat: no-repeat;
background-size: 25px;
background-position: center;
}
.showcase video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0.8;
}
.showcase.active {
right: 300px;
}
.overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #03a9f4;
mix-blend-mode: overlay;
}
.text {
position: relative;
z-index: 10;
}
.text small {
font-size: 30px;
line-height: 1em;
}
.text h1 {
font-size: 3em;
font-weight: 700;
line-height: 1em;
}
.text a {
display: inline-block;
font-size: 1em;
background: white;
padding: 10px 30px;
text-decoration: none;
color: black;
margin-top: 10px;
text-transform: uppercase;
letter-spacing: 2px;
transition: 0.3s;
}
.text a:hover {
letter-spacing: 6px;
}
.social {
position: absolute;
bottom: 20px;
z-index: 10;
display: flex;
justify-content: center;
align-items: center;
}
.social li {
list-style: none;
}
.social li a {
display: inline-block;
filter: invert(1);
margin-right: 20px;
transform: scale(0.7);
transition: 0.5s;
}
.social li a:hover {
transform: scale(0.5) translateY(-20px);
}
.menu {
position: absolute;
top: 0;
right: 0;
width: 300px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.menu ul {
position: relative;
list-style: none;
}
.menu ul li a {
text-decoration: none;
font-size: 25px;
color: black;
}
.menu ul li a:hover {
color: #03a9f4;
}
@media(max-width: 991px) {
.showcase,
.showcase header {
padding: 40px;
}
.text small {
font-size: 20px;
}
.text h1 {
font-size: 2em;
}
}
.boxes .container {
display: flex;
justify-content: space-between;
}
.box {
flex: 1;
background: #0a51cc;
color: white;
border-radius: 10px;
margin: 20px 10px;
box-shadow: 0 3px 5px black;
padding: 15px 20px;
}
@media (max-width: 768px) {
.header .container {
flex-direction: column;
padding-top: 20px;
text-align: center;
}
.boxes .container {
display: block;
text-align: center;
}
}
<section class="showcase">
<header>
<h2 class="logo">Blizzard Notify</h2>
<div class="toggle"></div>
</header>
<video src="snow.mp4" muted loop autoplay></video>
<div class="overlay"></div>
<div class="text">
<small>Welcome to Blizzard Notify</small>
<h1>A discord server.</h1>
<a href="#">Explore</a>
</div>
<ul class="social">
<li>
<a href="#"><img src="instagramlogo.png"></a>
</li>
<li>
<a href="#"><img src="twitterlogo.png"></a>
</li>
</ul>
</section>
<div class="menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Features</a></li>
<li><a href="#">Testimonials</a></li>
<li><a href="#">FAQ</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<br>
<br>
<h1 id="features">
Features
</h1>
<section class="boxes">
<div class="container">
<div class="box">
<h2>Detailed Guides</h2>
<p>Dummy Text</p>
</div>
<div class="box">
<h2>Raffles</h2>
<p>Dummy Text for Now.</p>
</div>
<div class="box">
<h2>Lowkey Flips</h2>
<p>Dummy Text for now.</p>
</div>
</div>
</section>
我试图摆脱 JavaScript,但没有帮助;我还尝试在元素之间添加一些 space 但没有任何反应。然后我试着看看我的 CSS 是否有误,但一切似乎都很好。我真的不知道我做错了什么。
将 position: relative
属性 添加到您的 .boxes
div 可以解决问题,因为它通过文档的正常流向元素提供位置。
在您的 CSS 中,您没有为 .boxes
容器分配任何内容,因此默认情况下它设置为 static
,导致了您的问题。
body{
overflow-y: "scroll"; (this is optional.)
}
...
.boxes{
position: relative
}
...
此外,我注意到您使用内联 <script>
。为了获得最佳实践,请确保它位于 <body>
的末尾以提高性能。