自适应网页设计(Responsive Web Design)



mediaqueri.es上面有更多这样的例子

二、允许网页宽度自动调整

"自适应网页设计"到底是怎么做到的?其实并不难。

首先,在网页代码的头部,加入一行viewport元标签

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

viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。

所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js

<!--[if lt IE 9]>
    <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
  <![endif]-->

三、不使用绝对宽度

由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。这一条非常重要。

具体说,CSS代码不能指定像素宽度:width:xxx px;只能指定百分比宽度:width: xx%;或者width:auto;

四、相对大小的字体

字体也不能使用绝对大小(px),而只能使用相对大小(em)。

body {
    font: normal 100% Helvetica, Arial, sans-serif;
  }

上面的代码指定,字体大小是页面默认大小的100%,即16像素。

h1 {
    font-size: 1.5em;
  }

然后,h1的大小是默认大小的1.5倍,即24像素(24/16=1.5)。

small {
    font-size: 0.875em;
  }

small元素的大小是默认大小的0.875倍,即14像素(14/16=0.875)。

五、流动布局(fluid grid)

"流动布局"的含义是,各个区块的位置都是浮动的,不是固定不变的。

.main {
    float: right;
    width: 70%;
  }

  .leftBar {
    float: left;
    width: 25%;
  }

float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现。

另外,绝对定位(position: absolute)的使用,也要非常小心。

六、选择加载CSS

"自适应网页设计"的核心,就是CSS3引入的Media Query模块。

它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。

<link rel="stylesheet" type="text/css"
    media="screen and (max-device-width: 400px)"
    href="tinyScreen.css" />

上面的代码意思是,如果屏幕宽度小于400像素(max-device-width: 400px),就加载tinyScreen.css文件。

 <link rel="stylesheet" type="text/css"
    media="screen and (min-width: 400px) and (max-device-width: 600px)"
    href="smallScreen.css" />

如果屏幕宽度在400像素到600像素之间,则加载smallScreen.css文件。

除了用html标签加载CSS文件,还可以在现有CSS文件中加载

 @import url("tinyScreen.css") screen and (max-device-width: 400px);

七、CSS的@media规则

同一个CSS文件中,也可以根据不同的屏幕分辨率,选择应用不同的CSS规则。

@media screen and (max-device-width: 400px) {

    .column {
      float: none;
      width:auto;
    }

    #sidebar {
      display:none;
    }

  }

上面的代码意思是,如果屏幕宽度小于400像素,则column块取消浮动(float:none)、宽度自动调节(width:auto),sidebar块不显示(display:none)。

八、图片的自适应(fluid image)

除了布局和文本,"自适应网页设计"还必须实现图片的自动缩放

这只要一行CSS代码:img { max-width: 100%;}

这行代码对于大多数嵌入网页的视频也有效,所以可以写成:img, object { max-width: 100%;}

老版本的IE不支持max-width,所以只好写成:img { width: 100%; }

此外,windows平台缩放图片时,可能出现图像失真现象。这时,可以尝试使用IE的专有命令:img { -ms-interpolation-mode: bicubic; }

或者,Ethan Marcotte的imgSizer.js

addLoadEvent(function() {

    var imgs = document.getElementById("content").getElementsByTagName("img");

    imgSizer.collate(imgs);

  });

不过,有条件的话,最好还是根据不同大小的屏幕,加载不同分辨率的图片。有很多方法可以做到这一条,服务器端和客户端都可以实现。

http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html

www.responsive8.com

http://www.statscrop.com/www/responsive8.com

http://www.alistapart.com/articles/responsive-web-design/


  打开HTML5的技术网站,满屏的“5个推荐的JavaScript框架”、“10个移动应用框架”,全都是你妹的框架,

但是,你知道这些框架是干毛用的吗?来吧,我们来梳理一下吧

 

  目前HTML5涉及的框架大致可以分成以下几类:

  1、跨平台开发框架:PhoneGap 、 Titanium、 Trigger.IO(商业)

这类框架是向web提供底层硬件的接口,让开发人员可以用WEB的技术开发出Native APP。

 

  2、UI框架:jQuery Mobile、 Sencha Touch、 jqMobi

这类框架提供“控件”:布局、按钮。。。。。。

  3、MVC框架:Backbone.js、 Spine.js、 Ember.js

这类框架提供在javascript端上Model、View分离的技术,因为在one page的情况下,javascript

控制的逻辑越来越复杂,需要做这样的分离。

  4、依赖与加载框架:Require.js、 Sea.js

当我们要写一个稍大型的javascript应用的时候,必然会面对不同JS文件间的引用,JS的同步、异步

加载等需求,这种框架就是帮我们解决这样的问题的。

  好,下面我们挑其中的一些框架来讲一讲。

 

 

  PhoneGap

http://phonegap.com/

 

  • 开源
  • 编写一次,可编译到IOS、Andriod、Win Phone。。。
  • 支持GPS、摄像头、文件系统。。。等系统接口

 

 

  jQuery Mobile

