使固定:
这是我的解决方案的一个顺利工作的jsfiddle
进一步调查数学我有一个预感 Internet Explorer 在尝试做一些愚蠢的事情时遇到了麻烦(还有什么是新的),那就是允许十进制值,即 margin-left:250.123px; 从而导致非常微小的不一致并破坏您的布局。
为了纠正这个问题,我暂时从你的所有计算中减去了 1px,一切看起来都很顺利
@media (max-width: 350px) {
.container > div {
margin-left: calc(((100% - 150px)/2) - 1px);
margin-right: calc(((100% - 150px)/2) - 1px);
background:black;
}
}
@media (min-width: 350px) and (max-width: 550px) {
.container > div {
margin-right: calc((100% - 300px) - 1px);
background:red;
}
.container > div:nth-child(2n) {
margin-right: 0;
}
}
@media (min-width: 550px) and (max-width: 750px) {
.container > div {
margin-right: calc(((100% - 450px) / 2) - 1px);
background:purple;
}
.container > div:nth-child(3n) {
margin-right: 0;
}
}
@media (min-width: 750px){
.container > div {
margin-right: calc(((100% - 600px) / 3) - 1px);
}
.container > div:nth-child(4n) {
margin-right: 0;
}
}
编辑:
我为媒体查询添加了颜色,以帮助解决问题的根源,并将它们排除在问题之外。我还排除了兼容性模式是导致此问题的原因,并且您的 calc 格式看起来很好。
看看更新的小提琴
如果媒体查询中断,我们也会看到颜色闪烁的不一致......这让我相信这是一个特定于我们的边距/间距定义的数学计算错误......即将进行进一步调查
我在 ie 中遇到了一些有关媒体查询的问题......值得一提的一些错误是
兼容模式 - 确保将其关闭可能会导致意外行为或只是一起中断媒体查询
doctype - 不声明或没有 html5 doctype 可能是导致更多媒体查询不一致的原因
<!DOCTYPE html>
我注意到您正在使用 calc() 我的第一反应是确保所有数学运算符都被空格包围......这是我遇到的另一个问题,其中
calc(2px+5px)
有失败的倾向,正确的语法应该是
calc(2px + 5px)