当前位置:Gxlcms > html代码 > CSS布局终极方案之改进圣杯布局(兼容IE6+,现代浏览器)_html/css_WEB-ITnose

CSS布局终极方案之改进圣杯布局(兼容IE6+,现代浏览器)_html/css_WEB-ITnose

时间:2021-07-01 10:21:17 帮助过:33人阅读

CSS兼容所有浏览器(IE6+,现代浏览器)的终极布局方案之 -- 改进版圣杯布局

改进思想:

通过对主内容区main增加一个额外包裹层div,将原来在父节点上的 padding-left|right 设置转移到包裹层上使用 margin-left|right 替代,达到更加灵活的布局设置。

原始圣杯布局实现:

同样的效果:

CSS 和 DOM 代码如下:

  1. <meta charset="utf-8">
  2. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  3. <title>改进版圣杯布局</title>
  4. <style type="text/css">
  5. body {background-color: #ffffff; font-size:14px;}
  6. #hd, #ft {padding:20px 3px; background-color: #cccccc; text-align: center;}
  7. .bd-lft, .bd-rgt, .bd-3-lr, .bd-3-ll, .bd-3-rr {margin:10px 0; }
  8. .main {background-color:#ececec;}
  9. .main-wrap {background-color: #03a9f4; color:#ffffff; min-width:200px;}
  10. .aside, .aside-1, .aside-2 {background-color: #00bcd4; color:#ffffff;}
  11. p {margin:0; padding:20px; text-align: center;}
  12. /* 左侧栏固定宽度,右侧自适应 */
  13. .bd-lft {
  14. zoom:1;
  15. overflow:hidden;
  16. }
  17. .bd-lft .aside {
  18. float:left;
  19. width:200px;
  20. margin-left:-100%; /*= -100%*/
  21. }
  22. .bd-lft .main {
  23. float:left;
  24. width:100%;
  25. }
  26. .bd-lft .main-wrap {
  27. margin-left: 210px;
  28. }
  29. /* 右侧栏固定宽度,左侧自适应 */
  30. .bd-rgt {
  31. zoom:1;
  32. overflow:hidden;
  33. }
  34. .bd-rgt .aside {
  35. float:left;
  36. width:200px;
  37. margin-left:-200px; /* = -this.width */
  38. }
  39. .bd-rgt .main {
  40. float:left;
  41. width:100%;
  42. }
  43. .bd-rgt .main-wrap {
  44. margin-right: 210px;
  45. }
  46. /* 左中右 三栏自适应 */
  47. .bd-3-lr {
  48. zoom:1;
  49. overflow:hidden;
  50. }
  51. .bd-3-lr .main {
  52. float:left;
  53. width:100%;
  54. }
  55. .bd-3-lr .main-wrap {
  56. margin: 0 210px 0 210px;
  57. }
  58. .bd-3-lr .aside-1 {
  59. float: left;
  60. width:200px;
  61. margin-left: -100%;
  62. }
  63. .bd-3-lr .aside-2 {
  64. float: left;
  65. width:200px;
  66. margin-left: -200px;
  67. }
  68. /* 都在左边,右侧自适应 */
  69. .bd-3-ll {
  70. zoom:1;
  71. overflow:hidden;
  72. }
  73. .bd-3-ll .main {
  74. float:left;
  75. width:100%;
  76. }
  77. .bd-3-ll .main-wrap {
  78. margin-left:420px;
  79. }
  80. .bd-3-ll .aside-1 {
  81. float: left;
  82. width:200px;
  83. margin-left: -100%;
  84. }
  85. .bd-3-ll .aside-2 {
  86. float: left;
  87. width:200px;
  88. margin-left: -100%;
  89. position:relative;
  90. left: 210px;
  91. }
  92. /* 都在右边,左侧自适应 */
  93. .bd-3-rr {
  94. zoom:1;
  95. overflow:hidden;
  96. }
  97. .bd-3-rr .main {
  98. float:left;
  99. width:100%;
  100. }
  101. .bd-3-rr .main-wrap {
  102. margin-right:420px;
  103. }
  104. .bd-3-rr .aside-1 {
  105. float: left;
  106. width:200px;
  107. margin-left: -410px;
  108. }
  109. .bd-3-rr .aside-2 {
  110. float: left;
  111. width:200px;
  112. margin-left: -200px;
  113. }
  114. </style>
  115. <div id="hd">头部</div>
  116. <div class="bd-lft">
  117. <div class="main">
  118. <div class="main-wrap">
  119. <p>主内容栏自适应宽度</p>
  120. </div>
  121. </div>
  122. <div class="aside">
  123. <p>侧边栏固定宽度</p>
  124. </div>
  125. </div>
  126. <div class="bd-rgt">
  127. <div class="main">
  128. <div class="main-wrap">
  129. <p>主内容栏自适应宽度</p>
  130. </div>
  131. </div>
  132. <div class="aside">
  133. <p>侧边栏固定宽度</p>
  134. </div>
  135. </div>
  136. <div class="bd-3-lr">
  137. <div class="main">
  138. <div class="main-wrap">
  139. <p>主内容栏自适应宽度</p>
  140. </div>
  141. </div>
  142. <div class="aside-1">
  143. <p>侧边栏1固定宽度</p>
  144. </div>
  145. <div class="aside-2">
  146. <p>侧边栏2固定宽度</p>
  147. </div>
  148. </div>
  149. <div class="bd-3-ll">
  150. <div class="main">
  151. <div class="main-wrap">
  152. <p>主内容栏自适应宽度</p>
  153. </div>
  154. </div>
  155. <div class="aside-1">
  156. <p>侧边栏1固定宽度</p>
  157. </div>
  158. <div class="aside-2">
  159. <p>侧边栏2固定宽度</p>
  160. </div>
  161. </div>
  162. <div class="bd-3-rr">
  163. <div class="main">
  164. <div class="main-wrap">
  165. <p>主内容栏自适应宽度</p>
  166. </div>
  167. </div>
  168. <div class="aside-1">
  169. <p>侧边栏1固定宽度</p>
  170. </div>
  171. <div class="aside-2">
  172. <p>侧边栏2固定宽度</p>
  173. </div>
  174. </div>
  175. <div id="ft">底部</div>

人气教程排行