在过去,我看到了下一个CSS,我在想是否存在一些实际的区别
min-width: 90px;
max-width: 90px;
Run Code Online (Sandbox Code Playgroud)
和
width: 90px;
Run Code Online (Sandbox Code Playgroud)
Tem*_*fif 11
usingwidth
将简单地在元素上指定固定宽度而不注意其内容(因此您可能会溢出):
div {
width: 80px;
border:2px solid red;
}
Run Code Online (Sandbox Code Playgroud)
<div>
<img src="https://lorempixel.com/200/100/" />
</div>
Run Code Online (Sandbox Code Playgroud)
使用max-width
意味着元素将有一个宽度的上限。所以它的宽度可以从 0 到 max-width 取决于它的内容。
div {
max-width: 300px;
border: 2px solid red;
}
.diff {
display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)
<div>
<!-- this i a block element so max-width prevent it from taking 100% width -->
<img src="https://lorempixel.com/200/100/" />
</div>
<div class="diff">
<!-- this i an inline-block element so max-width has no effect in this case cause the content is taking less than 300px -->
<img src="https://lorempixel.com/200/100/" />
</div>
<div>
<!-- You have overflow because the element cannot have more than 300 of width -->
<img src="https://lorempixel.com/400/100/" />
</div>
Run Code Online (Sandbox Code Playgroud)
并min-width
指定宽度的下限。所以元素的宽度会从 min-width 变化到 ...(这将取决于其他样式)。
div {
min-width: 300px;
border: 2px solid red;
}
.diff {
display: inline-block;
min-height:50px;
}
Run Code Online (Sandbox Code Playgroud)
<div>
<img src="https://lorempixel.com/200/100/" />
</div>
<div class="diff">
</div>
<div class="diff">
<img src="https://lorempixel.com/200/100/" />
</div>
<div>
<img src="https://lorempixel.com/400/100/" />
</div>
Run Code Online (Sandbox Code Playgroud)
因此,如果您指定min-width
and max-width
,您将设置下限和上限,如果两者相等,则与简单指定 a 相同width
。
div {
min-width: 300px;
max-width: 300px;
border: 2px solid red;
}
.diff {
display: inline-block;
min-height:50px;
}
Run Code Online (Sandbox Code Playgroud)
<div>
<img src="https://lorempixel.com/200/100/" />
</div>
<div class="diff">
</div>
<div class="diff">
<img src="https://lorempixel.com/200/100/" />
</div>
<div>
<img src="https://lorempixel.com/400/100/" />
</div>
Run Code Online (Sandbox Code Playgroud)
在某些特殊情况下,width
也不会产生相同的结果作为min-width
/max-width
像Flexbox的,我们有收缩功能,它允许一个元素来缩小以适合其容器
.box {
width:200px;
border:1px solid red;
display:flex;
margin:5px;
}
.box > div {
border:2px solid;
height:50px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="box">
<div style="width:300px"></div>
</div>
<div class="box">
<div style="min-width:300px;max-width:300px;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
正如您在第二种情况下所看到的,元素不会收缩,因为与 不同width
,min-width
它将阻止这种情况。
另一种情况是使用resize
财产:
div {
border: 2px solid;
height: 50px;
overflow: auto;
resize: both;
}
Run Code Online (Sandbox Code Playgroud)
<div style="width:300px"></div>
<div style="min-width:300px;max-width:300px;"></div>
Run Code Online (Sandbox Code Playgroud)
如您所见,我们可以调整由定义的元素width
而不是由min-width
/定义的元素的大小max-width
我们还应该注意到min-width
/max-width
比width
. 将 3 个属性设置为不同的值将使min-width
获胜者
.box {
border: 2px solid;
height: 50px;
width:100px;
min-width:200px;
max-width:150px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="box"></div>
Run Code Online (Sandbox Code Playgroud)
这意味着我们可以width
使用min-width
/覆盖设置的值,max-width
而不是相反的