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);
}