我们可以在CSS中定义min-marginmax-marginmax-paddingmin-padding吗?

推荐答案

Yes, you can!

或者,如果不是那些确切的术语,那么至少是次好的事情.2020年,使用CSS数学函数(min()max()clamp())可以非常简单地实现这一点.

min计算从逗号分隔的值列表(任意长度)中 Select 最小的值.这可用于定义最大填充或最大边距规则:

padding-right: min(50px, 5%);

max计算同样从逗号分隔的值列表(任意长度)中选取最大值.这可用于定义最小填充或最小边距规则:

padding-right: max(15px, 5%);

clamp需要三个值;minimumpreferredmaximum值的顺序.

padding-right: clamp(15px, 5%, 50px);

MDN指定CLAMP实际上只是以下的简写:

max(MINIMUM, min(PREFERRED, MAXIMUM))

以下是一个clamp,用于在值100px200px之间包含25vw边距:

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.container {
  width: 100vw;
  border: 2px dashed red;
}

.margin {
  width: auto;
  min-width: min-content;
  background-color: lightblue;
  padding: 10px;
  margin-right: clamp(100px, 25vw, 200px);
}
<div class="container">
  <div class="margin">
    The margin-right on this div uses 25vw as its preferred value,
    100px as its minimum, and 200px as its maximum.
  </div>
</div>

数学函数可以在各种不同的场景中使用,甚至是像scaling font-size这样潜在的模糊场景——它们不仅仅用于控制边距和填充.在本文顶部的MDN链接中查看用例的完整列表.

Here is the caniuse list of browser support.覆盖率一般都很好,包括几乎所有现代浏览器——似乎除了一些次要的移动浏览器,尽管我自己还没有测试过.

Css相关问答推荐

在carousel组件上应用css转换时出现问题

在Angular mat-drawer组件中防止在mat-drawer-innercontainer中添加滚动条

如何在JavaFX中设置分隔符的样式?

try 在Jekyll中使用多个SCSS文件时出错

用两步函数内插的css动画值

Firefox中的解决方法:has(不使用JavaScript)

如何使用 :has() 父 Select 器 Select 父元素的子元素,在父元素和子元素之间没有中间层的情况下?

有人可以解释为什么我的 CSS 转换如此突然吗?

为什么我的 CSS 转换在 React 18 中不起作用

从 React MUI 自定义不同组件的正确方法?

当您到达页面底部时,如何使页脚 div 将附加的 div 向上推

为什么 flexbox 中的 在应用居中时不会调整大小?

如何使单选按钮看起来像切换按钮

CSS,居中的 div,缩小以适应?

包装器内两个跨度之一上的文本溢出省略号

边框半径 + 背景 colored颜色 == 裁剪边框

属性nowrap被认为是过时的.建议使用较新的构造.它是什么?

rotate3d 速记

数据协议 URL 大小限制

CSS关键帧动画CPU占用率高,应该这样吗?