【问题标题】:Responsive Layout Using Media Queries使用媒体查询的响应式布局
【发布时间】:2019-12-22 06:52:02
【问题描述】:

我尝试实现我的第一个媒体查询,但我不明白为什么它没有效果。我有 4 列(弹性项目),我试图在 800 像素以下的屏幕上将其减少到 2 列(弹性项目)。

我遵循 w3schools 的示例。

如果有人可以查看我的代码并告诉我缺少什么,我将不胜感激。

https://codepen.io/mrlondon/project/live/DdvONp/

我正在尝试构建我的第一个静态网站。我现在正试图弄清楚如何让它响应。如果不添加更多详细信息,它不会让我发布此内容,但我只想知道此媒体查询有什么问题。

* {
  box-sizing: border-box;
}

@media screen and(max-width:800px) {
  .column {
    flex: 50%;
    padding: 0 1%;
  }
}

body {
  width: 100%;
  margin: 0 auto;
  background-image: url("wallpaper2.jpg");
  background-repeat: repeat;
}

.header {
  width: 100%;
  background: black;
  height: 100px;
  color: white;
}

h1 {
  margin: 0 auto;
  position: relative;
  top: 30px;
  left: 15px;
  font-size: 2em;
  color: #f0c330;
}

ul {
  list-style-type: none;
  float: right;
  margin: auto;
  position: relative;
}

li {
  display: inline-block;
  padding-left: 20px;
  font-size: 1.4em;
}

.lastlist {
  padding-right: 65px;
}

.nav {
  text-decoration: none;
  color: #f0c330;
}

.nav:hover {
  color: white;
}

.wrapper {
  width: 75%;
  background: pink;
  margin: 0 auto;
  height: max-content;
  padding: 2%;
}

.row {
  display: flex;
  flex-wrap: wrap;
}

.column {
  flex: 0 1 25%;
  padding: 0 1%;
}

.gallery {
  width: 100%;
  margin-bottom: 4%;
  max-width: 100%;
}

.column img {
  width: 100%;
  max-width: 100%;
  border-radius: 10px;
  border: solid 2px #f0c330;
  vertical-align: middle;
}
<div class="header">
  <nav>
    <h1>Daniel Savva</h1>
    <ul>
      <li> <a class="nav" href="#">  Home</a> </li>
      <li> <a class="nav" href="#">  Gallery</a> </li>
      <li> <a class="nav" href="#">  About</a> </li>
      <li class="lastlist"> <a class="nav" href="#">  Contact</a> </li>
    </ul>
  </nav>
</div>
<div class="wrapper">

  <div class="row">

    <div class="column">

      <div class="gallery">

        <a target="_blank" href="https://www.youtube.com/watch?v=jySfU10IQu4">
          <img src="picture1.jpg" alt="Picture1">
        </a>
      </div>

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=S-9dxYcH7sg">
          <img src="picture55.jpg" alt="picture55">
        </a>
      </div>

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=jEgX64n3T7g">
          <img src="picture10.jpg" alt="picture10">
        </a>
      </div>
    </div>

    <div class="column">

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=hF-QqKiT1bI">
          <img src="picture2.jpg" alt="picture2">
        </a>
      </div>

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=QUvVdTlA23w">
          <img src="picture77.jpg" alt="picture77">
        </a>
      </div>

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=lVL-zZnD3VU">
          <img src="picture11.jpg" alt="picture11">
        </a>
      </div>
    </div>



    <div class="column">

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=K_9tX4eHztY">
          <img src="picture3.jpg" alt="picture3">
        </a>
      </div>

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=Nu__TzWfpss">
          <img src="picture66.jpg" alt="picture66">
        </a>
      </div>

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=S71_vIMQ0YY">
          <img src="picture12.jpg" alt="picture12">
        </a>
      </div>
    </div>

    <div class="column">

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=K_9tX4eHztY">
          <img src="picture45.jpg" alt="picture45">
        </a>
      </div>

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=Soa3gO7tL-c">
          <img src="picture9.jpg" alt="picture9">
        </a>
      </div>

      <div class="gallery">
        <a target="_blank" href="https://www.youtube.com/watch?v=_FrOQC-zEog">
          <img src="picture13.jpg" alt="picture13">
        </a>
      </div>
    </div>
  </div>

</div>

