使用动态宽度的SASS / Compass Math

时间:2014-03-06 17:21:45

标签: css sass compass-sass

我有一个灵活宽度的容器div(90%)。我希望它的子div在宽度方面总是比父级小180px。

我知道这可以在JS中完成,但我尝试尽可能多地使用CSS。我有一种感觉,这超出了CSS可以做的范围,但我想确定。

我想获得孩子的宽度(以px为单位)并减去180px。这可能吗?

标记:

<div id="main">
    <div class="block"></div>
</div>

SCSS:

#main {
  width: 90%;
  max-width: 1600px;

  .block {
    /* incorrect code: */
    width: WIDTH_OF_PARENT - 180px;
  }
}

4 个答案:

答案 0 :(得分:1)

CSS calc()函数支持相当低(特别是在移动浏览器中)。如果您想最大化浏览器支持,请改用边距:

http://jsfiddle.net/CV5nb/

#main {
    width: 90%;
    max-width: 1600px;
}
.block {
    margin-left: 180px; /* or margin-left: 90px; margin-right: 90px */
}

答案 1 :(得分:0)

要专门回答您的问题,您可以使用calc

-webkit-calc(100% - 180px)
-moz-calc(100% - 180px)
calc(100% - 180px)

但是,我建议您使用margin

答案 2 :(得分:0)

使用css中的calc函数:

width: calc(100%-180px);

答案 3 :(得分:0)

calc是anwser:IE9 +:http://caniuse.com/calc

JSFiddle Demo

CSS

#main {
    margin:25px auto;
    width:90%;
    max-width:1200px;
    border:1px solid green;
    padding:10px;
}

.block {
    border:1px solid red;
    height:25px;
    width: calc(100% - 180px);    
}

可能建议您使用box-sizing:border-box以避免混淆。

NB。如果内部div要居中,那么一个简单的90px边缘也可以起作用:http://jsfiddle.net/Paulie_D/g2bFT/2/