当前位置:  首页>> 技术小册>> Web响应式布局入门到实战

布局特点:
为了保证在各种屏幕上的不失真,就要根据实际屏幕宽度做等比例换算。

一句话描述:
一套方案,使用不同尺寸、分辨率的视口,都能呈现出较好的效果。

设计思路:
使用%或rem作为单位实现,本节将使用rem来实现。

代码示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>rem布局</title>
  8. <link rel="stylesheet" href="main.css">
  9. </head>
  10. <body>
  11. <div id="div0">
  12. <div id="top">
  13. <img id="logo" src="images/logo.png" alt="">
  14. </div>
  15. <div id="main">
  16. <ul>
  17. <li>
  18. <div><img src="images/ke.png" class="ke" alt=""></div>
  19. <div>码小课,在线技术知识分享平台:www.maxiaoke.com</div>
  20. <div><img src="images/cart.png" class="cart" alt=""></div>
  21. </li>
  22. <li>
  23. <div><img src="images/ke.png" class="ke" alt=""></div>
  24. <div>码小课,在线技术知识分享平台:www.maxiaoke.com</div>
  25. <div><img src="images/cart.png" class="cart" alt=""></div>
  26. </li>
  27. <li>
  28. <div><img src="images/ke.png" class="ke" alt=""></div>
  29. <div>码小课,在线技术知识分享平台:www.maxiaoke.com</div>
  30. <div><img src="images/cart.png" class="cart" alt=""></div>
  31. </li>
  32. <li>
  33. <div><img src="images/ke.png" class="ke" alt=""></div>
  34. <div>码小课,在线技术知识分享平台:www.maxiaoke.com</div>
  35. <div><img src="images/cart.png" class="cart" alt=""></div>
  36. </li>
  37. <li>
  38. <div><img src="images/ke.png" class="ke" alt=""></div>
  39. <div>码小课,在线技术知识分享平台:www.maxiaoke.com</div>
  40. <div><img src="images/cart.png" class="cart" alt=""></div>
  41. </li>
  42. <li>
  43. <div><img src="images/ke.png" class="ke" alt=""></div>
  44. <div>码小课,在线技术知识分享平台:www.maxiaoke.com</div>
  45. <div><img src="images/cart.png" class="cart" alt=""></div>
  46. </li>
  47. <li>
  48. <div><img src="images/ke.png" class="ke" alt=""></div>
  49. <div>码小课,在线技术知识分享平台:www.maxiaoke.com</div>
  50. <div><img src="images/cart.png" class="cart" alt=""></div>
  51. </li>
  52. <li>
  53. <div><img src="images/ke.png" class="ke" alt=""></div>
  54. <div>码小课,在线技术知识分享平台:www.maxiaoke.com</div>
  55. <div><img src="images/cart.png" class="cart" alt=""></div>
  56. </li>
  57. </ul>
  58. </div>
  59. <div id="bottom">
  60. <div>
  61. <img src="images/homepage.png" alt="">
  62. </div>
  63. <div>
  64. <img src="images/cart.png" alt="">
  65. </div>
  66. </div>
  67. </div>
  68. </body>
  69. <script>
  70. /**
  71. * 动态设置根字体大小
  72. */
  73. var c=()=>{
  74. let w=document.documentElement.clientWidth; /* 获取设备的宽度 */
  75. //设置一个默认值,以320的宽度(iphone)来计算20号字体
  76. let defaultWidth = 20*(w/320)
  77. //设置字号
  78. let n= defaultWidth > 40 ? 40 + 'px' : defaultWidth + 'px';
  79. //设置根字体大小
  80. document.documentElement.style.fontSize = n;
  81. }
  82. window.addEventListener("load",c);
  83. window.addEventListener("resize",c);
  84. </script>
  85. </html>

main.css:

  1. *{
  2. margin: 0;
  3. padding: 0;
  4. }
  5. /* 设置基准字体大小 */
  6. html{
  7. font-size:10px;
  8. }
  9. #top,#main,#bottom{
  10. width: 100%;
  11. }
  12. #top{
  13. position: fixed; /* 固定位置 */
  14. top:0;
  15. left:0;
  16. right:0;
  17. height:2rem;
  18. z-index: 9999;
  19. background-color: #f5f5f5;
  20. }
  21. #logo{
  22. width: 4rem;
  23. height:1.5rem;
  24. vertical-align: -webkit-baseline-middle; /* 垂直居中 */
  25. }
  26. #main{
  27. height:auto;
  28. position: absolute;
  29. top:2rem; /* 根据header的高度设置 */
  30. bottom: 2rem; /* 根据bottom的高度设置 */
  31. background-color: #f5f5f5;
  32. }
  33. #main ul{
  34. display: flex;
  35. flex-direction: column;
  36. justify-content: space-between;
  37. font-size:0.5rem;
  38. }
  39. #main ul li{
  40. display: flex;
  41. flex:1 1 3rem;
  42. border-bottom: 1px solid #dcdcdc;
  43. align-items: center;
  44. }
  45. #main ul li div{
  46. margin-left: 0.2rem;
  47. margin-right: 0.5rem;
  48. }
  49. .ke{
  50. width: 3.6rem;
  51. height:2rem;
  52. vertical-align: -webkit-baseline-middle;
  53. }
  54. .cart{
  55. width: 1rem;
  56. height: 1rem;
  57. vertical-align: -webkit-baseline-middle;
  58. }
  59. #bottom{
  60. position: fixed; /* 固定位置 */
  61. bottom:0;
  62. left:0;
  63. right:0;
  64. height:2rem;
  65. z-index: 9999;
  66. background-color: #f5f5f5;
  67. display: flex;
  68. }
  69. #bottom div{
  70. flex: 1 1 auto;
  71. text-align: center;
  72. }
  73. /*设置bottom里的图片*/
  74. #bottom div img{
  75. width:1.5rem;
  76. height:1.5rem;
  77. vertical-align: -webkit-baseline-middle;
  78. }

实现的效果:


该分类下的相关小册推荐: