显示基于@media查询格式化为flexbox的(n)<li>

时间:2018-05-28 21:43:09

标签: html css flexbox media-queries

我在根据媒体查询显示和隐藏一些<li>项时遇到问题。我有一个<ul>元素,显示为flexbox,包含<li>个元素。每个相应的<li>也显示为flexbox,包含图标和文本。我希望在屏幕宽度为925px或更小时显示两个<li>元素(第一个和最后一个)。但是,当<li>元素未显示为flexbox时,这似乎才有效。但是,我需要将<li>元素作为flexbox,因此我可以简单地格式化图标和文本。如果将<li>元素格式化为flexbox,我是否可以根据屏幕宽度显示/隐藏<li>元素?

我在下面的链接中有代码,这与本文后面的代码相同。 https://codepen.io/anon/pen/XYrxmG

当屏幕宽度小于925px时,我想要显示的<li>元素用粉红色背景表示。

     <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 :(得分:1)

这似乎只是选择者的重量问题:

&#13;
&#13;
* {
  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;
  }
}
&#13;
<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>
&#13;
&#13;
&#13;

修复&amp; forked pen

#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;
  }
}