媒体查询在它应该执行之后执行
Media query being executed after it should
我正在处理 flex
个项目,所以我认为这可能是我的代码出现奇怪行为的原因。
我有 .flexContainer
class 有一个 max-width
属性。调整 window 大小后,我想将此 max-width
属性 更改为更高的值,但如果我将媒体查询设置为:
@media screen and (max-width: 850px){
.flexContainer{
max-width: 60%;
}
}
元素的 max-width
在 835px
而不是 850px
发生变化。
这是我的代码:
HTML:
<div id="container">
<div id="left" class="block">Left</div>
<div id="center" class="block">
<div class="flexContainer">
<div class="flexDiv"></div>
</div>
<div class="flexContainer">
<div class="flexDiv"></div>
</div>
<div class="flexContainer">
<div class="flexDiv"></div>
</div>
</div>
<div id="right" class="block">Right</div>
</div>
CSS:
html, body{
width: 100%;
height: 100%;
}
#container{
display: flex;
height: 100%;
background-color: blue;
}
.block{
flex: 1;
}
#left{
background-color: green;
}
#center{
display: flex;
flex: 1;
flex-wrap: wrap;
align-content: flex-start;
}
#right{
background-color: orange;
}
.flexContainer{
flex: 1;
min-width: 100px;
max-width: 50%;
box-sizing: border-box;
height: 150px;
background-color: red;
padding: 10px;
}
.flexDiv{
width: 100%;
height: 100%;
background-color: yellow;
}
@media screen and (max-width: 850px){
.flexContainer{
max-width: 60%;
}
}
JSFiddle 其中您可以看到 max-width
属性 在 835px
而不是 850px
.
处发生变化
编辑: 我添加了两个屏幕截图,以便您查看:
为什么媒体查询在应该执行之后才执行?
我在这里发现了我的问题。只是我不得不删除 body
标签的 margin
。
我将尝试重现我在真实项目中的效果(其中我修复了 body
标签)并再次编辑问题。
编辑: 这似乎是 Google Chrome
的错误或类似的东西,因为我无法再重现该错误。
我得到的错误是,当我查看 Google Chrome
检查器上的 html
标签时,它给了我错误的网页值(少了大约 30px,我确实这样做了周围没有任何 padding/margin
)所以我认为媒体查询是在屏幕的错误 width
中执行的。
我知道这是一个 "stupid" 解决方案,但当我关闭并重新打开 Google Chrome
时它再次起作用。现在它像正常行为一样工作。
我正在处理 flex
个项目,所以我认为这可能是我的代码出现奇怪行为的原因。
我有 .flexContainer
class 有一个 max-width
属性。调整 window 大小后,我想将此 max-width
属性 更改为更高的值,但如果我将媒体查询设置为:
@media screen and (max-width: 850px){
.flexContainer{
max-width: 60%;
}
}
元素的 max-width
在 835px
而不是 850px
发生变化。
这是我的代码:
HTML:
<div id="container">
<div id="left" class="block">Left</div>
<div id="center" class="block">
<div class="flexContainer">
<div class="flexDiv"></div>
</div>
<div class="flexContainer">
<div class="flexDiv"></div>
</div>
<div class="flexContainer">
<div class="flexDiv"></div>
</div>
</div>
<div id="right" class="block">Right</div>
</div>
CSS:
html, body{
width: 100%;
height: 100%;
}
#container{
display: flex;
height: 100%;
background-color: blue;
}
.block{
flex: 1;
}
#left{
background-color: green;
}
#center{
display: flex;
flex: 1;
flex-wrap: wrap;
align-content: flex-start;
}
#right{
background-color: orange;
}
.flexContainer{
flex: 1;
min-width: 100px;
max-width: 50%;
box-sizing: border-box;
height: 150px;
background-color: red;
padding: 10px;
}
.flexDiv{
width: 100%;
height: 100%;
background-color: yellow;
}
@media screen and (max-width: 850px){
.flexContainer{
max-width: 60%;
}
}
JSFiddle 其中您可以看到 max-width
属性 在 835px
而不是 850px
.
编辑: 我添加了两个屏幕截图,以便您查看:
为什么媒体查询在应该执行之后才执行?
我在这里发现了我的问题。只是我不得不删除 body
标签的 margin
。
我将尝试重现我在真实项目中的效果(其中我修复了 body
标签)并再次编辑问题。
编辑: 这似乎是 Google Chrome
的错误或类似的东西,因为我无法再重现该错误。
我得到的错误是,当我查看 Google Chrome
检查器上的 html
标签时,它给了我错误的网页值(少了大约 30px,我确实这样做了周围没有任何 padding/margin
)所以我认为媒体查询是在屏幕的错误 width
中执行的。
我知道这是一个 "stupid" 解决方案,但当我关闭并重新打开 Google Chrome
时它再次起作用。现在它像正常行为一样工作。