PC端和移动端自适应问题的快速解决方法

所属分类: 网页制作 / 应用技巧 阅读数: 818
收藏 0 赞 0 分享

做网页时,我们通常需要考虑到不同电脑屏幕尺寸,以及不同手机屏幕大小等问题,解决样式发生改变的情况,那么如何解决呢?现在主要是采用自适应来解决高度,宽度的,以及图片自适应问题,下面就PC端和移动端来总结一下,通常进行自适应高度和宽度,图片时,一般与页面的布局存在关系。

1、最小尺寸分辨率1024*768(传统17寸显示器),则可以采用940px、960px、或者常用的980px作为最小宽度

2、1024*768之后稍大的分辨率就是1280*768了,则可以采用1200px或者1220px作为稍大的网页宽度

3、支持css3、html5的高级浏览器可以利用CSS3 Media Queries让网页在不同分辨率下自动调节布局标签

4、不支持css3、html5的脑残浏览器特别是<=ie8系列则需要用js以及resize事件来控制html的布局标签宽度了

5、宽度自适应需要对每个显示模块进行不同宽度的计算,在做html布局时需要大量的计算与适配。

6、宽度自适应为不同宽度显示器写布局元素时常用的css

下面我们看下,如何用js和css来自适应屏幕的大小。

一:了解高度和宽度的基础

下面用图片来说明:

     

网页可见区域高宽为:document.body.clientHeight||document.body.clientWidth

网页正文的区域高宽为:document.body.scrollHeight||document.body.scrollWidth(包括滚轮的长度)

网页被卷去的上左区域:document.body.scrollTop||document.body.scrollLeft

二: css自适应高度

1.两栏布局,左边固定,右边宽度自适应

XML/HTML Code复制内容到剪贴板
  1. 方法一:   
  2. //html部分   
  3. <div id="left">左边</div>  
  4. <div id="bodyText">正文</div>  
  5. //css部分   
  6. *{margin:0;padding:0}   
  7. #left{float:left;width:200px;background:red;}   
  8. #bodyText{margin-left:200px;background:yellow;   
  9.   
  10. 方法二:   
  11. //html部分   
  12. <div id="left">左边</div>  
  13. <div id="body">  
  14.     <div id="bodyText">正文</div>  
  15. </div>  
  16. //css部分   
  17. #left{float:left;width:200px;background:red;margin-right:-100%;}   
  18. #body{width:100%;float:left;}   
  19. #bodyText{margin-left:200px;background:yellow;}  

 2.三栏布局,两边定宽,中间自适应宽度

XML/HTML Code复制内容到剪贴板
  1. 方法一:   
  2. <div id="left">左边</div>----注意和div的位置有关系   
  3. <div id="right">右边</div>  
  4. <div id="center">中间</div>  
  5. //css部分   
  6. #left{width:200px;background:red;float:left;}   
  7. #center{width:auto;background:blue;}   
  8. #right{width:200px;background:yellow;float:right;}   
  9.   
  10. 方法二:   
  11. html部分:   
  12. <div id="body">  
  13.     <div id="center">中间</div>  
  14. </div>  
  15. <div id="left">左边</div>  
  16. <div id="right">右边</div>  
  17. css部分:   
  18. #body{width:100%;float:left;} //设置浮动和width:100%   
  19. #body #center{background:red;margin-left:200px;margin-right:300px;} //margin-left:100%的使用方法   
  20. #left{width:200px;background:yellow;margin-left:-100%;float:left}   
  21. #right{width:300px;background:blue;margin-left:-300px;float:left}   
  22. -----如果设置为margin-left:-100%,则会跑到body的左边。   
  23. -----如果设置为margin-left:-300px(即right的宽度),则会跑到body的右边  

3.关于最小宽度和最大宽度

这里依然结合布局来看,如下面的代码:自适应宽度,从而改变布局。

XML/HTML Code复制内容到剪贴板
  1. //html部分   
  2. <div id='container'>  
  3.     <div class='one'></div>  
  4.     <div class='two'></div>  
  5.     <div class='three'></div>  
  6.  </div>  
  7.   
  8. //css部分   
  9. #container{width:100%;}   
  10. .one{width:20%;background:red;}   
  11. .one,.two,.three{float:left; height:100px;}   
  12. .two{width:60%;background:yellow;}   
  13. .three{width:20%;background:blue;}   
  14. @media (max-width:800px){--如果浏览器小于800px   
  15.   .one{width:40%;}   
  16.   .two{width:60%}   
  17.   .three{width:100%}   
  18. }   
  19. @media (max-width:400px)--如果浏览器宽度小于400px   
  20. {   
  21.    .one{width:100%}   
  22.    .two{width:100%}   
  23.    .three{width:100%}   
  24.      
  25. }  

