什么是响应式网页

 

什么是响应式网页

 2000: 塞班、黑莓,GPRS,2.5G,可以浏览WML网页

 2008: iOS/Linux,3G,Safari,可以浏览HTML网页

  Android/Linux,Chrome,可以浏览HTML网页

 Responsive Web Page 响应式/自适应网页,一个页面,可以在PC、平板、手机下正常/愉快的浏览。编写响应式应该在3方面加以注意:

  (1)采用流式布局

  (2)自适应的图片和文字大小

  (3)CSS3媒体查询技术

 

如何测试响应式网页

  三种测试方法:

  (1)使用真实的物理设备来测试

  优点:测试结果真实可靠

  不足:测试工作量太大

  (2)使用模拟软件来测试

优点:物理设备减少

不足:效率偏低,部分功能无法测试,测试结果有待进一步验证

  (3)使用Chrome自带的设备模拟器来测试

  优点:功能丰富(模拟多种设备、网速、经纬度、加速度....)

不足:测试结果有待进一步验证

 

2010年之前,所有的HTML网页都是为PC编写,iOS中浏览这样的网页,只能把所有的内容缩放到刚刚好可以在手机屏幕中观看——文字、图片缩放的很小近乎无法观看。

iOS最先提出了viewport的概念,宽和高可以指定为任意大,从而可以在一个较小手机屏幕下不经缩放的浏览一个很大的网页——副作用是:用户可能不得不左右滑动屏幕。Android系统后来也采用了此概念。

 

 

7.如何编写响应式网页——重点

  (1)声明viewport元标签——只对iOS和Android

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

避免用户左右滑动屏幕的问题,初始时不进行缩放,且不允许用户缩放

  (2)尺寸和大小不要使用绝对单位(如px),而用相对单位,如%、auto、em

  (3)采用流式布局

  (4)使用自适应/响应式图片

img {

max-width: 100%; /*指定占父元素的百分比,且不能超过自身原始大小,防止无限放大*/

}

  (5)根据当前浏览设备的不同,有选择性的执行不同的CSS代码——CSS3 Media Query——实现响应式网页最最重要的技术!

 

8.CSS3媒体查询技术

  Media:浏览网页的设备,如screen、print、tv、projection、tty、braille.....

  Media Query:CSS3中提供的一门技术,可以自动查询出当前浏览设备的种类、宽高、分辨率、色彩位深、方向(portrait、landscape)等物理特性,有选择性的执行不同的CSS代码。

  具体有两种用法:

  (1)有选择的执行不同的外部CSS文件

<link media="screen and (min-width:768px) and (max-width:992px)" rel="stylesheet" href="xx.css">

  缺陷:不论当前的浏览设备什么类型,所有link的css文件都会被加载,但有可能不会被执行。

  (2)有选择性的执行某个CSS文件中的部分内容

在一个CSS文件中,编写:

@media screen and (min-width:768px) and (max-width:992px) {

body { ... }

.box { ...}

}

 

 

爱卡(深圳)管理有限公司

       分享每一刻精彩

     微信:iCafeYOJOY

    微博:http://weibo.com/iCafeYOJOY

    官网:www.icafe.im

转载于:https://www.cnblogs.com/iCafe/p/5753820.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HttpWebRequest类

HttpWebRequest类与HttpRequest类的区别。 HttpRequest类的对象用于服务器端&#xff0c;获取客户端传来的请求的信息&#xff0c;包括HTTP报文传送过来的所有信息。而HttpWebRequest用于客户端&#xff0c;拼接请求的HTTP报文并发送等。 HttpWebRequest这个类非常强大&#xf…

比较创建几种线程的方式

JDK5.0新增的创建多线程的方式&#xff1a; 新增一&#xff1a; //创建多线程的方式三&#xff1a;callabe;import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;//1.创建一个Callable的实现类 c…

线程的安全问题

解决方法一: 注意:在synchronized中的同步监视器&#xff08;锁&#xff09;只能是唯一的。 方式二&#xff0c;同步方法 方法三&#xff1a; lock() lock锁 public class ThreadTest6 {public static void main(String[] args) {Window w new Window();Thread t1 new Thre…

数据的个人视角:数据可视化的意义

当谈论到数据可视化对个人用户的实用价值时&#xff0c;很多人可能会想到它仅适用于企业或专业领域。然而&#xff0c;数据可视化对个人用户同样具有重要的实用价值。本文将从可视化从业者的角度出发&#xff0c;简单说说数据可视化对个人用户的实用价值。 首先&#xff0c;数…

线程的通信

//线程通信 //线程1 线程2 交替打印1——100 //wait()和notify()方法需要在一个监视器的同步代码块 中或者是同一个同步方法中// wait()&#xff1a;线程从运行状态进入阻塞状态&#xff0c;并且释放锁 // notify():一旦执行此方法就会唤醒被wait的一个线程&#xff0c;如果多个…

线程通信的经典问题:生产者消费者问题

package ThreadTest2; // 线程通信的经典问题&#xff1a;生产者消费者//店员&#xff08;资源&#xff09; class Clerk{private int productCount 0 ;public synchronized void produceProduct() {if(productCount < 100 ) {productCount;System.out.println(Thread.curr…

String类中不同拼接方式

有变量名参与都不是在常量池中了&#xff0c;类似于new

使用JMeter创建数据库(Mysql)测试

我的环境&#xff1a;MySQL&#xff1a;mysql-essential-5.1.51-win32 jdbc驱动&#xff1a;我已经上传到csdn上一个&#xff1a;http://download.csdn.net/source/3451945 JMeter&#xff1a;jmeter-2.4 任意版本都行。 1.首先我们要有一个可以做测试的数据库&#xff0c;当然…

String类与其他数据类型得转换

一&#xff1a;与基本数据类型或者包装类 二、String与char型数组得转换 三、String类与字节数组byte[]之间的转换 输出的是字符中得ASCII码。 getBytes使用的默认得编码集 可以自主设置编码集否则为默认编码集 输出&#xff1a;

字符串类中的StringBuffer,StringBuilder

StringBuffer类的常用方法 &#xff0c; String StringBuffer,StringBuilder的效率

JAVA日期和时间API

JDK8以前&#xff1a; public void test2() { // 构造器1&#xff1a;Date date1 new Date();System.out.println(date1); // date1.toString// 构造器2&#xff1a;创建指定毫秒数的Date对象Date date2 new Date(1631722133700L);System.out.println(date2);} JDK8以后: …

Calender日历类

使用方法&#xff1a; Testpublic void test() { // 调用其静态方法得到一个对象Calendar calendar Calendar.getInstance();System.out.println(calendar.getClass()); // 输出的为 GregorianCalendar类// get() 得到所需的数据 比如这一年的第几天int days calendar.…

JDK8后的日期时间API

Testpublic void test() { // now() 获取当前的时间&#xff0c;日期LocalDate ld LocalDate.now();LocalTime lt LocalTime.now();LocalDateTime ldt LocalDateTime.now();System.out.println(ld);System.out.println(lt);System.out.println(ldt);// of():指定年月日 …