阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      CSS 媒体查询

      媒体(media)查询在 CSS3 上有介绍:CSS3 @media 查询。

      使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。

      如果浏览器窗口小于 500px, 背景将变为浅蓝色:

      @media only screen and (max-width: 500px) {
          body {
              background-color: lightblue;
          }
      }
      

      添加断点

      在先前的教程中我们使用行和列来制作网页,它是响应式的,但在小屏幕上并不能友好的展示。

      媒体查询可以帮我们解决这个问题。我们可以在设计稿的中间添加断点,不同的断点有不同的效果。

      使用媒体查询在 768px 添加断点:

      当屏幕 (浏览器窗口) 小于 768px, 每一列的宽度是 100%:

      /* For desktop: */
      .col-1 {width: 8.33%;}
      .col-2 {width: 16.66%;}
      .col-3 {width: 25%;}
      .col-4 {width: 33.33%;}
      .col-5 {width: 41.66%;}
      .col-6 {width: 50%;}
      .col-7 {width: 58.33%;}
      .col-8 {width: 66.66%;}
      .col-9 {width: 75%;}
      .col-10 {width: 83.33%;}
      .col-11 {width: 91.66%;}
      .col-12 {width: 100%;}
      
      @media only screen and (max-width: 768px) {
          /* For mobile phones: */
          [class*="col-"] {
              width: 100%;
          }
      }
      

      为移动端优先设计

      移动端优先意味着在设计桌面和其他设备时优先考虑移动端的设计。

      这就意味着我们必须对 CSS 做一些改变。

      我们在屏幕小于 768px 进行样式修改,同样在屏幕宽度大于 768px 时也需要修改样式。以下是移动端优先实例:

      /* 为移动端设计: */
      [class*="col-"] {
          width: 100%;
      }
      @media only screen and (min-width: 768px) {
          /* For desktop: */
          .col-1 {width: 8.33%;}
          .col-2 {width: 16.66%;}
          .col-3 {width: 25%;}
          .col-4 {width: 33.33%;}
          .col-5 {width: 41.66%;}
          .col-6 {width: 50%;}
          .col-7 {width: 58.33%;}
          .col-8 {width: 66.66%;}
          .col-9 {width: 75%;}
          .col-10 {width: 83.33%;}
          .col-11 {width: 91.66%;}
          .col-12 {width: 100%;}
      }
      

      其他断点

      你可以根据自己的需要添加断点。

      我们同样可以为平板设备和移动手机设备设置断点。

      在屏幕为 600px 时添加媒体查询,并设置新的样式(屏幕大于600px但小于768px):

      注意两组类样式是相同的,但名称不同 (col- 和 col-m-):

      /* For mobile phones: */
      [class*="col-"] {
          width: 100%;
      }
      @media only screen and (min-width: 600px) {
          /* For tablets: */
          .col-m-1 {width: 8.33%;}
          .col-m-2 {width: 16.66%;}
          .col-m-3 {width: 25%;}
          .col-m-4 {width: 33.33%;}
          .col-m-5 {width: 41.66%;}
          .col-m-6 {width: 50%;}
          .col-m-7 {width: 58.33%;}
          .col-m-8 {width: 66.66%;}
          .col-m-9 {width: 75%;}
          .col-m-10 {width: 83.33%;}
          .col-m-11 {width: 91.66%;}
          .col-m-12 {width: 100%;}
      }
      @media only screen and (min-width: 768px) {
          /* For desktop: */
          .col-1 {width: 8.33%;}
          .col-2 {width: 16.66%;}
          .col-3 {width: 25%;}
          .col-4 {width: 33.33%;}
          .col-5 {width: 41.66%;}
          .col-6 {width: 50%;}
          .col-7 {width: 58.33%;}
          .col-8 {width: 66.66%;}
          .col-9 {width: 75%;}
          .col-10 {width: 83.33%;}
          .col-11 {width: 91.66%;}
          .col-12 {width: 100%;}
      }
      

      以上代码看起来很多余,但是他可以根据屏幕大小自动设置不同的样式,所以还是非常必要的。

      HTML 实例

      针对桌面设备:

      第一和第三部分跨越 3 列。中间部分跨域 6 列。

      针对平板设备:

      第一跨域 3列,第二部分跨越 9 列,第三部分跨域 12 列:

      <div class="row">
      <div class="col-3 col-m-3">...</div>
      <div class="col-6 col-m-9">...</div>
      <div class="col-3 col-m-12">...</div>
      </div>
      

      方向:横屏/竖屏

      结合CSS媒体查询,可以创建适应不同设备的方向(横屏landscape、竖屏portrait等)的布局。

      语法:

      orientation:portrait | landscape
      
      • portrait:指定输出设备中的页面可见区域高度大于或等于宽度
      • landscape: 除portrait值情况外,都是landscape

      如果是横屏背景将是浅蓝色:

      @media only screen and (orientation: landscape) {
          body {
              background-color: lightblue;
          }
      }
      
      卖前端学习教程

      只需几十元,就能买到培训班的内部教程!开启高薪之路!

      零基础小白阿里P7的教程都有!

      同时长期收购所有培训班的前端教程

      目录
      目录