CSS / CSS Functions / 前端技術 / 筆記 · 2022-03-15

屬性值計算 max() & min()

max() 、 min() 、 clamp() 、 calc() 為 CSS function 屬性設定,適用於 <length>長度、 <frequency>頻率、 <angle>角度、 <time>時間、 <number>數字、<integer>整數。

支援瀏覽器:IE10+、Firefox4+、Chrome19+、Safari6+
單位:px、em、rem、%
運算:+ – * /
+ 加
– 減
* 乘 (必為數字)
/ 除 (必為數字,不可為零)

使用 + 和 – 時,前後需加上空白,* 和 / 可以不用加。

☞ 語法說明

max() 最大屬性質

函數以逗號分隔,設定最大值

/* css範例-min-width寫法 */
div{
  width:80vw;
  min-width:200px;
}

/* css範例-max()寫法 */
div{
  width:max(80vw, 200px); //寬度最小是 200px,裝置寬度小於200px則使用 80vw
}

min() 最小屬性質

函數以逗號分隔,設定最小值

/* css範例-max-width寫法 */
div{
  width:80vw;
  max-width:200px;
}

/* css範例-mix()寫法 */
div{
  width:mix(80vw, 200px); //寬度為80vw,裝置寬度小於80vw則使用200px
}

clamp() 中間屬性質

設定最大值與最小值之間的理想值,可自訂理想值。
clamp() = max(最小值, min(val, 最大值));
clamp(最小值, 自訂值, 最大值);

/* css範例-min-width與max-width寫法 */
div{
  width: 100%;
  min-width:200px;
  max-width:300px;
}

/* css範例-clamp()寫法 */
div{
  clamp(200px, 100%, 300px);
}

calc() 屬性計算

屬性執行計算函數,透過運算式動態取得參數值。

/* css範例-運算式 */
/* property: calc(expression) */

width: calc(10px + 100px);
width: calc(100% - 30px);
width: calc(2em * 5);
width: calc(100% / 3);
width: calc(var(--variable-width) + 20px);
/* css範例-length */
h1 {
  font-size: calc(1.5rem + 3vw);
}

/* css範例-integer */
.modal {
  z-index: calc(3 / 2);
}
/* css範例-定位*/

.banner {
  position: absolute;
  left: 40px;
  width: calc(100% - 80px);
  border: solid black 1px;
  box-shadow: 1px 2px;
  background-color: yellow;
  padding: 6px;
  text-align: center;
  box-sizing: border-box;
}
/* css範例-自動調整表單自適應於父框,不超出父框邊緣*/

input {
  padding: 2px;
  display: block;
  width: calc(100% - 1em);
}

#formbox {
  width: calc(100% / 6);
  border: 1px solid black;
  padding: 4px;
}
/* css範例-變數運用*/

.foo {
  --widthA: 100px;
  --widthB: calc(var(--widthA) / 2);
  --widthC: calc(var(--widthB) / 2);
  width: var(--widthC);
}

/* widthC = calc( calc( 100px / 2) / 2) = 25px */

☞ 範例

min()與calc()搭配使用

/* css範例-最大寬度是80vw - 50px */
:root{
  --w:min(200px, 80vw);
}
div {
  height: 50px;
  width:calc(var(--w) - 50px);
}