Can we define min-margin and max-margin, max-padding and min-padding in css?

后端 未结 19 1535
情话喂你
情话喂你 2021-01-31 01:01

Can we define min-margin and max-margin, max-padding and min-padding in CSS ?

19条回答
  •  庸人自扰
    2021-01-31 01:35

    Yes, you can!

    Or if not those terms exactly, then at least the next best thing. In 2020 this is now very straightforward using the CSS math functions: min(), max(), and clamp().

    A min calculation picks the smallest from a comma separated list of values (of any length). This can be used to define a max-padding or max-margin rule:

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

    A max calculation similarly picks the largest from a comma separated list of values (of any length). This can be used to define a min-padding or min-margin rule:

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

    A clamp takes three values; the minimum, preferred, and maximum values, in that order.

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

    MDN specifies that clamp is actually just shorthand for:

    max(MINIMUM, min(PREFERRED, MAXIMUM))
    

    Here is a clamp being used to contain a 25vw margin between the values 100px and 200px:

    * {
      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);
    }
    The margin-right on this div uses 25vw as its preferred value, 100px as its minimum, and 200px as its maximum.

    The math functions can be used in all sorts of different scenarios, even potentially obscure ones like scaling font-size - they are not just for controlling margin and padding. Check out the full list of use cases at the MDN links at the top of this post.

    Here is the caniuse list of browser support. Coverage is generally very good, including almost all modern browsers - with the exception, it appears, of some secondary mobile browsers although have not tested this myself.

提交回复
热议问题