当前位置: 首页 > Web前端 > HTML

(转)响应式和自适应的区别

时间:2023-04-02 19:41:12 HTML

自适应体验http://m.ctrip.com/html5/响应式体验http://segmentfault.com/整理了几篇自适应和响应式本文已摘编修改,请欣赏:起初,网页设计师会设计具有固定宽度的页面。一开始电脑显示器分辨率的种类不多,因为那时候电脑很少,即使有变化也是800850870880。比如OpenSourceChina的网页定制了固定宽度998,至于为什么是998,请@甜蜜后来随着显示器越来越多,笔记本的普及,这样的页面出现了问题。于是出现了一种新的布局方式宽度自适应布局。我们平时说的自适应布局,多是指宽度自适应布局。在这种布局下,有两种思想流派:PercentageWidthLayoutStreamingLayout题目说的是第一种,width用百分比,text用em,现在很多人开始用rem,也就是所谓的高清解决方案。第二派的布局以iGoogle为代表(已停产)。一开始并没有响应式布局这个词,后来逐渐出现了一个词——渐进增强,新词的出现总是伴随着旧词出现。就像在3G出现之前,没有人把自己的手机称为2G,所以3G和2G这两个词一起出现了(技术上当然是2G技术先出现)。同理,在渐进增强出现之后,也出现了另一个词“优雅降级”。词义可以自行参考wiki和google。我这里只举个例子,gmail和qqmail。两者的宽度都是100%,都是自适应的。但是:qqmail是csshack的完美体现。你几乎可以用任何浏览器看到相同的邮箱。腾讯前端工程师使用各种csshack技术来展示邮箱页面,统一用户体验。而gmail采用的是渐进式增强,你的浏览器越强,你看到的效果越好,用户体验越好。后来大名鼎鼎的谷歌发布了android,互联网大战就从PC转到了手机。还有HTML5标准的发布。手机的屏幕虽然变小了,但是提供的功能却更多了。还记得您使用诺基亚访问QQ的时间吗?我们访问了3g.qq.com。当时我用中兴手机访问wap.qq.com。后来,我用智能手机访问了m.qq.com。有人不禁要问“我真的需要为每个手机设计一个单独的网页吗?”,“我真的需要为手机和电脑设计不同的网页吗?”当然,有很多解决方案。可以看看csszengarden(《Css秘密花园》还是一本很好的书,而且还有网址http://www.csszengarden.com/,值得一读),相信做过的人前端见过这个网站,一个神奇的网站。最终的解决方案赢家是响应式布局。响应式布局广为人知的一个重要原因是twitter开源了bootstrap。谷歌第一次从先驱变成了烈士。从直观的角度来看,响应式和自适应的区别:首先,两者解决问题的方式不同。Adaptive就是解决同一个网页如何在不同尺寸的设备上呈现。手机屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度一般都在1000像素以上(目前主流的宽度是1366×768),有的已经达到2000像素。将相同的内容在不同尺寸的屏幕上呈现出令人满意的效果,并不是一件容易的事。很多网站的解决方案是针对不同的设备提供不同的网页,比如提供手机版或者iPhone/iPad版。这样做保证了效果,但是比较麻烦,而且需要同时维护几个版本,而且如果一个网站有多个入口(入口),会大大增加架构设计的复杂度。因此,早就有人设想是否可以“一次设计,通用应用”,让同一个网页自动适配不同尺寸的屏幕,并根据屏幕尺寸自动调整网页内容大小。屏幕宽度。但无论如何,它们的主要内容和布局都不是。改变。响应性的概念应该包括自适应,它涵盖的内容更多。适配还是暴露了一个问题。如果屏幕太小,即使网页可以根据屏幕大小进行适配,但在小屏幕上看还是会觉得内容过于拥挤。响应性是为了解决这个问题而衍生出来的概念。它可以自动识别屏幕宽度并对网页设计进行相应的调整,布局和显示的内容可能会发生变化。如果下面的网址,屏幕宽度大于1300像素,则6张图片排成一排。如果屏幕宽度在600px和1300px之间,则将6张图像分成两行。如果屏幕宽度在400px和600px之间,导航栏会移动到网页的头部。如果屏幕宽度小于400像素,则将6个图像分成三行。在mediaqueri.es上有更多这样的例子。说了很多,其实大家可能更关心的是如何实现。下面说说实现方法:1、“自适应网页设计”是如何让网页的宽度自动调整的?其实并没有那么难。首先,在网页代码的头部添加一行viewportmeta标签。  viewport是网页默认的宽高,上面这行代码表示网页的宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始尺寸占屏幕面积的100%。所有主流浏览器都支持此设置,包括IE9。对于那些旧浏览器(主要是IE6、7、8),你需要使用css3-mediaqueries.js。  2.尝试少用绝对宽度由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度布局,也不能使用绝对宽度的元素,这一点很重要,具体CSS代码不能指定像素宽度:  width:xxxpx;替换为指定百分比宽度:同时也可以配合css的cal计算宽度  width:xx%;或者  width:auto;3.相对大小的字体不能使用绝对大小(px),只能使用相对大小(em)或高清方案(rem),rem不限于字体大小,也可以使用之前的宽度代替百分比。  body{    font:normal100%Helvetica,Arial,sans-serif;  }上面的代码指定字体大小为页面默认大小的100%,即16像素。  h1{    font-size:1.5em;  }那么h1的大小就是默认大小的1.5倍,即24像素(24/16=1.5)。0.875倍,即14个像素(14/16=0.875)。4.流体网格“流体网格”的意思是每个块的位置是浮动的,而不是固定的。查看流体布局文章了解更多信息。  .main{    float:right;    width:70%;float的好处是,如果宽度太小放不下两个元素,后面的元素会自动滚动到前面元素的底部,水平方向不会溢出,避免水平滚动条的出现。另外,绝对定位(position:absolute)的使用要非常小心。5、选择加载CSS“自适应网页设计”的核心是CSS3引入的MediaQuery模块。意思就是自动检测屏幕的宽度,然后加载对应的CSS文件。  上面的代码也就是说,如果屏幕宽度小于400px(max-device-width:400px),加载tinyScreen.css文件。  如果屏幕宽度在400px和600px之间,则加载smallScreen.css文件。除了加载带有html标签的CSS文件,你还可以在已有的CSS文件中加载它们。  @importurl("tinyScreen.css")screenand(max-device-width:400px);6、在同一个CSS文件中,也可以根据不同的屏幕分辨率CSS规则来选择应用CSS的@media规则。  @mediascreenand(max-device-width:400px){    .column{      float:none;      width:auto;    }    #sidebar{      display:none;    }  }以上代码的意思是如果屏幕宽度小于400像素,列块取消浮动(float:none),自动调整宽度(width:auto),并且不会显示侧边栏块(display:none)。7、自适应图像(流体图像)“自适应网页设计”除了布局和文字之外,还必须实现图像的自动缩放。这只是一行CSS代码:  img{max-width:100%;}这行代码对大多数嵌入网页的视频也是有效的,所以可以写成:  img,object{最大宽度:100%;}老版本的IE不支持max-width,所以只好写成:  img{width:100%;}另外,windows平台在缩放图片时,可能会出现图片失真。这时候可以尝试使用IE的专有命令:  img{-ms-interpolation-mode:bicubic;或者,EthanMarcotte的imgSizer.js。  addLoadEvent(function(){    varimgs=document.getElementById("content").getElementsByTagName("img");    imgSizer.collat??e(imgs);  });不过,有可能的话,最好根据不同的屏幕尺寸加载不同分辨率的图片。有很多方法可以做到这一点,包括服务器端和客户端。转载自:https://my.oschina.net/liu-xu...