7.6 并列元素与嵌套样式

本小节将实现将一组磁贴片放在一起的效果,类似于按钮的btn-group样式,在这里取名为tile-group样式,效果如图7-7所示。

7.6 并列元素与嵌套样式 - 图1 图7-7 一组磁贴在一起的显示效果

通过图7-7所示效果可以看出来,要实现一组容器的效果,除了在容器内添加一个放置标题的元素以外,左右两边还要保留10像素的内边距。由于每个tile本身在右边和底部已经有了10像素的margin值了,所以此时只需要设置tile-group样式的padding-left为10px就可以了。实现代码如下:

  1. .tile-group {
  2. float: left;
  3. display: block;
  4. padding: 40px 0px 0px 10px; /* 40像素时给title标题留的位置,10像素时左边的间隙*/
  5. position: relative;
  6. color: #ffffff;
  7. }
  8.  
  9. .tile-group .tile-group-title {
  10. font-size: 18px;
  11. line-height: 20px;
  12. position: absolute; /* 绝对定位*/
  13. top: 10px;
  14. color: inherit;
  15. }

这样一来,实现上述效果图的HTML代码就简单多了。代码如下:

  1. <div class="tile-group bg-dark">
  2. <div class="tile-group-title">title</div>
  3. <div class="tile bg-red"></div>
  4. <div class="tile bg-green"></div>
  5. <div class="tile ol-orange"></div>
  6. </div>

由于Win8风格的磁贴组,一般默认是水平显示为2个、4个、6个,一般不都不会超过7个,所以可以通过单独的样式来控制水平方向的宽度,以便让多余的磁贴tile换行显示。

  1. .tile-group.two,
  2. .tile-group.double { width: 270px; /* 250+10 */}
  3.  
  4. .tile-group.three,
  5. .tile-group.triple { width: 400px; /* 380+10 */}
  6.  
  7. .tile-group.four,
  8. .tile-group.quadro { width: 530px; /* 510+10 */}
  9.  
  10. .tile-group.five { width: 660px;}
  11. .tile-group.six { width: 790px;}
  12. .tile-group.seven { width: 920px;}

使用时只需在tile-group样式上附加一个要限制的个数样式即可。比如总共有6个tile,每行只能显示3个,此时再附加一个three样式即可。示例如下:

  1. <div class="tile-group three bg-dark">
  2. <div class="tile-group-title">title</div>
  3. <div class="tile bg-red"></div>
  4. <div class="tile bg-green"></div>
  5. <div class="tile ol-orange"></div>
  6. <div class="tile bg-red"></div>
  7. <div class="tile bg-green"></div>
  8. <div class="tile ol-orange"></div>
  9. </div>