简单的任意列数均匀布局

  今天无意间发现了一种之前未见过的css中多列对齐的方式。想想原来要对齐总是设置各种float,然后宽度,有时还会因为因为设置的宽度不够精确导致div块移动到下一列。现在看到的方式可以针对任意多列布局,省去了计算的麻烦。

  核心的是text-align:justify以及伪元素的配合使用。

  实现效果:

  

  text-align:justify 的意思是两端对齐。并且很特殊的是text-align:justify 不处理块内的最后一行文本(包括块内仅有一行文本的情况,这时既是第一行也是最后一行),因此如果有多行怎么办呢?

  我们利用伪元素来充当最后一行。

<div class="container">
    <div class="justify">
        <i>1</i>
        <i>2</i>
        <i>3</i>
        <i>4</i>
        <i>5</i>
        <!--[if lte IE 7]>
        <b></b><![endif]--><!-- 兼容不支持伪元素的 ie678 -->
    </div>
    <div class="justify">
        <i>1</i>
        <i>2</i>
        <i>3</i>
        <i>4</i>
    </div>
    <div class="justify">
        <i>1</i>
        <i>2</i>
        <i>3</i>
    </div>
    <div class="justify">
        <i>1</i>
        <i>2</i>
    </div>
    <div class="justify">
        <i>1</i>
    </div>
</div>

  样式表:

 1         .container{
 2             width:400px;
 3             margin:50px auto 0;
 4         }
 5         .justify {
 6             position: relative;
 7             width: 100%;
 8             height: 24px;
 9             text-align: justify;   /*外层设置对齐方式*/
10             margin-bottom: 20px;
11         }
12         .justify i{
13             width:24px;
14             line-height:24px;
15             display:inline-block;
16             text-align:center;
17             background:#333;
18             color:white;
19             border-radius:50%;
20             overflow: hidden;
21             font-style: normal;
22         }
23         .justify:after{
24             content:"";  /*添加伪元素*/
25         }
26         .justify:after,
27         .justify b{
28             display: inline-block;  /*设置display*/
29             position:relative;
30             top:-28px;
32             height:1px;
33             line-height: 0;
34             width:100%;   /*伪元素宽度撑满*/
35             background:#333;
36             z-index:-1;
37             *zoom:1;
38         }

  也就是核心的就下面的代码,简单爽快。

        .justify{
            width: 500px;
            height: 300px;
            text-align: justify;
        }
        .justify:after{
            content:'';
            display: inline-block;
            width:100%;
        }
        .justify i{
            display:inline-block;
            text-align:center;
        }

 

posted @ 2017-01-11 17:50  jeyfang  阅读(195)  评论(2编辑  收藏  举报