响应式网页设计

响应式网页设计(Responsive Web design)

1、什么叫响应式网页设计
    可以智能地根据用户行为以及使用的设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相对应的布局。

2、设备检测
    现在的市面上终端设备种类繁多,有PC、iPod、iPhone、Android、 BlackBerry Windows Phone 等等
        那么开发人员 如何检测这些设备?
            根据http协议,每台设备的浏览器发送http请求时,请求头都包含一个“user-agent”字段,该字段包含当前设备信息,浏览器内核信息,所使用的操作系统等信息。那么我们就可以根据这些信息来判断设备种类。

      在前端页面可以通过js代码来获取"user-agent"信息
           js: navigator.userAgent
      在后台可以通过request对象的“ user-agent”字段来获取

      下面介绍一个非常好用的设备检测的前端js库:device.js 下载地址: https://github.com/matthewhudson/device.js  
        device.js库的简单用法:
        首先在页面中引入下载的device.js库:<script src="device.js"></script>
        然后在页面的script脚本中加入判断代码:
                device.mobile() 判断设备是否是手机,返回一个boolean值
               device.ios() 判断是否是IOS设备
               device.android() 判断是否是安卓设备
                device.desktop() 判断是否是电脑
            更多设备的检测方法,请参照给出的github上的下载地址。

3、根据屏幕宽度,更换样式表   
    1)js获取页面宽度和高度
            document.documentElement.clientWidth(网页可见区域宽)
            document.documentElement.clientHeight(网页可见区域高)
    2)绑定页面大小改变事件
            window.onresize = function(){}

实验:
      1、编写两个css文件,文件1.css内容: body {background-color: orange;}, 文件2.css内容: body {background-color: green;}
      2、编写一个测试页面:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <link id="stylelink" rel="stylesheet" type="text/css" href="1.css">
 <title></title>
</head>
<body>
 <script type="text/javascript">
  change();
  window.onresize = function() {
   change();
  };
  function change() {
   var width = document.documentElement.clientWidth;
   var styleLink = document.getElementById('stylelink');
//页面宽度大于600
   if (width > 600) {
    styleLink.href = '1.css';
   }
//页面宽度小于600的样式
   else {
    styleLink.href = '2.css';
   }
  }
 </script>
</body>
</html>

4、视口(viewport)

    当我们的浏览器在窗口最大化的时候,此时屏幕的宽度,就是我们桌面的分辨率。这个规则仅仅适用于PC!
    我们试图在iPhone中输出屏幕宽度,你会发现屏幕宽度是980!居然和PC屏幕差不多大!怎么可能?

   viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。苹果主导的这些手机厂商,为了使用户获得完整web体验(就是让用户在手机屏幕上,也能够看见完整的PC网页),大部分设备都会欺骗浏览器返回一个数值较大的“视口”(viewport),告诉浏览器,别以为我身子小,但是我想以980px宽度来显示这个页面。带来的后果就是浏览器会出现横向滚动条或页面文字图片变的很小,因为移动设备的浏览器可视区域的宽度是比这个默认的viewport的宽度要小的。
    默认视口大小对于我们实现响应式是很不方便的。980太大了,不符合我们心中的期待。我们心中认为手机屏幕尺寸应该小300~400之间。
    为了在移动设备上能够很好的显示网页效果,需要约束视口宽度。    
    约束视口宽度:
        <meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no" name="viewport" id="viewport" />
        width=device-width  → 命令视口的宽度,变为设备的宽(以1024*768屏幕为标准。iPhone等手机通常为320~380之间不等)
         initial-scale=1.0 → 命令视口默认的缩放等级为1
        minimum-scale=1.0 → 命令视口最小缩放等级为1
        maximum-scale=1.0,  → 命令视口最大缩放等级为1
        user-scalable=no → 不允许用户缩放页面
    加上了meta视口约束标记之后,iPhone的视口宽度就是320px。
    所有的手机响应式界面,都要记得加上meta viewport视口约束标记!!!

5、CSS3中媒体查询,更换样式表

   在页面添加以下两行代码:
    <link rel="stylesheet" href="1.css" type="text/css" media="(min-width:600px)">  
     <link rel="stylesheet" href="2.css" type="text/css" media="(max-width:599px)">  
    上面代码没写一句JS,就能让页面能够根据宽度来更换样式表了。
    这种方法就是用CSS3媒体查询! media属性就是媒体查询的属性。
    min-width:600px  用这个样式表的条件,就是屏幕的最小尺寸为600px。大于等于600px的时候,用这个样式表!
    max-width:599px  用这个样式表的条件,就是屏幕的最大尺寸为599px。小于等于599px的时候,用这个样式表!

 第二种方式:通过内嵌式 媒体查询
 <style type="text/css">
  @media (min-width:  600px){
        body {background-color: orange;}
   }

  @media (max-width:  599px){
    body {
         background-color: green;
    }
  }
 </style>

媒体查询的兼容性:IE9开始兼容的! JavaScript检测宽度更换样式表,是IE6也兼容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值