欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vw+rem+grid布局

程序员文章站 2022-03-03 21:38:07
...

vw+rem+grid布局

  1. <!-- 当前的布局视图,就是当前移动设备浏览器的可视区宽度 -->
  2. <!-- ! 1. 布局视图 = 视觉视图 : width=device-width -->
  3. <!-- initial-scale=1.0: 这种1:1还原视觉视图的布局, 叫: 理想视图 -->
  4. <!-- ! 2. 理想视图 = 视觉视图 : initial-scale=1.0 -->
  5. <!-- ! 目前 主流的 移动端布局方案: rem + vw -->
  6. <style>
  7. * {
  8. padding: 0;
  9. margin: 0;
  10. box-sizing: border-box;
  11. }
  12. html {
  13. /* font-size: 100px; 技巧 */
  14. font-size: calc(100vw / 3.75);
  15. }
  16. body {
  17. /* 将body的font-siz还原为16px */
  18. font-size: 0.16rem;
  19. }
  20. /* 当屏幕宽度小于320px的时候, 字号不要再小了,否则就看不清了 */
  21. @media screen and (max-width: 320px) {
  22. html {
  23. font-size: 85px;
  24. }
  25. }
  26. /* 当屏幕宽度大于640px的时候, 字号不要再放大了 */
  27. @media screen and (min-width: 640px) {
  28. html {
  29. font-size: 170px;
  30. }
  31. }
  32. </style>
  33. <header>
  34. <h3>欢迎访问</h3>
  35. <button>登录</button>
  36. </header>
  37. <aside class="left">
  38. <p>菜单栏</p>
  39. <ol>
  40. <li>菜单1</li>
  41. <li>菜单2</li>
  42. <li>菜单3</li>
  43. <li>菜单4</li>
  44. <li>菜单5</li>
  45. <li>菜单6</li>
  46. <li>菜单7</li>
  47. <li>菜单8</li>
  48. <li>菜单9</li>
  49. </ol>
  50. </aside>
  51. <main>主体</main>
  52. <aside class="right">
  53. <p>广告</p>
  54. <ol>
  55. <li>广告位1</li>
  56. <li>广告位2</li>
  57. <li>广告位3</li>
  58. <li>广告位4</li>
  59. <li>广告位5</li>
  60. <li>广告位6</li>
  61. <li>广告位7</li>
  62. <li>广告位8</li>
  63. <li>广告位9</li>
  64. </ol>
  65. </aside>
  66. <footer>
  67. <p>联系我们</p>
  68. <p>友情链接</p>
  69. <p>备案信息</p>
  70. </footer>
  71. <style>
  72. body {
  73. width: 100vw;
  74. height: 100vh;
  75. /* grid布局 */
  76. display: grid;
  77. /* 设定列个数及列宽 */
  78. grid-template-columns: 1rem minmax(2rem, 1fr) 1rem;
  79. /* 设定行个数及行高 */
  80. grid-template-rows: 0.5rem minmax(calc(100vh - 1rem - 0.2rem), 1fr) 0.5rem;
  81. /* 项目间隙 */
  82. gap: 0.1rem;
  83. }
  84. body * {
  85. border: 1px solid black;
  86. }
  87. header,
  88. footer {
  89. /* 项目横跨3个单元格 */
  90. grid-column: span 3;
  91. }
  92. header {
  93. display: grid;
  94. grid-template-columns: 1rem calc(100vw - 2rem) 1rem;
  95. /* 1. 所有项目在"容器"中的对齐方式 */
  96. /* place-content: 垂直方向 水平方向; */
  97. /* place-content: start start;
  98. place-content: center end;
  99. place-content: center center;
  100. place-content: center; */
  101. /* 2.剩余空间在所在项目之间进行分配 */
  102. /* place-content: space-between space-around;
  103. place-content: space-between space-between;
  104. place-content: space-between; */
  105. place-content: center center;
  106. /* 3. 所有项目在所在的"单元格"中的对齐方式 */
  107. place-items: center;
  108. }
  109. header button {
  110. width: 0.5rem;
  111. /* 指定项目位置,在第3、4条竖线中间,即第3个单元格中 */
  112. grid-column: 3/4;
  113. /* 设置单个项目在单元格中的位置 */
  114. place-self: center start;
  115. }
  116. header h3 {
  117. grid-column: 2/3;
  118. }
  119. .left {
  120. text-align: center;
  121. font-size: 0.1rem;
  122. }
  123. .right {
  124. text-align: center;
  125. font-size: 0.1rem;
  126. }
  127. main {
  128. text-align: center;
  129. }
  130. footer {
  131. display: grid;
  132. /* repeat(3, 1fr) 重复输出 1fr 三次 */
  133. grid-template-columns: repeat(3, 1fr);
  134. /* 所有项目在容器和单元格中全部水平垂直居中了 */
  135. place-content: center center;
  136. place-items: center center;
  137. }
  138. </style>

图示:
vw+rem+grid布局