Медиа-запросы — проект колледжа для начинающих по HTML и Css

Существует проект, который требует от учащегося создать простое меню или список с объектами любого типа (сделал это внутри div и класса — меню), и когда вы измените размер экрана, он будет реагировать за счет использования мультимедиа. запросы.

Есть шесть объектов.

Максимальное разрешение покажет объекты в строке вверху — все готово, все просто.

В среднем разрешении два объекта будут отображаться рядом, в двух столбцах, то есть в основном сетка 3x2 (строка x столбец). Я понятия не имею, почему, но элементы перекрываются и не остаются в определенном месте, как должны. Пробовал использовать шаблон сетки, но как-то это не очень эффективно. Понятия не имею, неправильный ли синтаксис, но, возможно, я что-то упустил.

В низком разрешении объекты будут отображаться в виде вертикального списка — все готово, тоже просто сделать.

Чтобы было легче анализировать и пытаться найти ошибку, я поместил все в один и тот же html-код ниже.

<main>
<head>
    <style>
    @media (min-width:769px) {
        .menu {
        color: rgb(200,0,0);
        background-color: white;
        display:inline-block;
        width: 16%;            
        }
        .menu2 {
        color: rgb(200,0,0);
        background-color: white;
        display:inline-block;
        width: 16%;             
        }
    
    }
    @media (min-width:481px) and (max-width: 768px){
        .parent{
          display:grid;
          display:block;
          height:auto;
          grid-template-areas:
          "content1" "content2";
        }
        .menu {grid-area: content1;}{
        color: blue;
        background-color: yellow;
        min-height:150px;   
        }
        .menu2 {grid-area: content2;}{
        color: blue;
        background-color: yellow;
        min-height:150px;       
        }
    }
    @media (max-width: 480px){
        .menu {
        color: green;
        background-color: black;
        display:list-item;
        width: 100%;            
        }
    
        .menu2 {
        color: green;
        background-color: black;
        display:list-item;
        width: 100%;            
        }
      } 
    </style>

 </head>
 <body>
  <div class = "parent">
    <div class = "menu">
    <p>Objeto 1</p>
    </div>
    <div class = "menu">
    <p>Objeto 2</p>
    </div>
    <div class = "menu">
    <p>Objeto 3</p>
    </div>
    <div class = "menu2">
    <p>Objeto 4</p>
    </div>
    <div class = "menu2">
    <p>Objeto 5</p>
    </div>
    <div class = "menu2">
    <p>Objeto 6</p>
    </div>
  </div>
 </body>
 </main>`

Профессор просит студентов использовать только медиа-запросы.

В среднем разрешении два объекта будут отображаться рядом, в двух столбцах, то есть в основном сетка 3x2 (строка x столбец).

Как уже упоминалось выше:

  • Я понятия не имею, почему, но элементы перекрываются и не остаются в определенном месте, как должны. Пробовал использовать шаблон сетки, но как-то это не очень эффективно. Понятия не имею, неправильный ли синтаксис, но, возможно, я что-то упустил.

Я попробовал просто оставить их внутри div, и они также не отображаются в виде столбца, как будто код пропускает эту среднюю часть и просто показывает выстроенное в линию и вертикальное меню.

«Я понятия не имею, неправильный ли синтаксис». Что. по крайней мере, это то, что вы можете узнать сами. Отправьте свой CSS CSS-валидатору

Alohci 06.06.2024 04:11

Кстати, начальная загрузка использует медиа-запросы, как и любая адаптивная структура.

Lelio Faieta 06.06.2024 04:22

Ну я не особо вникал в это Лелио. Я делал это в течение шести месяцев, а затем прекратил. Но спасибо за ваш вклад. И Алохчи прав. Я не рассматривал CSS-валидатор.

Leonardo Matiazzo 06.06.2024 06:25
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
3
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я понятия не имею, почему, но элементы перекрываются и не остаются в определенном месте, как должны.

Поскольку grid-template-areas буквально определяет области, в вашем случае вы определили только две области. Таким образом, 3 предмета пытаются поместиться в одну и ту же область, что приводит к их перекрытию. То, что вам нужно, может быть сетка-шаблон-столбцы.

Вот упрощенная версия вашего подхода с использованием сетки:

.parent {
  display: grid;
}

@media (min-width:769px) {
  /* large screen, flow by column */
  .parent {
    grid-auto-flow: column;
  }
  .menu {
    background-color: green;
  }
}

@media (min-width:481px) and (max-width: 768px) {
  /* medium screen, 2 columns, 3 rows */
  .parent {
    grid-auto-flow: column;
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: repeat(3, auto);
  }

  .menu {
    background-color: yellow;
  }
}

@media (max-width: 480px) {
  /* small screen, flow by row, default grid behavior, no changes needed */
  .menu {
    background-color: blue;
  }
}
<div class = "parent">
  <div class = "menu">
    <p>Objeto 1</p>
  </div>
  <div class = "menu">
    <p>Objeto 2</p>
  </div>
  <div class = "menu">
    <p>Objeto 3</p>
  </div>
  <div class = "menu">
    <p>Objeto 4</p>
  </div>
  <div class = "menu">
    <p>Objeto 5</p>
  </div>
  <div class = "menu">
    <p>Objeto 6</p>
  </div>
</div>

Я попробую, Хао Ву! Потрясающий ответ, думаю, я понимаю, что вы имеете в виду. Большое спасибо, что прояснили ситуацию.

Leonardo Matiazzo 06.06.2024 04:42

Другие вопросы по теме