html – div之间的天沟

前端之家收集整理的这篇文章主要介绍了html – div之间的天沟前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请参阅以下codepen以了解我目前拥有的内容https://codepen.io/anon/pen/GjWYPO
  1. <div class="container">
  2. <div class="col-1-3 bg-blue">blue left</div>
  3. <div class="col-1-3" style="font-size:0px;">
  4.  
  5. <div class="col-1-3 bg-green">green 1</div>
  6. <div class="col-1-3 bg-green">green 2</div>
  7. <div class="col-1-3 bg-green">green 3</div>
  8.  
  9. </div>
  10. <div class="col-1-3 bg-blue">blue right</div>
  11. </div>

我的问题是,看看码本,我如何在绿色单元格之间创建一个排水沟.我的研究指出使用负边距和填充,但我不能让它工作.
像这里描述的东西:http://www.helloerik.com/the-subtle-magic-behind-why-the-bootstrap-3-grid-works

我的要求不是!创造更多的div.我不想创建一个“行包装器”,如果它可以解决当前笔中的html,我真的很高兴.我不介意,并猜测它的一部分解决方案,创建一个“行类”并将其应用于父细胞(此处带有id’蝙蝠侠’),持有绿色细胞.

第二个要求是,即使codepen示例使用3个单元格,该解决方案也适用于任意数量的单元格.所以它不能使用nth-child

第三,我真的不喜欢!使用flex来解决这个问题.

忽略容器类和font-size:0的东西,它只是在使用内联块时删除空格的临时修复.我真正的代码使用PHP缩小.

我希望这是有道理的.下面是我希望结果如下所示的图片

非常感谢任何帮助,
提前致谢!

== ==编辑

增加了不使用flex的要求.

解决方法

你可以将它添加到你的CSS,它应该工作(测试):
  1. .bg-green {
  2. width: calc((100% - ((3 - 1)*2%))/(3/1));
  3. margin-right: 2%;
  4. }
  5.  
  6. .bg-green:last-child{
  7. margin-right: 0;
  8. }

编辑片段:

  1. .container{
  2. font-size: 0;
  3. }
  4. [class|="col"] {
  5. display:inline-block;
  6. vertical-align: top;
  7. position:relative;
  8. font-size:20px;
  9.  
  10. }
  11. .col-1-3{
  12. width:calc(100%/(3/1));
  13. }
  14. .col-2-3{
  15. width:calc(100%/(3/2));
  16. }
  17. .col-1{
  18. width:100%;
  19. }
  20. .bg-blue{
  21. background-color:#42a5f5;
  22. color:#ffffff;
  23. }
  24. .bg-green{
  25. background-color:#66bb6a;
  26. color:#ffffff;
  27. }
  28.  
  29. .bg-green {
  30. width: calc((100% - ((3 - 1)*2%))/(3/1));
  31. margin-right: 2%;
  32. }
  33.  
  34. .bg-green:last-child{
  35. margin-right: 0;
  36. }
  1. <div class="container">
  2. <div class="col-1-3 bg-blue">blue left</div>
  3. <div class="col-1-3" style="font-size:0px;">
  4.  
  5. <div class="col-1-3 bg-green">green 1</div>
  6. <div class="col-1-3 bg-green">green 2</div>
  7. <div class="col-1-3 bg-green">green 3</div>
  8.  
  9. </div>
  10. <div class="col-1-3 bg-blue">blue right</div>
  11. </div>

只需将“3”替换为您拥有的任何数量的列,并根据需要更改边距值.

带有负边距的版本

稍微改变标记(与Bootstrap类似的结构):

  1. <div class="col-1-3">
  2. <div class="bg-green">green 1</div>
  3. </div>
  4. <div class="col-1-3">
  5. <div class="bg-green">green 2</div>
  6. </div>
  7. <div class="col-1-3">
  8. <div class="bg-green">green 3</div>
  9. </div>

以及CSS中的部分内容

  1. .children-has-gutters > div {
  2. padding-left: 15px;
  3. padding-right: 15px;
  4. Box-sizing: border-Box;
  5. }
  6.  
  7. .bg-blue {
  8. background-color:#42a5f5;
  9. color:#ffffff;
  10. width:calc((100%/(3/1)) + 15px);
  11. }
  1. .container{
  2. font-size: 0;
  3. }
  4. [class|="col"] {
  5. display:inline-block;
  6. vertical-align: top;
  7. position:relative;
  8. font-size:20px;
  9.  
  10. }
  11. .col-1-3{
  12. width:calc(100%/(3/1));
  13. }
  14. .col-2-3{
  15. width:calc(100%/(3/2));
  16. }
  17. .col-1{
  18. width:100%;
  19. }
  20.  
  21. .children-has-gutters{
  22. margin-left:-15px;
  23. margin-right:-15px;
  24. width: calc((100% / (3/1)) + 30px);
  25. }
  26. .children-has-gutters > div{
  27. padding-left:15px;
  28. padding-right:15px;
  29. Box-sizing: border-Box;
  30. }
  31.  
  32.  
  33. .bg-blue{
  34. background-color:#42a5f5;
  35. color:#ffffff;
  36. }
  37. .bg-green{
  38. background-color:#66bb6a;
  39. color:#ffffff;
  40. }
  1. <div class="container">
  2. <div class="col-1-3 bg-blue">blue left</div>
  3. <div class="col-1-3 children-has-gutters" style="font-size:0px;">
  4. <div class="col-1-3">
  5. <div class="bg-green">green 1</div>
  6. </div>
  7. <div class="col-1-3">
  8. <div class="bg-green">green 2</div>
  9. </div>
  10. <div class="col-1-3">
  11. <div class="bg-green">green 3</div>
  12. </div>
  13. </div>
  14. <div class="col-1-3 bg-blue">blue right</div>
  15. </div>

请注意,您必须为每个蓝色列添加15px,以避免容器宽度问题.你可以玩游戏并检查没有它会发生什么 – 容器中元素的宽度将是100% – 30px(负边距).

猜你在找的HTML相关文章