【慕课网】六个案例学会响应式布局

警告
本文最后更新于 2020-11-22,文中内容可能已过时。

讲师:大谷 课程:https://www.imooc.com/learn/1285

  • 课程安排

    • CSS 中媒体查询的作用和使用方法

    • flex 弹性盒子的用法

    • rem 的作用和使用方法

    • 响应式布局、弹性布局等六个课程案例

概念:为不同尺寸的屏幕设定不同的 CSS 样式

属性名称作用
width、height浏览器可视宽度、高度
device-width设备屏幕的宽度
device-height设备屏幕的高度
<style media="(min-device-width:100px) and (max-device-width:300px)">
  #div0 {
    background-color: red;
  }
</style>
<link href="css/css-1.css" rel="stylesheet" media="(min-device-width:100px) and (max-device-width:300px)" />
@media (min-device-width: 400px) and (max-device-width: 500px) {
  #div0 {
    background-color: blue;
  }
}

概念:FlexiableBox 即是弹性盒子,用来进行弹性布局,可以配合 rem 处理尺寸的适配问题

  • 概念

    指相对于根元素的字体大小的单位

  • 区别

    与 em 区别,em 是相对于父元素的字体大小的单位

  • 案例

    /* 初始化根字体相当于设置 html{font-size:} */
    var c = () => {
      let w = document.documentElement.clientWidth; /* 获取设备的宽度*/
      let n =
        20 * (w / 320) > 40
          ? 40 + "px"
          : 20(w / 320) +
            "px"; /* 假设基准字体大小为20px;基准屏幕宽度为320px;在各种尺寸里字体大小不大于40(这是常识) */
      document.documentElement.style.fontSize = n;
    };
    window.addEventListener("load", c);
    window.addEventListener("resize", c);
    
  • 布局特点

    不同设备对应不同的 html;局部自适应即不同的设备用不同的页面或局部伸缩

  • 设计思路

    判断设备的类型或控制局部的变化

<script type="text/javascript">
  var redirect=()=>{
    let userAgent = navigator.userAgent.toLowerCase();
    //正则表达式,判断设备类型
    let device = /ipad|iphone|midp|rv:1.2.3.4|ucweb|android|window ce|window mobile/;
    if(device.test(userAgent)){
      //跳转移动端页面
      window.location.href="move.html";
    }else{
      //跳转PC端页面
      window.location.href="pc.html";
    }
  }
  redirect()
</script>
  • 布局特点

    确保一个页面在所有终端上,都能显示出令人满意的效果(重 CSS)

  • 设计思路

    使用%或 rem 作为单位,此处采用%为单位

  • 案例

    一定要加入的一句

    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0" />
    

    width 决定宽度;initial-scale 控制在默认情况下显示原始尺寸;user-scalable 代表是否允许缩放,设置为 0 表示不使用浏览器自身是缩放

  • 布局特点

    为了保证在各种屏幕上的不失真,就要根据实际屏幕宽度做等比例换算,即一套方案,使不同尺寸、分辨率的视口,都能呈现出较好的效果。

  • 设计思路

    使用%或 rem 作为单位,此处采用 rem 为单位