首页 > 开发 > CSS > 正文

我就是要用CSS实现九宫格图

2024-07-11 08:33:18
字体:
来源:转载
供稿:网友

下图是手Q吃喝玩乐  好友去哪儿九宫格图的图示:

 

从上图我们可以分析出如下需求:

图片大小自适应;
图片个数不同时,图片按照指定方式排列;
图片相邻处有1px空白间隙。

我们以最复杂的6图布局为例,一步一步来看如何以纯CSS实现。

1、float布局

最容易想到的,也是最简单的方案,就是 float 布局:

图片大小自适应:宽度百分比,高度使用 padding-top 百分比
图片个数不同时,图片按照指定方式排列:使用 nth-child 伪类指定不同情况下的元素大小
图片相邻处有1px空白间隙:使用 border-box + border模拟边框

这里父元素的高度未知,height使用百分比行不通,而padding的百分比值是依据父元素的宽度来计算的,我们可以使用padding-top撑开高度。

让我们一瞅伪码:

XHTML

XML/HTML Code复制内容到剪贴板
  1. <div class="float">       <div class="item">1</div>  
  2.     ...        <div class="item">6</div>  
  3. </div>  

 CSS

CSS Code复制内容到剪贴板
  1. .float {        overflow: hidden;   
  2. }    .item {   
  3.     float: left;        padding-top: 33.3%;   
  4.     width: 33.3%;        border-right: 1px solid #fff;   
  5.     border-top: 1px solid #fff;    }   
  6. .item:nth-child(1) {        padding-top: 66.6%;   
  7.     width: 66.6%;    }   
  8. .item:nth-child(2), .item:nth-child(3), .item:nth-child(6) {        border-right: 0 none;   
  9. }    .item:nth-child(1), .item:nth-child(2) {   
  10.     border-top: 0 none;    }    

实际效果并不理想,如下图:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表