min-width和max-width具有相同的值?

fco*_*tes 8 css width

在过去,我看到了下一个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-widthand 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)

正如您在第二种情况下所看到的,元素不会收缩,因为与 不同widthmin-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-widthwidth. 将 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而不是相反的

  • 你不是在回答这个问题。问题是为什么你应该使用具有相同值的 min-width 和 max-width 而不仅仅是 width 属性。 (7认同)
  • 应该补充一点,对于某些元素,例如 textareas(默认情况下可调整大小),这会有所不同!设置 `width` 将设置初始宽度,但用户将能够拖动元素的角并使其变小或变大。仅指定 `min-width` 和 `max-width` 将锁定尺寸,以便用户无法调整超过特定尺寸的尺寸。 (7认同)