经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
css设置多列等高布局的方法示例_CSS教程_CSS
来源:jb51  时间:2018/9/25 19:07:02  对本文有异议

初始时,多个列内容大小不同,高度不同。现在需要设置不同的背景来显示,而且各个列的高度需要保持一致。那么这就需要利用到多列等高布局。

最终需要的效果:

 

1. 真实等高布局

flex 技术点:弹性盒子布局flex,默认值就是自带等高布局的特点。

定义flex布局的时候,有一些默认值。

flex-direction 属性定义主轴的方向。默认值为 row ,一般是水平显示。flex容器的主轴被定义为与文本方向相同。 主轴起点和主轴终点与内容方向相同。

align-item 属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。默认值为 stretch ,元素被拉伸以适应容器。

  1. <div class="box">
  2. <div class="left"></div>
  3. <div class="center"></div>
  4. <div class="right"></div>
  5. </div>

css

  1. .box {
  2. display: flex;
  3. }
  4. .left {
  5. width: 300px;
  6. background-color: grey;
  7. }
  8. .center {
  9. flex: 1;
  10. background: red;
  11. }
  12. .right {
  13. width: 500px;
  14. background: yellow;
  15. }

See the Pen equal-hight-layout-flex by weiqinl ( @weiqinl ) on CodePen .

2. 真实等高布局

table-cell 技术点:table布局天然就具有等高的特性。

display设置为 table-cell ,则此元素会作为一个表格单元格显示。类似于使用标签 <td> 或者 <th>

HTML结构

  1. <div class="box">
  2. <div class="left"></div>
  3. <div class="center"></div>
  4. <div class="right"></div>
  5. </div>

CSS样式

  1. .left {
  2.  
  3. display: table-cell;
  4.  
  5. width:30%;
  6.  
  7. background-color: greenyellow;
  8.  
  9. }
  10.  
  11. .center {
  12.  
  13. display: table-cell;
  14.  
  15. width:30%;
  16.  
  17. background-color: gray;
  18.  
  19. }
  20.  
  21. .right {
  22.  
  23. display: table-cell;
  24.  
  25. width:30%;
  26.  
  27. background-color: yellowgreen;
  28.  
  29. }

3. 假等高列布局 内外边距底部正负值

实现:设置父容器的overflow属性为hidden。给每列设置比较大的底内边距,然后用数值相似的负外边距消除这个高度。

  • 不考虑可扩展性,只需要将padding-bottom/margin-bottom ,设置为最高列与最低列相差高度值,就可以得到等高效果。
  • 考虑扩展性,为了防止将来可能某列高度大量的增加或减少,所有,我们设置了一个比较大的值。

技术点

  • background 会填充内边距 padding,而不会填充外边距 margin 。margin具有坍塌性,可以设置负值。
  • float:left。使用float,元素会脱离文档流,使其浮动至最近的文档流元素。在这里的作用是,将三个div元素并排。
  • overflow:hidden; 设置overflow属性为hidden,同时会产生 块级格式化上下文(BFC),消除float带来的影响。同时,根据需要,会截取内容以适应填充框,将超出容器的部分隐藏。

HTML结构

  1. <div class="box">
  2.  
  3. <div class="left"></div>
  4.  
  5. <div class="center"></div>
  6.  
  7. <div class="right"></div>
  8.  
  9. </div>

CSS

  1. .box {
  2. overflow: hidden;
  3. }
  4. .box > div{
  5. /**
  6. * padding-bottom 设置比较大的正值。
  7. * margin-bottom 设置绝对值大的负值。
  8. **/
  9. padding-bottom: 10000px;
  10. margin-bottom: -10000px;
  11. float:left;
  12. width:30%;
  13. }
  14. .left {
  15. background-color: greenyellow;
  16. }
  17. .center {
  18. background-color: gray;
  19. }
  20. .right {
  21. background-color: yellowgreen;
  22. }

4. 假等高布局,背景视觉效果

技术点: float浮动,并设置每一列的宽度。设置父元素为行内块级元素,之后再利用线性渐变的图片来设置父元素的背景凸显等高的效果

CSS linear-gradient 函数用于创建一个表示两种或多种颜色线性渐变的图片。

display: inline-block ,设置为行内块级元素。

  1. <div class="box five-columns">
  2. <div class="col"></div>
  3. <div class="col"></div>
  4. <div class="col"></div>
  5. <div class="col"></div>
  6. <div class="col"></div>
  7. </div>

css

  1. /** 需要自己算出平均每列的宽度 */
  2.  
  3. .box {
  4.  
  5. display: inline-block;
  6.  
  7. background: linear-gradient(
  8.  
  9. to right,
  10.  
  11. red,
  12.  
  13. red 20%,
  14.  
  15. blue 20%,
  16.  
  17. blue 40%,
  18.  
  19. yellow 40%,
  20.  
  21. yellow 60%,
  22.  
  23. orange 60%,
  24.  
  25. orange 80%,
  26.  
  27. grey 80%,
  28.  
  29. grey);
  30.  
  31. }
  32.  
  33. .col {
  34.  
  35. float: left;
  36.  
  37. width: 16%;
  38.  
  39. padding: 2%;
  40.  
  41. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号