http://jquerymobile.com

如果你要开发一款接近原生UI的应用,那采用一款UI框架会节省你很多的时间,jQuery Mobile就是

这样的一个UI框架。

 

  • 跟jQuery没有绝对关系,你可以选用其他的DOM选择器
  • 社区很活跃,已经适用于实际开发
  • 虽然运行效率不断提升,但是目前还是有点慢,特别是用在PhoneGap上


  Backbone.js

Backbone.js是一款用在javascript上的MVC框架,你可以类比成Ruby on Rails、Struts等Server端的MVC框架,

当然,在MVC的模式实现程度上可能有一定的差别。

 

  •  一款小型、流行的用于编写大型HTML5应用的MVC框架
  • 他们在用backbone:LinkIn,Soundcloud,Basecamp,Codiqa

 

 

  上图是Backbone的MVC架构图,学习MVC的时候,我们应该都会接触到一个技术:模板引擎,因为需要把Model的数据表现到View中,

需要模板引擎这种粘合剂去把两者粘合起来。Mustache就是这样一个模板解释引擎

 

Mustache

 

  • 支撑广泛的语言种类
  • 简单,但是很强大
  • 支持循环
  • 你可以使用underscore.js模板,但是不够强大

 

 

Require.js

 

  • 把JS库模块化
  • 大型项目必备
  • 支持异步加载-加快加载速度

  • 支持把多文件压缩到一个文件中

  Require.js + Tempalte

  Require.js支持加载text文件,因此,可以用来加载模板文件
Js代码 复制代码  收藏代码
  1. define([“backbone”,“underscore”,“jquery”,“text!listview.html”],  
  2. function(Backbone,_,$,listViewTemplate){…  
  3. Mustache.render(listViewTemplate,this.model.toJSON())…  
 


总结

  框架满天飞,在框架大海中,捞出你需要的框架,DRY(Dont Repeat Yourself)

d e f i n e ( [ b a c k b o n e , u n d e r s c o r e , j q u e r y , t e x t ! l i s t v i e w . h t m l ] , f u n c t i o n ( B a c k b o n e , _ , $ , l i s t V i e w T e m p l a t e ) { M u s t a c h e . r e n d e r ( l i s t V i e w T e m p l a t e , t h i s . m o d e l . t o J S O N ( ) )
d e f i n e ( [ b a c k b o n e , u n d e r s c o r e , j q u e r y , t e x t ! l i s t v i e w . h t m l ] , f u n c t i o n ( B a c k b o n e , _ , $ , l i s t V i e w T e m p l a t e ) { M u s t a c h e . r e n d e r ( l i s t V i e w T e m p l a t e , t h i s . m o d e l . t o J S O N ( ) )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于响应式设计的H5网页自适应屏幕大小的完整代码示例: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Responsive Web Design Example</title> <style> /* 定义网页的基本样式 */ body { font-family: Arial, sans-serif; background-color: #f2f2f2; margin: 0; } /* 定义网页的主要内容区域 */ .container { max-width: 1200px; margin: 0 auto; padding: 20px; background-color: #ffffff; box-shadow: 0 0 10px rgba(0,0,0,0.1); } /* 定义网页的标题样式 */ h1 { font-size: 36px; margin: 0 0 20px 0; text-align: center; } /* 定义网页的图片样式 */ img { max-width: 100%; height: auto; display: block; margin: 0 auto; } /* 定义网页的响应式样式 */ @media screen and (max-width: 768px) { /* 当屏幕宽度小于等于768px时,将网页的内容区域最大宽度设为100% */ .container { max-width: 100%; } /* 当屏幕宽度小于等于768px时,将网页的标题字体大小设为24px */ h1 { font-size: 24px; } } </style> </head> <body> <div class="container"> <h1>Responsive Web Design Example</h1> <img src="https://via.placeholder.com/1200x600" alt="Responsive Web Design Example"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla tristique neque ac nisi maximus, id venenatis lectus sodales. Sed auctor, arcu in egestas commodo, mauris odio semper orci, at cursus felis massa at ex. Etiam euismod vehicula tortor, vel pharetra sem consequat vitae. Duis vestibulum, neque at viverra volutpat, tortor est suscipit est, sed ultrices mi tellus non quam. Duis malesuada finibus lorem, nec gravida diam malesuada vel. Sed feugiat egestas leo, vitae faucibus mauris cursus vel. Integer tincidunt, purus eu vestibulum dignissim, turpis lacus aliquet neque, auctor iaculis elit nulla eu dolor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce auctor metus et dolor finibus, eget vestibulum nulla rutrum. Nulla facilisi.</p> </div> </body> </html> ``` 在上述代码中,我们使用了`@media`规则来定义网页的响应式样式,当屏幕宽度小于等于768px时,将网页的内容区域最大宽度设为100%,将网页的标题字体大小设为24px。这样,我们就可以在不同的设备和屏幕大小下呈现出更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值