理解什么叫最小宽度和最大宽度,最小宽度指为元素设置的最小宽度,到达最小宽度后,缩放文本不会起到任何作用

最大宽度是所有元素所能达到的一个上限,不能再继续往上增加。

三: css处理自适应高度

XML/HTML Code复制内容到剪贴板
  1. //html部分代码   
  2. <div id="fit"></div>  
  3. //css代码   
  4. html,body{margin:0;height:100%;}   
  5. #fit{width:200px;background:yellow;height:100%;border:1px solid red;}   
  6.   
  7. --这里同时给html和body加样式,是为了兼容各大浏览器。   
  8.    IE 处于混杂模式时,body以窗口为高度参照,body设置为100%就可以使得页面和窗口一样高,body里面的嵌套div也可以扩展到窗口高度,   
  9. 这样的话可以使布局适应浏览器窗口大小。窗体 》body》div  (html ,body {overflow:scroll}  一层滚动条)    
  10.      但是当处于标准模式时,body以html标签为高度参照,html标签才以窗口为参照,所以仅仅body 100%,并不能使它的子div100% 占据整个屏幕   
  11. 还要使得 html 100%使得 html获得窗口大小才行。窗体》html》body》div (html ,body {overflow:scroll}  两层滚动条 ,html的滚动条从来不会用到)  

父级随子级高度变化而自适应变化与子级随父级高度变化而变化

XML/HTML Code复制内容到剪贴板
  1. <div id="fj">  
  2.    我是父级   
  3.    <div id="zj1">我是子级1</div>  
  4.    <div id="zj2">我是子级2</div>  
  5. </div>  
  6. //css部分   
  7. #fj{border:4px solid red;}   
  8. #zj1{border:2px solid yellow;}   
  9. #zj2{border:2px solid blue;}----这种情况下,父级高度随着子级div的高度自适应的改变  

如果子div使用了float属性,此时已经脱离标准流,父div不会随内容的高度变化而变化,解决的办法是在浮动的div下面,加一个空div,设置clear属性both

XML/HTML Code复制内容到剪贴板
  1. <div id="fj">  
  2.    我是父级   
  3.    <div id="zj1">我是子级11111111111111111111111111</div>  
  4.    <div id="zj2">我是子级222222222222222222222222222222222222222222   
  5.   222222222222222222222222222</div>  
  6.    <div id="clear" style="clear:both"></div>------如果去掉这句话,则父级div高度,不会随着子级的高度变化而变化   
  7. </div>  
  8. //css部分   
  9. #fj{border:4px solid black;}   
  10. #zj1{border:2px solid yellow;float:left}   
  11. #zj2{border:2px solid blue;float:left}  

高度的自适应的方法还有很多,这里不再列举。像height:auto等等。

四:js处理高度和宽度自适应问题

XML/HTML Code复制内容到剪贴板
  1. <div id="div1" >222222222222222222222</div>  
  2. //js部分   
  3. function setHeight(obj)   
  4. {   
  5.   var temHeight=null;   
  6.   //FF   
  7.   if(window.innerHeight)   
  8.   {   
  9.     temHeight=window.innerHeight;//包括页面高度和滚动条高度   
  10.   }   
  11.   else    
  12.   {   
  13.      temHeight=document.body&&document.body.clientHeight;   
  14.   }   
  15.   if(temHeight>document.body.clientHeight)//页面高度   
  16.   {   
  17.      oDiv.style.height=temHeight+"px";   
  18.   }   
  19.   else   
  20.   {   
  21.     oDiv.style.height=document.body.clientHeight+"px";   
  22.   }   
  23. }   
  24. window.onload=function()   
  25. {   
  26.   var oDiv=document.getElementById("div1");   
  27.   getHeight(oDiv);   
  28. }  

宽度自适应代码:

XML/HTML Code复制内容到剪贴板
  1. function  setWidth(obj)   
  2. {   
  3.      var screenWidth = window.screen.width;       
  4.      var width;   
  5.      var imgURL ;   
  6.      if (screenWidth >= 1440)    
  7.      {   
  8.          width = "1400px";   
  9.          imgURL = "1400.png";//设置不同分辨率下的图片   
  10.      }   
  11.      else if (1024 < screenWidth && screenWidth < 1440)    
  12.      {   
  13.          width = "1200px";   
  14.          imgURL = "1200.png";   
  15.      }    
  16.       else {   
  17.           width = "980px";   
  18.           imgURL = "980.png";   
  19.         }   
  20.        obj.style.width=width ;   
  21.        obj.style.backgroundImage="url(" + imgURL + ")";   
  22.   })  

