Стили padding
и right
, которые вы установили для nav ul li
pu sh содержимого вне родительского контейнера. Добавление некоторых отзывчивых точек останова с медиа-запросами решит вашу проблему и даст вам больший контроль над макетом при разных разрешениях экрана. В MDN есть статья Руководство для начинающих по медиа-запросам , содержащее дополнительную информацию по медиа-запросам.
Ниже приведен пример использования медиа-запросов с вашим кодом. Обратите внимание, что каждая точка останова указала значение padding-right
, которое может потребоваться настроить так, чтобы ваш контент соответствовал ожидаемому. Тонкая настройка может быть процессом. Я использовал точки останова от Типичные точки останова устройства в качестве хорошей отправной точки.
* {
margin: 0;
padding: 0;
box-sizing: border-box;
color: #fff;
}
header {
background: url(http://www.moirmedia.co.uk/wp-content/uploads/2016/05/Backgroundlow.jpg) no-repeat center center/cover;
background-position: inherit;
height: 165vh;
width: 100%;
}
nav {
background: black;
padding: 1.5rem 1rem;
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
}
nav h2 {
text-transform: uppercase;
font-size: 2.5rem;
padding-right: 2rem;
}
nav ul {
display: flex;
}
nav ul li {
list-style: none;
position: relative;
padding: 0 0.5rem;
font-size: 1.2rem;
}
nav ul li a {
text-decoration: none;
}
.hero-text {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
height: 100%;
}
.hero-text h1 {
font-size: 4rem;
padding: 1rem;
}
.hero-text p {
font-size: 1.3rem;
text-align: justify;
}
/* Extra small devices (phones, 600px and down) */
@media only screen and (max-width: 600px) {
nav ul li {
padding-right: 0.5rem;
}
}
/* Small devices (portrait tablets and large phones, 600px and up) */
@media only screen and (min-width: 600px) {
nav ul li {
padding-right: 0.8rem;
}
}
/* Medium devices (landscape tablets, 768px and up) */
@media only screen and (min-width: 768px) {
nav ul li {
padding-right: 1.8rem;
}
}
/* Large devices (laptops/desktops, 992px and up) */
@media only screen and (min-width: 992px) {
nav ul li {
padding-right: 3rem;
}
}
/* Extra large devices (large laptops and desktops, 1200px and up) */
@media only screen and (min-width: 1200px) {
nav ul li {
right: 5rem;
padding-right: 4rem;
}
}
<header>
<nav>
<h2 class="logo">Logo</h2>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
<div class="hero-text">
<h1>Banner Text Heading</h1>
<p>Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum <br> Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum <br> Lorem ipsum</p>
</div>
</header>
Вот альтернативный подход, использующий свойства flexbox
, такие как justify-content
, и добавление отступов к элементам a
для увеличения коснитесь целевого размера, который улучшает доступность вашего сайта. Я бы предложил этот вариант, поскольку он требует меньше кода для управления, более современного подхода и достигает аналогичных результатов.
* {
margin: 0;
padding: 0;
box-sizing: border-box;
color: #fff;
}
header {
background: url(http://www.moirmedia.co.uk/wp-content/uploads/2016/05/Backgroundlow.jpg) no-repeat center center/cover;
background-position: inherit;
height: 165vh;
width: 100%;
}
nav {
background: black;
padding: 1.5rem 1rem;
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
}
nav h2 {
text-transform: uppercase;
font-size: 2.5rem;
padding-right: 2rem;
}
nav ul {
display: flex;
flex: 1;
justify-content: flex-end;
}
nav ul li {
list-style: none;
position: relative;
font-size: 1.2rem;
}
nav ul li a {
text-decoration: none;
padding: 1rem 0.5rem;
}
nav ul li a:hover {
text-decoration: underline;
}
.hero-text {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
height: 100%;
}
.hero-text h1 {
font-size: 4rem;
padding: 1rem;
}
.hero-text p {
font-size: 1.3rem;
text-align: justify;
}
/* Medium devices (landscape tablets, 768px and up) */
@media only screen and (min-width: 768px) {
nav ul {
justify-content: space-evenly;
}
nav ul li a {
padding: 1rem;
}
}
<header>
<nav>
<h2 class="logo">Logo</h2>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
<div class="hero-text">
<h1>Banner Text Heading</h1>
<p>Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum <br> Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum <br> Lorem ipsum</p>
</div>
</header>
Любой из этих вариантов по-прежнему не помещает все ваши элементы nav
в одну строку на небольшом экране, например на мобильных устройствах. Я предлагаю вам изучить альтернативные шаблоны навигации , такие как складное меню, или даже просто обернуть свой контент с помощью flex-wrap: wrap;
, как @ Yudiz_Webdesign отметил в своем ответе .