【问题讨论】:

    标签: css responsive-design media-queries


    【解决方案1】:

    and(max-width-:800px) 之间需要一个空格。

    您还需要将媒体查询放在末尾或增加选择器权重,否则.column {flex: xx} 的另一条规则会覆盖它。

    示例:

    * {
      box-sizing: border-box;
    }
    
    @media screen and (max-width:800px) {
      .row .column {/* increase selector wheight or send me after .column selector */
        flex  :  50%;
        padding: 0 1%;
      }
    }
    
    
    body {
      width: 100%;
      margin: 0 auto;
      background-image: url("wallpaper2.jpg");
      background-repeat: repeat;
    }
    
    .header {
      width: 100%;
      background: black;
      height: 100px;
      color: white;
    }
    
    h1 {
      margin: 0 auto;
      position: relative;
      top: 30px;
      left: 15px;
      font-size: 2em;
      color: #f0c330;
    }
    
    ul {
      list-style-type: none;
      float: right;
      margin: auto;
      position: relative;
    }
    
    li {
      display: inline-block;
      padding-left: 20px;
      font-size: 1.4em;
    }
    
    .lastlist {
      padding-right: 65px;
    }
    
    .nav {
      text-decoration: none;
      color: #f0c330;
    }
    
    .nav:hover {
      color: white;
    }
    
    .wrapper {
      width: 75%;
      background: pink;
      margin: 0 auto;
      height: max-content;
      padding: 2%;
    }
    
    .row {
      display: flex;
      flex-wrap: wrap;
    }
    
    .column {
      flex: 0 1 25%;
      padding: 0 1%;
    }
    
    .gallery {
      width: 100%;
      margin-bottom: 4%;
      max-width: 100%;
    }
    
    .column img {
      width: 100%;
      max-width: 100%;
      border-radius: 10px;
      border: solid 2px #f0c330;
      vertical-align: middle;
    }
    <div class="header">
      <nav>
        <h1>Daniel Savva</h1>
        <ul>
          <li> <a class="nav" href="#">  Home</a> </li>
          <li> <a class="nav" href="#">  Gallery</a> </li>
          <li> <a class="nav" href="#">  About</a> </li>
          <li class="lastlist"> <a class="nav" href="#">  Contact</a> </li>
        </ul>
      </nav>
    </div>
    <div class="wrapper">
    
      <div class="row">
    
        <div class="column">
    
          <div class="gallery">
    
            <a target="_blank" href="https://www.youtube.com/watch?v=jySfU10IQu4">
              <img src="picture1.jpg" alt="Picture1">
            </a>
          </div>
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=S-9dxYcH7sg">
              <img src="picture55.jpg" alt="picture55">
            </a>
          </div>
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=jEgX64n3T7g">
              <img src="picture10.jpg" alt="picture10">
            </a>
          </div>
        </div>
    
        <div class="column">
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=hF-QqKiT1bI">
              <img src="picture2.jpg" alt="picture2">
            </a>
          </div>
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=QUvVdTlA23w">
              <img src="picture77.jpg" alt="picture77">
            </a>
          </div>
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=lVL-zZnD3VU">
              <img src="picture11.jpg" alt="picture11">
            </a>
          </div>
        </div>
    
    
    
        <div class="column">
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=K_9tX4eHztY">
              <img src="picture3.jpg" alt="picture3">
            </a>
          </div>
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=Nu__TzWfpss">
              <img src="picture66.jpg" alt="picture66">
            </a>
          </div>
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=S71_vIMQ0YY">
              <img src="picture12.jpg" alt="picture12">
            </a>
          </div>
        </div>
    
        <div class="column">
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=K_9tX4eHztY">
              <img src="picture45.jpg" alt="picture45">
            </a>
          </div>
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=Soa3gO7tL-c">
              <img src="picture9.jpg" alt="picture9">
            </a>
          </div>
    
          <div class="gallery">
            <a target="_blank" href="https://www.youtube.com/watch?v=_FrOQC-zEog">
              <img src="picture13.jpg" alt="picture13">
            </a>
          </div>
        </div>
      </div>
    
    </div>

    【讨论】:

      【解决方案2】:

      将元标记添加到您的标题

      <meta content="width=device-width, initial-scale=1" name="viewport" />
      

      【讨论】:

        【解决方案3】:

        如果我正确理解您的问题,您只需添加这样的媒体查询(其中的max-width 值应根据您的实际要求进行调整):

        @media screen and (max-width: 600px) {
          .column {
            flex: 0 1 50%;
            padding: 0 1%;
          }
        }
        

        它将.column 的宽度设置为 50%(而不是 25%),这会导致 600 像素或更小的屏幕采用两列布局,而不是四列。

        * {
          box-sizing: border-box;
        }
        
        @media screen and(max-width:800px) {
          .column {
            flex: 50%;
            padding: 0 1%;
          }
        }
        
        body {
          width: 100%;
          margin: 0 auto;
          background-image: url("wallpaper2.jpg");
          background-repeat: repeat;
        }
        
        .header {
          width: 100%;
          background: black;
          height: 100px;
          color: white;
        }
        
        h1 {
          margin: 0 auto;
          position: relative;
          top: 30px;
          left: 15px;
          font-size: 2em;
          color: #f0c330;
        }
        
        ul {
          list-style-type: none;
          float: right;
          margin: auto;
          position: relative;
        }
        
        li {
          display: inline-block;
          padding-left: 20px;
          font-size: 1.4em;
        }
        
        .lastlist {
          padding-right: 65px;
        }
        
        .nav {
          text-decoration: none;
          color: #f0c330;
        }
        
        .nav:hover {
          color: white;
        }
        
        .wrapper {
          width: 75%;
          background: pink;
          margin: 0 auto;
          height: max-content;
          padding: 2%;
        }
        
        .row {
          display: flex;
          flex-wrap: wrap;
        }
        
        .column {
          flex: 0 1 25%;
          padding: 0 1%;
        }
        
        .gallery {
          width: 100%;
          margin-bottom: 4%;
          max-width: 100%;
        }
        
        .column img {
          width: 100%;
          max-width: 100%;
          border-radius: 10px;
          border: solid 2px #f0c330;
          vertical-align: middle;
        }
        
        @media screen and (max-width: 600px) {
          .column {
            flex: 0 1 50%;
            padding: 0 1%;
          }
        }
        <div class="header">
          <nav>
            <h1>Daniel Savva</h1>
            <ul>
              <li> <a class="nav" href="#">  Home</a> </li>
              <li> <a class="nav" href="#">  Gallery</a> </li>
              <li> <a class="nav" href="#">  About</a> </li>
              <li class="lastlist"> <a class="nav" href="#">  Contact</a> </li>
            </ul>
          </nav>
        </div>
        <div class="wrapper">
        
          <div class="row">
        
            <div class="column">
        
              <div class="gallery">
        
                <a target="_blank" href="https://www.youtube.com/watch?v=jySfU10IQu4">
                  <img src="picture1.jpg" alt="Picture1">
                </a>
              </div>
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=S-9dxYcH7sg">
                  <img src="picture55.jpg" alt="picture55">
                </a>
              </div>
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=jEgX64n3T7g">
                  <img src="picture10.jpg" alt="picture10">
                </a>
              </div>
            </div>
        
            <div class="column">
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=hF-QqKiT1bI">
                  <img src="picture2.jpg" alt="picture2">
                </a>
              </div>
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=QUvVdTlA23w">
                  <img src="picture77.jpg" alt="picture77">
                </a>
              </div>
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=lVL-zZnD3VU">
                  <img src="picture11.jpg" alt="picture11">
                </a>
              </div>
            </div>
        
        
        
            <div class="column">
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=K_9tX4eHztY">
                  <img src="picture3.jpg" alt="picture3">
                </a>
              </div>
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=Nu__TzWfpss">
                  <img src="picture66.jpg" alt="picture66">
                </a>
              </div>
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=S71_vIMQ0YY">
                  <img src="picture12.jpg" alt="picture12">
                </a>
              </div>
            </div>
        
            <div class="column">
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=K_9tX4eHztY">
                  <img src="picture45.jpg" alt="picture45">
                </a>
              </div>
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=Soa3gO7tL-c">
                  <img src="picture9.jpg" alt="picture9">
                </a>
              </div>
        
              <div class="gallery">
                <a target="_blank" href="https://www.youtube.com/watch?v=_FrOQC-zEog">
                  <img src="picture13.jpg" alt="picture13">
                </a>
              </div>
            </div>
          </div>
        
        </div>

        【讨论】:

          猜你喜欢
          • 2020-10-16
          • 2018-09-13
          • 1970-01-01
          • 2012-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-08
          相关资源
          最近更新 更多