• 正确理解响应式设计
  • 响应式设计的步骤
  • 响应式设计需要注意的问题
  • 响应式网页布局实现原理第一:正确理解响应式布局

什么是响应式布局?

  响应式网页设计就是一个网站能够兼容多个终端-而不是为每个终端做一个特定的版本。打个比方来说:现在社会有很多响应产品,例如折叠沙发,折叠床等等,当我们需要把沙发放到一个角落的时候,此刻沙发就好比div吧,而角落里的某个地方就好比父元素,由于父元素空间的改变,我们不得不调整div,让它能够依然放在角落里。在项目中你会遇到不同的终端,由于终端分辨率不同,所以你要想让用户体验更好,就必要让你的页面能够兼容多个终端。

  换句话说,根据屏幕分辨率不同,做出相同视觉效果。

响应式设计的步骤

  1.编写非响应式代码

  2.加工成响应式代码
  3.响应式细节处理
  4.完成响应式开发

1.布局及设置meta标签

  当创建一个响应式网站,或者非响应式网站变成响应式的时候,首先要关注元素的布局。我在创建响应式布局的时候习惯先写非响应式布局,页面固定宽度大小,我觉得这个对在座的各位没有任何难度。如果完成了非响应式那么我在去添加媒体查询(Media Query)和响应式代码。这种操作更容易实现响应式特性。

  当你完成当你已经完成了无响应的网站,做的第一件事是在你的 HTML 页面,粘贴下面的代码到和标签之间。这将设置屏幕按1:1的尺寸显示,在 iPhone 和其他智能手机的浏览器提供网站全视图浏览,并禁止用户缩放页面。

  1. <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
  2. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  3. <meta name="HandheldFriendly" content="true">

    user-scalable属性能够解决ipad切换横屏之后触摸才能回到具体尺寸的问题。

 

2.通过媒体查询来设置样式media query

  media query 是响应式设计的核心,它能够和浏览器进行沟通,告诉浏览器页面如何呈现,假如一个终端的分辨率小于980px,那么可以这样写

  1. @media screen and (max-width:980px){
  2. #head { … }
  3. #content { … }
  4. #footer { … }
  5. }这里面的样式会覆盖掉之前所定义的样式。

3.设置多种视图宽度

  假如我们要兼容ipad和iphone视图,我们可以这样设置:

  1. /**ipad**/
  2. @media only screen and (min-width:768px)and(max-width:1024px){}
  3. /**iphone**/
  4. @media only screen and (width:320px)and (width:768px){}

    /**也可以按需导入css文件**/
    <link rel = "stylesheet" href = " " meida ="screen and (min-width:340px) and (max-width:720px)">

4.字体设置

  到目前为止,开发人员用到的字体单位大部分都是像素,虽然像素在普通网站上是Ok的,但是我们仍然需要响应式字体。一个响应式的字体应关联它的父容器的宽度,这样才能适应客户端屏幕。css3引入了新的单位叫做rem,和em类似但对于Html元素,rem更方便使用。rem是相对于根元素的,不要忘记重置根元素字体大小:

  1. html{font-size:100%;}
  2. 完成后,你可以定义响应式字体:
  3. @media (min-width:640px){body{font-size:1rem;}}
  4. @media (min-width:960px){body{font-size:1.2rem;}}
  5. @media (min-width:1200px){body{font-size:1.5rem;}}
  6. 不理解rem的童鞋,在这里给大家推荐一篇写的不错的博客(http://www.cnblogs.com/YYvam1288/p/5123272.html)

5 表格的响应式布局

 

  1. // index.html
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Title</title>
  7. <link rel="stylesheet" type="text/css" href="index.css"/>
  8. <link rel="stylesheet" type="text/css" href="index01.css" media="screen and (max-width:1024px) and (min-width:720px)"/>
  9. <link rel="stylesheet" type="text/css" href="index02.css" media="screen and (max-width:720px)"/>
  10. </head>
  11. <body>
  12. <div class="header">头部</div>
  13. <div class="main clearfix">
  14. <div class="left">左边</div>
  15. <div class="center">中间</div>
  16. <div class="right">右边</div>
  17. </div>
  18. <div class="footer">底部</div>
  19. </body>
  20. </html>
  21.  
  22.  
  23. // index.css
  24. *{
  25. margin:0;
  26. padding:0;
  27. text-align:center;
  28. color:yellow;
  29. }
  30. .header{
  31. width:100%;
  32. height:100px;
  33. background:#ccc;
  34. line-height:100px;
  35. }
  36. .main{
  37. background:green;
  38. width:100%;
  39. }
  40. .clearfix:after{
  41. display:block;
  42. height:0;
  43. content:"";
  44. visibility:hidden;
  45. clear:both;
  46. }
  47. .left,.center,.right{
  48. float:left;
  49. }
  50. .left{
  51. width:20%;
  52. background:#112993;
  53. height:300px;
  54. font-size:50px;
  55. line-height:300px;
  56. }
  57. .center{
  58. width:60%;
  59. background:#ff0;
  60. height:400px;
  61. color:#fff;
  62. font-size:50px;
  63. line-height:400px;
  64. }
  65. .right{
  66. width:20%;
  67. background:#f0f;
  68. height:300px;
  69. font-size:50px;
  70. line-height:300px;
  71. }
  72. .footer{
  73. width:100%;
  74. height:50px;
  75. background:#000;
  76. line-height:50px;
  77. }
  78. //index01.css
  79. .right{
  80. float:none;
  81. width:100%;
  82. background:#f0f;
  83. clear:both;
  84. }
  85. .left{
  86. width:30%;
  87. }
  88. .center{
  89. width:70%;
  90. }
  91. .main{
  92. height:800px;
  93. }
  94. //index02.css
  95. .left,.center,.right{
  96. float:none;
  97. width:100%;
  98. }

表格响应式例子

 

 

 

  

 

 

 

 

效果图

响应式设计需要注意的问题

1.宽度不固定,可以使用百分比

  1. #head{width:100%;}
  2. #content{width:50%;}

 

2.图片处理

  使图片液体化就可以可以实现图片自适应。

  在html页面中的图片,比如文章里插入的图片我们都可以通过css样式max-width来进行控制图片的最大宽度,如:

  1. #wrap img{
  2. max-width:100%;
  3. height:auto;
  4. }
  5. 如此设置后IDwrap内的图片会根据wrap的宽度改变已达到等宽扩充,heightauto的设置是为了保证图片原始的高宽比例,以至于图片不会失真。

  除了img标签的图片外我们经常会遇到背景图片,比如logo为背景图片:

  1. #log a{display:block;
  2. width:100%;
  3. height:40px;
  4. text-indent:55rem;
  5. background-img:url(logo.png);
  6. background-repeat:no-repeat;
  7. background-size:100% 100%;
  8. }
  9. background-sizecss3的新属性,用于设置背景图片的大小,有两个可选值,第一个值用于指定背景图的width,第2个值用于指定背景图的height,如果只指定一个值,那么另一个值默认为auto
  10. background-size:cover; 等比扩展图片来填满元素
  11. background-size:contain; 等比缩小图片来适应元素的尺寸

 

参考文章
  (1)《响应式布局总结》  

  (2)《如何使用rem单位

  (3)《H5页面布局之图片液态化(自适应)处理简述》

响应式布局例子

  1. git html 代码https://github.com/lifenglei/mygit/blob/master/xiang.html
  2. css代码 https://github.com/lifenglei/mygit/blob/master/xiang.css

版权声明:本文为AbnerLc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/AbnerLc/p/11933384.html