#html #css
#HTML #css
Вопрос:
Я пытаюсь разместить свой логотип и меню гамбургеров по обе стороны страницы, при этом логотип слева, а гамбургер справа. Два элемента либо перевернуты, либо расположены друг над другом. Я даже не могу вспомнить все, что я пробовал, чтобы исправить это … это были часы переделки.
HTML
<nav>
<div id="topNav" class="navigation">
<span id="closebtn" onclick="navToggle()">
<span class="line1"></span>
<span class="line2"></span>
<span class="line3"></span>
</span>
<ul class="menulist">
<li><a class="menuitems" href="project3.html">PUPSPOT</a></li>
<li><a class="menuitems" href="project.html">POTTED</a></li>
<li><a class="menuitems" href="about.html">ABOUT</a></li>
<li><a class="menuitems" href="contact.html">CONTACT</a></li>
</ul>
</div>
<div id="main">
</div>
<div class="logo">
<img src="images/madlogo.png"/>
</div>
</nav>
CSS
* {
box-sizing: border-box;
}
html {
font-size: 10px;
}
html,body
{
background-color: #f7f7f8;
width: 100%;
height: auto;
margin: 0px;
padding: 0px;
position: relative;
}
body {
transition: background-color .5s;
}
.container {
background-color: #f7f7f8;
display: grid;
grid-template-columns: 1fr;
grid-auto-rows: minmax(1px, auto);
grid-template-areas:
"nav"
"hero"
"proj"
"process";
padding-bottom: 5rem;
position: relative;
text-align: center;
width: 100%;
margin: 0 auto;
min-height: 100vh;
}
nav {
display: flex;
flex-direction: row;
align-items: center;
position: sticky;
top: 0;
width: 100%;
z-index: 99;
display: flex;
grid-area: nav;
}
.navigation {
width: 100%;
position: sticky;
z-index: 1;
top: 0;
overflow: hidden;
transition: all 0.4s ease-in-out;
padding-top: 0px;
}
.logo {
margin:0 auto;
position: absolute;
width: 4%;
}
Ответ №1:
Хорошо, поэтому сначала я бы рекомендовал посмотреть мою статью для получения хороших ссылок на CSS…
https://medium.com/@hunter.campbell843/css-references-for-new-developers-and-old-6e3dbead437f
Также вам просто нужен атрибут justifyContent: пробел между вашим элементом навигации и для размещения вашего «основного» элемента вне вашего элемента. Вот что я сделал с вашим кодом ниже….
<!DOCTYPE html>
<html>
<head>
<style>
* {
box-sizing: border-box;
}
html {
font-size: 10px;
}
html,
body {
background-color: #f7f7f8;
width: 100%;
height: auto;
margin: 0px;
padding: 0px;
position: relative;
}
body {
transition: background-color 0.5s;
}
.container {
background-color: #f7f7f8;
display: grid;
grid-template-columns: 1fr;
grid-auto-rows: minmax(1px, auto);
grid-template-areas:
"nav"
"hero"
"proj"
"process";
padding-bottom: 5rem;
position: relative;
text-align: center;
width: 100%;
margin: 0 auto;
min-height: 100vh;
}
nav {
display: flex;
flex-direction: row;
justify-content: space-between; /*This pushes your child elements to each extreme, what you were missing*/
align-items: center;
position: sticky;
top: 0;
/* width: 100%; */ /*You're using grid so you shouldn't need this*/
z-index: 99;
grid-area: nav;
}
.navigation {
/* width: 100%; Don't need either*/
position: sticky;
z-index: 1;
top: 0;
overflow: hidden;
transition: all 0.4s ease-in-out;
padding-top: 0px;
}
.logo {
width: 50px;
height: 50px;
/* margin: 0 auto; Don't need either*/
/* position: absolute; Don't need either*/
width: 4%;
}
</style>
</head>
<body>
<nav>
<div class="logo">
<img src="" />
</div>
<div id="topNav" class="navigation">
<span id="closebtn" onclick="navToggle()">
<span class="line1"></span>
<span class="line2"></span>
<span class="line3"></span>
</span>
<ul class="menulist">
<li><a class="menuitems" href="">PUPSPOT</a></li>
<li><a class="menuitems" href="">POTTED</a></li>
<li><a class="menuitems" href="">ABOUT</a></li>
<li><a class="menuitems" href="">CONTACT</a></li>
</ul>
</div>
</nav>
<div id="main"></div> <!--Your main element was inside your nav element throwing everything off-->
</body>
</html>