#javascript #html #css #media-queries #css-grid
#javascript #HTML #css #медиа-запросы #css-сетка
Вопрос:
В настоящее время я работаю над простым адаптивным сайтом портфолио. Я использую HTML и CSS grid для верстки сайта. Прямо сейчас он корректно работает на рабочем столе и даже при уменьшении до наименьшего размера в настольном браузере.
Однако, когда я загружаю страницу в свой мобильный браузер (iPhone Xs — chrome и Safari), справа от панели навигации остается пустое место, а изображения стекают с правой стороны страницы. Мне нужно, чтобы он соответствовал границам страницы, но я застрял. Похоже, что мои медиа-запросы не работают, и я не хочу создавать отдельную мобильную страницу HTML и CSS.
HTML, CSS и Javascript приведены ниже:
const toggleButton = document.getElementsByClassName('toggle-button')[0]
const navbarLinks = document.getElementsByClassName('navbar-links')[0]
toggleButton.addEventListener('click', () => {
navbarLinks.classList.toggle('active')
})
* {
margin: 0;
padding: 0;
}
.gray {
background-color: #ebebeb;
}
.navbar {
display: flex;
position: relative;
justify-content: space-between;
align-items: center;
background-color: #ebebeb;
color: #004e98;
max-width: 1560px;
margin: 0 auto;
}
/* BRAND TITLE CSS ALL PROPERTIES */
.brand-title {
font-size: 1.7rem;
margin: 1rem 1rem 1rem 30px;
font-weight: bold;
text-decoration: none;
/* background-color: pink; */
/*leave margin, it affects space around ur name when mobile size*/
}
a:link {
text-decoration: none;
color: #004e98;
}
a:visited {
color: #004e98;
}
/* BRAND TITLE CSS ALL PROPERTIES END */
.navbar-links {
height: 100%;
}
.navbar-links ul {
display: flex;
/*makes list horizontal, not vertical*/
margin-right: 30px;
padding: 0;
/* background-color: yellow; */
}
.navbar-links li {
list-style: none;
}
.navbar-links li a {
display: block;
text-decoration: none;
color: #004e98;
padding-left: 2rem;
font-size: 1.2rem;
}
.navbar-links li a:hover {
color: #ff6700;
}
.brand-title a:hover {
color: #ff6700;
text-decoration: none;
}
.toggle-button {
position: absolute;
top: 1.2rem;
right: 1rem;
display: none;
flex-direction: column;
justify-content: space-between;
width: 30px;
height: 21px;
background-color: pink;
}
.toggle-button .bar {
height: 3px;
width: 100%;
background-color: #004e98;
/* color of individual bars*/
border-radius: 10px;
}
@media(min-width:600px) {
.Content {
display: block;
grid-gap: 10px;
margin: 40px auto;
box-sizing: border-box;
}
}
@media (max-width: 699px) {
.navbar {
flex-direction: column;
align-items: flex-start;
}
.toggle-button {
display: flex;
}
.navbar-links {
display: none;
width: 100%;
background-color: white;
}
.navbar-links ul {
width: 100%;
flex-direction: column;
margin-right: 0;
/*this removes margin applied for large screens*/
}
.navbar-links ul li {
text-align: center;
/* background-color: #EC643E; /*orange bkg color of drop down*/
*/
}
.navbar-links ul li a {
padding: 1rem 1rem;
/* border-style: solid; */
/* border-radius: 15px; */
background-color: ;
/*blue button bkg*/
margin: 0;
color: #004e98;
}
.navbar-links.active {
display: flex;
background-color: #ebebeb;
}
.navbar-links li a:hover {
background-color: #ff6700;
/*orange bar color upon hover*/
color: white;
}
}
.Content {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
grid-gap: 10px;
max-width: 1560px;
padding-left: 30px;
padding-right: 30px;
margin: 40px auto;
/* background-color: #ffedba; */
box-sizing: border-box;
}
img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 15px;
}
/* IMAGE OVERLAY CSS - START*/
.overlay {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
height: 100%;
width: 100%;
opacity: 0;
transition: .5s ease;
background: rgba(0, 0, 0, .5);
/* Black see-through */
color: #f1f1f1;
}
.text {
color: white;
font-size: 20px;
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
text-align: center;
}
.child-a:hover .overlay {
opacity: 100;
border-radius: 15px;
}
.child-a {
position: relative;
width: 100%;
}
/* IMAGE OVERLAY CSS - END*/
/* Background Styles Only */
@import url('https://fonts.googleapis.com/css?family=Raleway');
* {
font-family: Raleway, sans-serif;
}
<!DOCTYPE html>
<html lang="en">
<!-- <script type="text/javascript"> -->
<!--
if (screen.width <= 699) {
document.location = "mobile.html";
}
//-->
<!-- </script> -->
<head>
<meta charset="UTF-8">
<title>CodePen - Home page</title>
<link rel="stylesheet" href="style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
</head>
<body>
<!-- partial:index.partial.html -->
<div class="gray">
<nav class="navbar">
<div class="brand-title"><a href="#">Your name</a></div>
<a href="#" class="toggle-button">
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</a>
<div class="navbar-links">
<ul>
<li><a href="#">About</a></li>
<li><a href="#">Work</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</nav>
</div>
<div class="Content">
<div class="child-a"><img src="https://greatplainsnursery.com/wp-content/uploads/2016/12/oak-tree-pic.jpg">
<a href="#">
<div class="overlay">
<div class="text">Tree</div>
</div>
</a>
</div>
<div class="child-a"><img src="https://i.insider.com/5cc1bb5766ae8f377d25f087?width=750amp;format=jpegamp;auto=webp">
<a href="#">
<div class="overlay">
<div class="text">Stuff</div>
</div>
</a>
</div>
<div class="child-a"><img src="https://greatplainsnursery.com/wp-content/uploads/2016/12/oak-tree-pic.jpg">
<a href="#">
<div class="overlay">
<div class="text">Tree</div>
</div>
</a>
</div>
<div class="child-a"><img src="https://i.insider.com/5cc1bb5766ae8f377d25f087?width=750amp;format=jpegamp;auto=webp">
<a href="#">
<div class="overlay">
<div class="text">Tree</div>
</div>
</a>
</div>
<div class="child-a"><img src="https://greatplainsnursery.com/wp-content/uploads/2016/12/oak-tree-pic.jpg">
<a href="#">
<div class="overlay">
<div class="text">Stuff</div>
</div>
</a>
</div>
<div class="child-a"><img src="https://i.insider.com/5cc1bb5766ae8f377d25f087?width=750amp;format=jpegamp;auto=webp">
<a href="#">
<div class="overlay">
<div class="text">Goats</div>
</div>
</a>
</div>
</div>
<!-- partial -->
<script src="script.js"></script>
</body>
</html>
Комментарии:
1. Не могли бы вы добавить скриншот представления мобильного браузера? Хотелось бы узнать, какие разделы содержат пробелы и переполненные изображения.
2. Конечно, как мне прикрепить скриншот?
3. Отредактируйте вопрос, и вы сможете его включить
Ответ №1:
Попробуйте прокомментировать один из медиа-запросов. Посмотрите, как это работает, а затем прокомментируйте другой медиа-запрос. Если это не сработает, попробуйте изменить цифры: 600 и 699. Увеличьте 600 или уменьшите 699.
Комментарии:
1. Добро пожаловать в Stack Overflow! Это комментарий, а не ответ. Функция ответа не должна использоваться для комментариев.
Ответ №2:
Попробуйте изменить медиа-запрос, чтобы .Content
это также решило проблему с вашим меню.
проверьте прилагаемый скриншот :
Обновлено:
@media (max-device-width: 640px) and (min-device-width: 320px) {
.Content {
display: block !important;
grid-gap: 10px !important;
margin: 40px auto !important;
box-sizing: border-box !important;
}
}
Комментарии:
1. Я добавил то, что вы сделали с новым медиа-запросом, но он все еще не работает для меня. Можете ли вы прикрепить новый код с внесенными вами изменениями? Возможно, я что-то упускаю.
2. я только что добавил (заменил
@media(min-width:600px)
) диапазон ширины и добавил!important
и перезагрузил с помощью ctrl shift R3. Я добавил новый медиа-запрос, как вы опубликовали, но он по-прежнему отображается одинаково. Есть ли что-нибудь еще, что мне нужно добавить или удалить? Должен ли я удалить медиа-запрос @media (максимальная ширина: 699 пикселей)?
4. ваш
@media (max-width: 699px)
работает так, как он отображается в разделе проверки браузера, но@media (min-width: 600px)
не отображался, поэтому я изменил это. попробуйте проверить, почему медиа-запрос 600 пикселей не работает. потому что я добавил код, вUpdated:
котором я изменил.