Как загнать картинку под шапку сайта?
Вот мой макет
Как загнать оранжевую картинку под шапку сайта?
Так же при добавлении контента у меня летит вся верстка, хотя для header'a четко указаны границы (100рх высота).
В чем мои ошибки? Если не трудно, подскажите, пожалуйста.
Заранее спасибо!
body {
width: 1680px;
margin: 0 auto;
}
header {
height: 100px;
position: absolute;
z-index: 1;
background-color: rgba(248, 248, 248, 0.1);
display: flex;
}
.menu_block {
padding-top: 22px;
padding-bottom: 22px;
display: flex;
align-items: center;
}
.menu a {
text-decoration: none;
color: #2f3c4d;
font-family: Roboto;
font-size: 20px;
font-weight: 500;
text-transform: uppercase;
}
.menu a:hover {
text-decoration: underline;
}
.menu li {
margin-right: 50px;
display: inline-block;
}
.menu li:last-child {
margin-right: 0;
}
.logo img {
margin-right: 320px;
margin-left: 270px;
}
.button a {
line-height: 14px;
display: block;
text-transform: uppercase;
font-family: 'Roboto', sans-serif;
font-size: 20px;
font-weight: 500;
color: #ffffff;
box-sizing: border-box;
padding: 18px 35px;
background: #ff7340;
border-radius: 25px;
cursor: pointer;
margin-top: 25px;
margin-bottom: 25px;
margin-left: 160px;
margin-right: 260px;
text-decoration: none;
}
.text_live {}
<header>
<div class="menu_block">
<div class="logo">
<a href="#"><img class="logo_img" src="https://i.postimg.cc/BvJbtVhY/logo.png" alt=""></a>
</div>
<div class="menu">
<ul>
<li><a href="/about">about</a></li>
<li><a href="/meeting">meet us</a></li>
<li><a href="/gallery">gallery</a></li>
<li><a href="/blog">blog</a></li>
</ul>
</div>
</div>
<div class="button">
<a href="/adventures">adventures</a>
</div>
<div class="live_block">
<div class="text_live">
<h1>Live your <span class="adv_style">adventure</span></h1>
<div class="text_live">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div class="btn_live">
<a href="#">Take me there</a>
</div>
<div class="img_orange">
<img src="https://i.postimg.cc/TYQHZyzK/bg.png" alt="">
</div>
</div>
</div>
</header>
Ответы (2 шт):
Для того чтобы поместить один элемент под другой нужно отталкиваться от концепции контекста наложения. Если элемент имеет позицию отличную от static, то к нему применим z-index, свойство позволяющее перемещать элемент выше или ниже относительно его текущего "слоя".
Ниже простой пример применения вышеописанного на примере Вашего исходного кода:
body {
margin: 0 auto;
}
header {
position: relative;
display: flex;
height: 100px;
}
.menu_block {
position: absolute;
top: 0;
background-color: rgba(248, 248, 248, 0.2);
z-index: 1;
padding-top: 22px;
padding-bottom: 22px;
display: flex;
align-items: center;
}
.menu a {
text-decoration: none;
color: #2f3c4d;
font-family: Roboto;
font-size: 20px;
font-weight: 500;
text-transform: uppercase;
}
.menu a:hover {
text-decoration: underline;
}
.menu li {
margin-right: 50px;
display: inline-block;
}
.menu li:last-child {
margin-right: 0;
}
.logo img {
margin-right: 32px;
margin-left: 27px;
}
.button a {
line-height: 14px;
display: block;
text-transform: uppercase;
font-family: "Roboto", sans-serif;
font-size: 20px;
font-weight: 500;
color: #ffffff;
box-sizing: border-box;
padding: 18px 35px;
background: #ff7340;
border-radius: 25px;
cursor: pointer;
margin-top: 25px;
margin-bottom: 25px;
margin-left: 0;
margin-right: 26px;
text-decoration: none;
}
.img_orange {
position: absolute;
top: 0;
right: 0;
width: 300px;
height: 300px;
background-color: #ff7340;
border-bottom-left-radius: 30px;
z-index: -1;
}
.live_block {
margin: 70px 40px 0;
}
<header>
<div class="menu_block">
<div class="logo">
<a href="#"><img class="logo_img" src="https://i.postimg.cc/BvJbtVhY/logo.png" alt=""></a>
</div>
<div class="menu">
<ul>
<li><a href="/about">about</a></li>
<li><a href="/meeting">meet us</a></li>
<li><a href="/gallery">gallery</a></li>
<li><a href="/blog">blog</a></li>
</ul>
</div>
<div class="button">
<a href="/adventures">adventures</a>
</div>
</div>
<div class="img_orange"></div>
</header>
<div class="live_block">
<div class="text_live">
<h1>Live your <span class="adv_style">adventure</span></h1>
<div class="text_live">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div class="btn_live">
<a href="#">Take me there</a>
</div>
</div>
</div>
Нужно сделать родительской блок, у которого будет position: relative, внутри этого блока вы можете создать position: absolute элемент, давать им разные z-index и они будут вставать в нужной очередности.
В данном примере я использовал псевдоэлемент ::after к блоку .intro, у которого стоит position:relative. Псевдоэлементу я задал postion: absolute и z-index: -1, таким образом, он стал ниже всех других элементов.
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
:root {
--orange: #F87A4C;
}
img {
display: block;
max-width: 100%;
}
body,
html {
height: 100%;
font-family: 'Roboto', sans-serif;
}
.container {
max-width: 1000px;
margin: 0 auto;
padding: 0 20px;
}
a {
text-decoration: none;
color: black;
}
header {
text-transform: uppercase;
background-color: rgba(248, 248, 248, 0.3);
padding: 10px 0;
white-space: nowrap;
font-weight: bold;
}
header a {
letter-spacing: 1px;
position: relative;
padding-bottom: 2px;
--colorLine: black;
}
header a::before {
content: '';
display: block;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 2px;
background-color: var(--colorLine);
transform-origin: left;
transition: transform 0.2s linear;
}
header a:hover::before {
transform: scaleX(0)
}
.btn {
display: inline-block;
color: white;
background-color: var(--orange);
padding: 10px 15px;
border-radius: 20px;
font-size: 18px;
transition-property: color, background-color, border-color;
transition-duration: 0.2s;
transition-timing-function: linear;
border: 2px solid transparent;
}
.btn:hover {
color: black;
border-color: var(--orange);
background-color: white;
}
.flex {
display: flex;
}
.header__container {
justify-content: space-between;
align-items: center;
}
.header__container>*:not(:last-child) {
margin-right: 20px;
}
nav.header__menu>*:not(:last-child) {
margin-right: 10px;
}
.header__logo {
--width: 30px;
min-width: var(--width);
max-width: var(--width);
}
.header__right>a {
--colorLine: white;
color: white;
}
.intro {
min-height: 100%;
position: relative;
flex-direction: column;
z-index: 1;
}
.intro::before {
content: '';
display: block;
position: absolute;
width: 50%;
height: 100%;
background-color: var(--orange);
z-index: -1;
border-radius: 0 0 0 100px;
top: 0;
right: 0;
}
.intro>.intro__preview {
flex: 1;
padding: 10px 0;
flex-direction: column;
justify-content: center;
}
.intro__preview__container {
flex-direction: column;
align-items: flex-start;
}
.intro__preview__container>*:not(:last-child) {
margin-bottom: 15px;
}
.intro__h1 {
font-size: 50px;
}
.intro__h1 span {
color: var(--orange);
text-transform: uppercase;
display: block;
}
<section class="intro flex">
<header>
<div class="container">
<div class="header__container flex">
<div class="header__logo">
<img src="https://i.postimg.cc/BvJbtVhY/logo.png">
</div>
<nav class="header__menu flex">
<a href="">About</a>
<a href="">Meet us</a>
<a href="">Gallery</a>
<a href="">Blog</a>
</nav>
<div class="header__right">
<a href="">Adventures</a>
</div>
</div>
</div>
</header>
<div class="intro__preview flex">
<div class="container">
<div class="intro__preview__container flex">
<h1 class="intro__h1">Live your <span>adventure</span></h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus aliquam cum optio suscipit eligendi voluptatem odio in. Excepturi, ut.</p>
<a href="" class="btn">Take me there</a>
</div>
</div>
</div>
</section>
