css 为什么max-width不覆盖min-width?

lmyy7pcs  于 2023-04-01  发布在  其他
关注(0)|答案(3)|浏览(244)

我尝试创建一个响应式布局,如果屏幕大小允许,两个框相邻放置,如果屏幕大小不允许,则将它们放置在彼此的下方。如果两个框在彼此的下方,我希望它们以其父框为中心。我设置了一个jsfiddle来演示这个问题:
http://jsfiddle.net/leongersen/KsU23/

width: 50%;
min-width: 350px;
max-width: 100%;

尝试将“结果”窗格的大小调整到350 px以下。这些元素将与它们的父元素重叠。
我的问题:
为什么指定的max-width不被接受,即使它在min-width之后?

9lowa7mx

9lowa7mx1#

基于CSS标准:
下面的算法描述了这两个属性如何影响“width”属性的使用值:
1.暂定使用的宽度是按照上面“计算宽度和边距”下的规则计算的(没有“最小宽度”和“最大宽度”)。
1.如果临时使用的宽度大于“max-width”,则再次应用上述规则,但这次使用“max-width”的计算值作为“width”的计算值。
1.如果结果宽度小于'min-width',则再次应用上述规则,但这次使用'min-width'的值作为'width'的计算值。
因此,min-width总是“赢”。在特定的CSS规则中,无论如何都没有优先级,所有值都是原子地应用的。优先级仅在不同规则都应用于同一元素时才会发生,即使如此,它也是基于优先级的,而不是考虑文件顺序。

monwx1rj

monwx1rj2#

我知道,我迟到了......但一个确切的解决办法是:

p {
    display: inline-block;
    font-size: 15px;
    text-align: left;
    width: 50%;
    border: 1px solid blue;
    min-width: 350px;
}
@media (max-width: 700px) {
  p {
    width:100%;
    display:block;
  }
}
kzipqqlq

kzipqqlq3#

也晚了,但我认为最好的解决方案是使用min()

width: 50%;
min-width: 350px;
max-width: 100%;

会变成

width: 50%;
min-width: min(350px, 100%);

这样你就不依赖于媒体查询,因为宽度是基于父元素的,媒体查询甚至可能不适合你的用例

相关问题