我看到了这个页面CSS链接,深受其计算不同单位结果的想法所吸引。但是我尝试了以下代码:
$('selector').css({'width':'calc(100%-20px)'});
但是它不起作用...有人知道如何解决这个问题吗,或者为什么它不起作用吗?
jQuery支持calc()函数,我已经使用了很多次:
$(".content-section").css('width','calc('+contentSectionWidth+'% - 15px)');
$(".content-section").css('width','calc(100% - 15px)');
jQuery不支持calc()
属性值,当前所有的浏览器都不支持。
可以在这里查看比较:http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28Cascading_Style_Sheets%29
在您的示例中,可以直接在内部元素上使用margin代替:
<div class="parent"><div class="elem"></div></div>
.parent{
width:100%;
background:green;
}
.elem{
margin: 0 10px;
background:blue;
}
这样,.elem
的宽度将为100% - 20px。
calc()
,因此在这个阶段,这个特性看起来不太可能成为标准。如果你想保持在得到良好支持的范围内,你需要坚持使用CSS 2.1。100%-20px
这样的东西必须通过嵌套元素、边距和填充来实现。Ravi Verma的回答是正确的。
我想要补充的是你的代码为什么不起作用。在使用calc
进行加减时,需要在运算符前后都有空格。
来自MDN文档:
+ 和 - 运算符必须始终被空格所包围。例如 calc(50% -8px) 的操作数将会被解析为百分比后面跟着一个负长度,这是一个无效的表达式,而 calc(50% - 8px) 的操作数是一个百分比后跟着一个减号和长度。更进一步,calc(8px + -50%) 被视为一个长度后面跟着一个加号和一个负百分比。 * 和 / 运算符不需要空格,但为了保持一致性,添加空格是允许和推荐的。
如果计算问题仅在生产环境(缩小过程中)发生,请检查您的缩小器。我们发现默认的C#缩小器(大约3年前,2019年左右)在计算函数上失败...导致类似的问题。
对于我们来说,从默认的VS2017 C#缩小器切换到SquishIt解决了这个问题。其他缩小器也解决了这个问题,但SquishIt最终成为我们尝试过的“赢家”。
祝一切顺利,编码愉快, Michael M.