千家信息网

如何解决PC端和移动端自适应问题

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍了如何解决PC端和移动端自适应问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。做网页时,我们通常需要考虑到不同电脑屏
千家信息网最后更新 2025年01月20日如何解决PC端和移动端自适应问题

这篇文章主要介绍了如何解决PC端和移动端自适应问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

做网页时,我们通常需要考虑到不同电脑屏幕尺寸,以及不同手机屏幕大小等问题,解决样式发生改变的情况,那么如何解决呢?现在主要是采用自适应来解决高度,宽度的,以及图片自适应问题,下面就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.两栏布局,左边固定,右边宽度自适应

  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. //html部分

  11. <div id="left">左边div>

  12. <div id="body">

  13. <div id="bodyText">正文div>

  14. div>

  15. //css部分

  16. #left{float:left;width:200px;background:red;margin-right:-100%;}

  17. #body{width:100%;float:left;}

  18. #bodyText{margin-left:200px;background:yellow;}

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

  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. html部分:

  11. <div id="body">

  12. <div id="center">中间div>

  13. div>

  14. <div id="left">左边div>

  15. <div id="right">右边div>

  16. css部分:

  17. #body{width:100%;float:left;} //设置浮动和width:100%

  18. #body #center{background:red;margin-left:200px;margin-right:300px;} //margin-left:100%的使用方法

  19. #left{width:200px;background:yellow;margin-left:-100%;float:left}

  20. #right{width:300px;background:blue;margin-left:-300px;float:left}

  21. -----如果设置为margin-left:-100%,则会跑到body的左边。

  22. -----如果设置为margin-left:-300px(即right的宽度),则会跑到body的右边

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

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

  1. //html部分

  2. <div id='container'>

  3. <div class='one'>div>

  4. <div class='two'>div>

  5. <div class='three'>div>

  6. div>

  7. //css部分

  8. #container{width:100%;}

  9. .one{width:20%;background:red;}

  10. .one,.two,.three{float:left; height:100px;}

  11. .two{width:60%;background:yellow;}

  12. .three{width:20%;background:blue;}

  13. @media (max-width:800px){--如果浏览器小于800px

  14. .one{width:40%;}

  15. .two{width:60%}

  16. .three{width:100%}

  17. }

  18. @media (max-width:400px)--如果浏览器宽度小于400px

  19. {

  20. .one{width:100%}

  21. .two{width:100%}

  22. .three{width:100%}

  23. }

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

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

三: css处理自适应高度

  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. --这里同时给html和body加样式,是为了兼容各大浏览器。

  7. IE 处于混杂模式时,body以窗口为高度参照,body设置为100%就可以使得页面和窗口一样高,body里面的嵌套div也可以扩展到窗口高度,

  8. 这样的话可以使布局适应浏览器窗口大小。窗体 》body》div (html ,body {overflow:scroll} 一层滚动条)

  9. 但是当处于标准模式时,body以html标签为高度参照,html标签才以窗口为参照,所以仅仅body 100%,并不能使它的子div100% 占据整个屏幕

  10. 还要使得 html 100%使得 html获得窗口大小才行。窗体》html》body》div (html ,body {overflow:scroll} 两层滚动条 ,html的滚动条从来不会用到)

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

  1. <div id="fj">

  2. 我是父级

  3. <div id="zj1">我是子级1div>

  4. <div id="zj2">我是子级2div>

  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

  1. <div id="fj">

  2. 我是父级

  3. <div id="zj1">我是子级11111111111111111111111111div>

  4. <div id="zj2">我是子级222222222222222222222222222222222222222222

  5. 222222222222222222222222222div>

  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处理高度和宽度自适应问题

  1. <div id="div1" >222222222222222222222div>

  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. }

宽度自适应代码:

  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标签。

自动探测屏幕宽度,然后加载相应的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端和移动端自适应问题"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0