Skip to content

ฟังก์ชัน CSS อธิบาย

ฟังก์ชัน CSS ที่ทำงานหนักที่สุด จัดกลุ่มตามหน้าที่: คำนวณขนาด อ่านค่า custom properties ผสมและเลือกสี วาด gradient ใส่ฟิลเตอร์ วาดรูปทรง แปลงกล่อง และเลือกค่าด้วยตรรกะ แต่ละแถวจับคู่ฟังก์ชันกับตัวอย่างหนึ่งบรรทัด

ฟังก์ชัน CSS รับอาร์กิวเมนต์แล้วคืนค่าที่เบราว์เซอร์นำไปใช้ ตัวที่ทำงานหนักคือ calc() สำหรับเลขคณิต var() สำหรับ design token, clamp() สำหรับขนาดแบบ fluid และ color-mix() สำหรับสีที่ได้จากการผสม ซ้อนกันได้อิสระ: clamp(1rem, var(--fluid), 3rem) เป็นค่า responsive เดียว

ตารางอ้างอิง · 62 รายการ
62 of 62 rows
ขนาดและคณิตศาสตร์
ผลลัพธ์ของนิพจน์เลขคณิต โดยผสมหน่วยต่างชนิดกันได้width: calc(100% - 2rem);
ค่าที่เล็กที่สุดจากค่าที่กำหนดให้width: min(100%, 60ch);
ค่าที่ใหญ่ที่สุดจากค่าที่กำหนดให้width: max(320px, 40vw);
ค่าที่ถูกจำกัดระหว่างค่าต่ำสุด ค่าที่ต้องการ และค่าสูงสุดfont-size: clamp(1rem, 2vw, 1.5rem);
อ่านตัวแปรสภาพแวดล้อมที่ user agent จัดให้padding: env(safe-area-inset-top);
ขนาดที่ถูกจำกัดไม่ให้เกินความกว้างตามธรรมชาติของเนื้อหาwidth: fit-content(200px);
ปัดค่าหนึ่งให้เป็นพหุคูณที่ใกล้ที่สุดของอีกค่าหนึ่งwidth: round(up, 133px, 50px);
เศษเชิงบวกของการหาร มีค่าไม่ติดลบเสมอmargin: mod(100px, 30px);
เศษของการหาร คงเครื่องหมายตามตัวตั้งmargin: rem(-100px, 30px);
ค่าสัมบูรณ์translateX(abs(-10px));
-1, 0 หรือ 1 ตามเครื่องหมายของค่าpadding: sign(-5px) * 10px;
Grid
ช่วงขนาดสำหรับ grid track ระหว่างค่าต่ำสุดและค่าสูงสุดgrid-template-columns: minmax(100px, 1fr) minmax(0, 2fr);
ทำซ้ำรูปแบบ track ตามจำนวนครั้ง หรือจนกว่าจะเต็มgrid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
ตรรกะและเงื่อนไข
เลือกหนึ่งในสองค่าตามเงื่อนไขfont-size: if(media(width > 600px), 1.25rem, 1rem);
เป็นจริงเมื่อ media query ตรงกัน ใช้ภายใน if()padding: if(media(width > 40rem), 2rem, 1rem);
เป็นจริงเมื่อเบราว์เซอร์รองรับการประกาศนั้น ใช้ภายใน if()display: if(supports(color: oklch(0 0 0)), oklch(0 0 0), #333);
เป็นจริงเมื่อ selector ตรงกัน ใช้ภายใน if()font-weight: if(selector(:hover), 700, 400);
Custom properties
ค่าของ custom property พร้อม fallback เป็นตัวเลือกcolor: var(--accent, #333);
สี
สีจากช่องสัญญาณแดง เขียว น้ำเงิน (และอัลฟา)color: rgb(59 130 246 / 0.8);
สีจากเฉดสี ความอิ่มสี และความสว่างcolor: hsl(210 80% 50%);
สีในปริภูมิ OKLCH แบบรับรู้ตามสายตา (ความสว่างสม่ำเสมอ)color: oklch(0.7 0.15 250);
สีผสมจากสองสีในปริภูมิสีที่กำหนดcolor: color-mix(in srgb, red 40%, blue);
ตัวเลือกจากรายการที่ต่างจากสีพื้นมากที่สุดcolor: color-contrast(#fff vs #000, #777);
สีจากเฉดสี ความขาว และความดำcolor: hwb(210 10% 20%);
สีในปริภูมิ CIELAB (ความสว่าง แกน a และ b)color: lab(52% 40 59);
สีในปริภูมิ CIELAB (ความสว่าง ความอิ่มสี เฉดสี)color: lch(52% 49 24);
สีในปริภูมิสีใดก็ได้ที่กำหนดไว้ล่วงหน้า โดยระบุพิกัดcolor: color(display-p3 1 0.4 0.2);
สีแรกในโหมดสว่าง สีที่สองในโหมดมืดcolor: light-dark(#1a1a1a, #f5f5f5);
Gradient และรูปภาพ
gradient ตามเส้นตรงระหว่างจุดสีbackground: linear-gradient(90deg, #4b9fff, #2ee6a6);
gradient ที่แผ่ออกจากจุดศูนย์กลางbackground: radial-gradient(circle, #fff, #000);
gradient ที่หมุนวนรอบจุดศูนย์กลางbackground: conic-gradient(red, yellow, red);
โหลดทรัพยากรภายนอก: รูปภาพ ฟอนต์ หรือ SVGbackground-image: url(hero.webp);
เลือกรูปภาพที่ดีที่สุดตามความละเอียดของอุปกรณ์background-image: image-set("hero.webp" 1x, "hero@2x.webp" 2x);
ผสมสองภาพตามเปอร์เซ็นต์ที่กำหนดbackground-image: cross-fade(30%, url(a.webp), url(b.webp));
ฟิลเตอร์และรูปทรง
ฟิลเตอร์ระดับพิกเซลที่ใช้ภายใน property ชื่อ filterfilter: blur(4px) brightness(1.1);
สตริง path ของ SVG ใช้วาด clip หรือรูปทรงclip-path: path('M10 10 H 90 V 90 Z');
อ่าน attribute ของ HTML; ใช้นอก content ได้จำกัดcontent: attr(data-label);
ปรับคอนทราสต์ของอิลิเมนต์filter: contrast(1.4);
วาดเงาที่ตามรูปทรงอัลฟาของอิลิเมนต์filter: drop-shadow(0 4px 8px rgb(0 0 0 / 0.3));
เปลี่ยนอิลิเมนต์เป็นขาวดำfilter: grayscale(100%);
กลับสีของอิลิเมนต์filter: invert(1);
ใส่โทนสีซีเปียfilter: sepia(0.6);
หมุนเฉดสีของสีในอิลิเมนต์filter: hue-rotate(90deg);
กำหนดความทึบของอิลิเมนต์ผ่าน filterfilter: opacity(0.5);
รูปทรงวงกลมสำหรับ clip-path หรือ shape-outsideclip-path: circle(40% at 50% 50%);
รูปทรงวงรีสำหรับ clip-path หรือ shape-outsideclip-path: ellipse(50% 35% at 50% 50%);
รูปทรงสี่เหลี่ยมมุมมนสำหรับ clip-pathclip-path: inset(10px 10px 10px 10px round 8px);
รูปทรงหลายเหลี่ยมจากรายการจุดclip-path: polygon(50% 0, 100% 100%, 0 100%);
การแปลงรูป
เลื่อนอิลิเมนต์ตามแกน X และ Ytransform: translate(10px, 20px);
หมุนอิลิเมนต์รอบจุดศูนย์กลางของมันtransform: rotate(45deg);
ย่อ-ขยายอิลิเมนต์ตามแกน X และ Ytransform: scale(1.25);
เอียงอิลิเมนต์ตามแกน X และ Ytransform: skew(10deg, 0deg);
การแปลง 2D จากค่า matrix หกค่าtransform: matrix(1, 0, 0.5, 1, 10, 0);
กำหนดความลึกแบบ perspective 3D สำหรับอิลิเมนต์ลูกtransform: perspective(600px) rotateY(20deg);
แอนิเมชันและตัวนับ
เส้นโค้ง easing จากจุดควบคุมสี่จุดtransition-timing-function: cubic-bezier(0.65, 0, 0.35, 1);
easing ที่กระโดดเป็นขั้นเท่า ๆ กันanimation-timing-function: steps(8, end);
ค่าปัจจุบันของ CSS counter ใช้เป็น contentcontent: counter(chapter);
ค่าของ counter และทุกตัวบรรพบุรุษของมัน เชื่อมด้วยสตริงcontent: counters(item, ".");
0 ถึง 1 ตามความคืบหน้าของค่าระหว่างจุดเริ่มและจุดสิ้นสุดopacity: progress(scroll(), 0, 50vh);
เลขสุ่มจากช่วงที่กำหนด คงที่ต่ออิลิเมนต์rotate: random(from -5deg to 5deg);
ไซน์ของมุม สำหรับนิพจน์ calctranslateY(calc(1rem * sin(45deg)));
โคไซน์ของมุม สำหรับนิพจน์ calctranslateX(calc(1rem * cos(45deg)));