Изменить направление flexbox на другое разрешение - PullRequest
0 голосов
/ 27 июня 2018

Мой вопрос заключается в том, почему при разрешении ниже 800 пикселей направление Flex не меняется, элементы все еще находятся в одном ряду. То же самое происходит, если я хочу изменить порядок на другом разрешении. Вот HTML и CSS:

body {
  font-weight: bold;
  text-align: center;
  font-size: 16px;
  box-sizing: border-box;
}

main {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}

article,
.aside {
  border: 1px solid black;
}

article {
  width: 50%;
}

.aside {
  width: 24%;
}

@media screen and (max-width: 800px) {
  main {
    flex-direction: column;
  }
  main>* {
    width: 100%;
  }
}
<body>
  <main>
    <article class="main-article">
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. </p>
    </article>
    <aside class="aside aside-1">Aside 1</aside>
    <aside class="aside aside-2">Aside 2</aside>
  </main>
</body>

1 Ответ

0 голосов
/ 27 июня 2018

Направление flex фактически меняется правильно, проблема в том, что у вас есть класс .aside вне медиазапроса и внутри медиазапроса, вы используете * для подстановочного знака. Класс всегда будет иметь приоритет над групповым символом. Таким образом, вы, по сути, получаете .aside предметов на 24% даже при размере менее 800px.

body {
  font-weight: bold;
  text-align: center;
  font-size: 16px;
  box-sizing: border-box;
}

main {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}

article,
.aside {
  border: 1px solid black;
}

article {
  width: 50%;
}

.aside {
  width: 24%;
}

@media screen and (max-width: 800px) {
  main {
    flex-direction: column;
  }
  main > *,
  main > .aside {
    width: 100%;
    border-color: yellow;
  }
}
<body>
  <main>
    <article class="main-article">
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. </p>
    </article>
    <aside class="aside aside-1">Aside 1</aside>
    <aside class="aside aside-2">Aside 2</aside>
  </main>
</body>

Как видите, отступы теперь на всю ширину и в направлении столбца.

...