div(瓷砖)的百分比宽度

时间:2013-06-02 19:42:56

标签: html css responsive-design percentage

我需要像百分比宽度一样制作像“瓷砖”这样的div(使其与浏览器大小一致),但现在我有一个问题,当我设置边距并且两个瓷砖有50%时,它们是在彼此之下。我需要并排制作它们。这是我的代码:

HTML

<div id="contentContainer">
    <div id="content">
        <div class="bigTile"></div><div class="mediumTile"></div><div class="mediumTile"></div>
    </div>
</div>

CSS

#contentContainer {
    position: absolute;
    left: 0px;
    right: 0px;
    height: 100%;
    overflow: auto;
}

#content {
    padding: 5px;
}

.bigTile {
    display: inline-block; 
    background-color: orange; 
    width: 100%; 
    height: 50px; 
    margin: 5px; 
    padding: 0px; 
    box-sizing: border-box;
}

.mediumTile {
    display: inline-block; 
    background-color: purple; 
    width: 50%; 
    height: 50px; 
    margin: 5px; 
    padding: 0px; 
    box-sizing: border-box;
}

这是jsFiddle:http://jsfiddle.net/dQMZ5/

知道怎么做吗?我想创造25%的瓷砖,但我坚持50%,我认为解决方案将是相同的......

2 个答案:

答案 0 :(得分:1)

问题是“宽度:50%”定义了内容+填充+边框 - 边距的大小。即,然后将边距添加到已计算的宽度中。

并排将在两个条件下工作:

  • 瓷砖应该没有边距。如果您需要边距来改善视觉外观,请将具有边距的其他div放入切片中:
<div class="bigTile"><div class="content"></div></div>
  • 瓷砖的样式应为“float:left”(“display:inline-block”可以省略)。

我分叉你的jsfiddle以演示解决方案:

http://jsfiddle.net/akhikhl/23Y8H/1/

答案 1 :(得分:0)

我将如何做http://jsfiddle.net/jamestoone/dQMZ5/11/。这将为您提供相等的列宽。我已将利润率更改为百分比。虽然如果这个布局只适用于css3浏览器,你可以使用calc功能来表示width = 50%-20px。如果您想要那个解决方案,那么我可以提供它

<div id="contentContainer">
<div id="content">
    <div class="big Tile"></div>
    <div class="medium Tile"></div>
    <div class="medium Tile"></div>
    <div class="small Tile"></div>
    <div class="small Tile"></div>
    <div class="small Tile"></div>
    <div class="small Tile"></div>
</div>

* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
#contentContainer {
    position: absolute;
    left: 0px;
    right: 0px;
    height: 100%;
    overflow: auto;
}

#content {
    padding: 5px;
}

.Tile {
    float: left;
    height: 50px; 
    margin: 1%; 
}

.big.Tile {
    background-color: orange; 
    width: 98%; 
}

.medium.Tile {
    background-color: purple; 
    width: 48%; 
}

.small.Tile {
    background-color: lightblue; 
    width: 23%; 
}