Показать (n) <li>в формате flexbox на основе запроса @media - PullRequest
0 голосов
/ 29 мая 2018

У меня проблемы с отображением и скрытием некоторых элементов <li> на основе медиазапроса.У меня есть элемент <ul>, который отображается как flexbox, содержащий элементы <li>.Каждый соответствующий <li> также отображается как flexbox, содержащий значок и текст.Я хочу, чтобы два <li> элемента (первый и последний) отображались, когда ширина экрана составляет 925 пикселей или меньше.Однако, похоже, это работает только тогда, когда элементы <li> НЕ отображаются в виде флексбоксов.Однако мне нужно, чтобы элементы <li> были flexbox, чтобы я мог просто отформатировать значок и текст.Можно ли как-нибудь показать / скрыть элементы <li> в зависимости от ширины экрана, если элементы <li> отформатированы как flexbox?

У меня есть код в приведенной ниже ссылке, который совпадает скод, показанный ниже в этом посте.https://codepen.io/anon/pen/XYrxmG

Элементы <li>, которые я хочу показать, когда ширина экрана меньше 925 пикселей, обозначены розовым фоном.

     <nav id="navigation">
            <ul id="nav-content">
                <li id="nav-left"></li>
                <li id="op1"><img src="https://via.placeholder.com/30x30"><h2>Option1</h2></li>
                <li id="op2"><img src="https://via.placeholder.com/30x30"><h2>Option2</h2></li>
                <li id="op3"><img src="https://via.placeholder.com/30x30"><h2>Option3</h2></li>
                <li id="op4"><img src="https://via.placeholder.com/30x30"><h2>Option4</h2></li>
                <li id="nav-right"></li>
              </ul>
        </nav>

    * {
      margin: 0px;
      padding: 0px;
      color: black;
    }

    #nav-content {
      display: flex;
      flex-direction: row;
      justify-content: flex-start;
      list-style-type: none;
      border: solid 2px black;
    }

    // Each list element in nav bar
    #nav-content>li {
      // When this display: flex is turned on, my <li> gets formatted correctly
      // but the pink elements stop showing based on media query
      //display: flex;
      align-items: center;
      padding: 10px 20px 10px 20px;
    }

    #nav-content > li:hover {
      background-color: grey;
    }

    #nav-left, #nav-right {
      display: none;
      background-color: pink;
    }

    @media (max-width: 500px) {
      #nav-left,
      #nav-right {
        display: flex;
      }
    }

1 Ответ

0 голосов
/ 29 мая 2018

Кажется, это зависит только от веса селектора:

* {
  margin: 0px;
  padding: 0px;
  color: black;
}

#nav-content {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  list-style-type: none;
  border: solid 2px black;
}

#nav-content > li {
  display: flex;
  align-items: center;
  padding: 10px 20px 10px 20px;
}

#nav-content > li:hover {
  background-color: grey;
}

#nav-content > #nav-left,
#nav-content > #nav-right {
  display: none;
  background-color: pink;
}

@media (max-width: 925px) {
  #nav-content > #nav-left,
  #nav-content > #nav-right {
    display: flex;
  }
}
<nav id="navigation">
      <ul id="nav-content">
        <li id="nav-left"></li>
        <li id="op1"><img src="http://via.placeholder.com/30x30"><h2>Option1</h2></li>
        <li id="op2"><img src="http://via.placeholder.com/30x30"><h2>Option2</h2></li>
        <li id="op3"><img src="http://via.placeholder.com/30x30"><h2>Option3</h2></li>
        <li id="op4"><img src="http://via.placeholder.com/30x30"><h2>Option4</h2></li>
        <li id="nav-right"></li>
      </ul>
</nav>

fix & раздвоенная ручка :

#nav-content > #nav-left,
#nav-content > #nav-right {
  display: none;
  background-color: pink;
}

@media (max-width: 500px) {
  #nav-content > #nav-left,
  #nav-content > #nav-right {
    display: flex;
  }
}
...