五:移动端的自适应高度和宽度

移动端的相对要简单些,首先,在网页代码的头部,加入一行viewport标签。

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

 viewport是网页默认的宽度和高度,上面的意思表示,网页的宽度默认等于设备屏幕的宽度,原始缩放比例为1,即网页初始大小占屏幕面积的100%。

1:由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。这一条非常重要。具体说,CSS代码不能指定像素宽度:width:xxx px;只能指定百分比宽度:width: xx%;或者width:auto;

2:一般使用em,尽量少使用px字体

3:使用流动布局

4:自适应网页设计”的核心,就是CSS3引入的media query模块。

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

<link rel="stylesheet" type="text/css"  media="screen and (max-device-width: 400px)" href="style.css" /> -------当屏幕小于400时,就加载style.css这个文件 

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

 @import url("style2.css") screen and (max-device-width: 800px);//当小于800px屏幕时,就加载style2.css文件

6:图片的自动缩放,比较简单。只要一行CSS代码:img{ max-width: 100%;}建议根据不同的屏幕分辨率,加载不同大小像素的图片。 

移动端的自适应,大体上差不多就这么多,主要核心是利用mediaquery,根据不同的屏幕大小,实现不同的布局。代码可看上面的列子。这里不再重复写。

以上这篇PC端和移动端自适应问题的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

sitemesh教程-页面装饰技术原理及应用

Sitemesh是一种页面装饰技术:它通过过滤器(filter)来拦截页面访问,据被访问页面的URL找到合适的装饰模板等等,感兴趣的朋友可以了解下哦
收藏 0 赞 0 分享

浏览器可以注册的事件小结

我们在网页制作中经常会用到浏览器事件,这里简单的整理下方便需要的朋友
收藏 0 赞 0 分享

从image/x-png谈ContentType(s)

今天在做一个文件上传的功能的时候,发现我总是上传不了png的图片。经过调试发现,应该是在ContentType的地方判断失误了。后来百度了一下发现一个有意思的现象,我发现png的图片的ContentType并不是我在注册表中看到的image/png,而是image/x-png
收藏 0 赞 0 分享

窗口中的各种距离/滚动距离的精确计算汇总

平时在项目开发中,没少跟边距,位置,坐标什么的打交道,悲剧的是,如果你对这些东西没有非常清晰的概念,编码的时候会非常痛苦,到处找资料寻求距离的精确计算,接下来本文提供一个示意他,希望对你有帮助
收藏 0 赞 0 分享

web的各种前端打印方法之CSS控制网页打印样式

使用CSS控制打印样式,握刚刚使用时一塌糊涂,根本不知道CSS中的midia的作用是什么,问到别人说导入这个样式,还傻乎乎的不知所措,接下来介绍CSS控制网页打印样式是如何实现的
收藏 0 赞 0 分享

响应式WEB设计学习(1)—判断屏幕尺寸及百分比的使用

现在移动设备越来越普及,用户使用智能手机、pad上网页越来越普遍,但是传统的fix型的页面在移动终端上无法很好的显示。因此,Ethan Marcotte提出一种响应式web设计的概念,响应式web设计的英文为Responsive Web Design,简写为RWD,感兴趣的朋友可
收藏 0 赞 0 分享

响应式WEB设计学习(2)—视频能够做成响应式吗

除了图片以外,还有一种常见的多媒体形式是视频。有时在web设计中,根据需要会在页面中加入视频,视频大小的自适应单靠CSS本身似乎是做不到的,感兴趣的朋友可以详细了解下
收藏 0 赞 0 分享

响应式WEB设计学习(3)—如何改善移动设备网页的性能

究竟是网页中的何种元素拉低了网页在移动设备中加载的速度呢?这些元素应该做何处理以提升页面在移动设备中的整体性能?是否存在一种设计模式可以同时满足移动端及桌面端的页面设计呢?带着这些疑问开始本文之旅吧
收藏 0 赞 0 分享

网页设计必备手册 216网页安全色大全

网页安全色是指在不同硬件环境、不同操作系统和不同浏览器中都能够正常显示的颜色集合(调色板或者色谱),也就是说这些颜色在任何终端用户的显示设备上都是相同的效果
收藏 0 赞 0 分享

网页设计中设计出有层次感的界面的经验介绍

很多网友常说自己的网站为什么色彩上总是有问题,总是看起来没什么精神,没办法吸引人注意。观察了一些网友们设计的网站发现他们在用色上不够大胆,同时也缺乏对色彩层次的理解。
收藏 0 赞 0 分享
查看更多