ความลึกและพื้นผิว
- วางเงาหลายชั้นเพื่อให้ได้เอฟเฟกต์ความลึกที่นุ่มนวลและสมจริง
- ใช้
filter: drop-shadow()แทนbox-shadowสำหรับรูปร่างที่ไม่ใช่สี่เหลี่ยมผืนผ้าหรือ PNG แบบโปร่งใส - ใช้
mix-blend-modeและbackground-blend-modeสำหรับการวางซ้อนแสง (จำกัดขอบเขตด้วยisolation: isolate)
.hero {
background-image: url('texture.png'), linear-gradient(to bottom, #fff, #eee);
background-blend-mode: soft-light;
}
การไล่ระดับสีและcolor-mix()
ใช้ in oklch หรือ in oklab เพื่อระบุขอบเขตสีการประมาณค่าในช่วงสำหรับการไล่ระดับสีหรือ color-mix() อย่างชัดเจน
in oklchจะคงสีได้ดีกว่า แต่ก็อาจหลุดออกจากขอบเขตสีของอุปกรณ์ได้ง่ายกว่า โดยเฉพาะเมื่อสีมีความแตกต่างกันมากin oklabจะอยู่ในขอบเขตสีได้ง่ายกว่า (สมมติว่ามีปลายทางอยู่ในขอบเขตสี) แต่อาจสร้างสีที่ซีดจางและไม่มีความอิ่มตัวตรงกลาง โดยเฉพาะเมื่อทำการประมาณค่าในช่วงระหว่างสีที่ตรงข้ามกัน- อย่าใช้
in srgbเว้นแต่คุณจะมีเหตุผลเฉพาะเจาะจงในการดำเนินการดังกล่าว (เช่น คุณกำลังสร้างตัวเลือกสีที่ต้องประมาณค่าในช่วงใน srgb)
Fallback
เบราว์เซอร์บางรุ่นที่เปิดตัวก่อนปี 2024 ไม่รองรับพื้นที่การประมาณค่าสีแบบไล่ระดับสี หากต้องการรองรับเบราว์เซอร์เหล่านี้ ให้ใช้โทเค็นเฉพาะเมื่อการใช้งานปลอดภัยโดยการกำหนดตัวแปร ดังนี้
:root {
--in-oklab: ;
--in-oklch: ;
}
@supports (linear-gradient(in oklab, white, black)) {
:root {
--in-oklab: in oklab;
--in-oklch: in oklch;
}
}
จากนั้นใช้คำว่า "ชอบ" ดังนี้
.card {
background: linear-gradient(to bottom var(--in-oklab), var(--accent-color), var(--darker));
}
- สำคัญ: หากใช้เทคนิคนี้ โปรดตรวจสอบว่ามีข้อความนำการไล่ระดับสีที่ไม่ว่างเปล่าอยู่เสมอโดยไม่มีเทคนิคนี้ ไม่เช่นนั้นจะเกิดข้อผิดพลาดทางไวยากรณ์ในเบราว์เซอร์รุ่นเก่า
- คุณไม่จำเป็นต้องใช้สิ่งนี้สำหรับ
color-mix()หากเบราว์เซอร์รองรับcolor-mix()ก็จะรองรับอาร์กิวเมนต์in <color-space>ด้วย
รูปแบบ
คุณสร้างรูปแบบได้หลายรูปแบบผ่านการไล่ระดับสี CSS + จุดหยุดแบบคงที่ ซึ่งมีความยืดหยุ่นและมีประสิทธิภาพมากกว่า SVG หรือรูปภาพภายนอก เนื่องจากเข้าถึงตัวแปร CSS และความยาวจากบริบทโดยรอบได้
คุณไม่จำเป็นต้องระบุตำแหน่งซ้ำ 2 ครั้ง เพียงใช้ 0 หรือ 0% แล้วการแก้ไขการไล่ระดับสีจะปรับตำแหน่งให้โดยอัตโนมัติ
ดูตัวอย่างด้านล่าง
แถบแนวตั้งกว้าง 1em แต่ละแถบ:
background: linear-gradient(to right, var(--color-1) 50%, var(--color-2) 0) 0 / 2em;
แถบแนวทแยงที่มีความกว้าง 1em แต่ละแถบ:
background: repeating-linear-gradient(-45deg, var(--color-1) 0 1em, var(--color-2) 0 2em);
รูปแบบกระดานหมากรุกที่มีสี่เหลี่ยมจัตุรัส 1em รูป:
background: repeating-conic-gradient(var(--color-1) 0 25%, var(--color-2) 0 50%) 0 / 2em 2em;
ลายจุดที่มีจุดรัศมี .5em ห่างกัน 2em (แนวนอน/แนวตั้ง - คูณด้วย sqrt(2) สำหรับระยะทแยงมุม):
--distance: 2em;
--radius: .5em;
--polka: radial-gradient(circle, var(--color-1) var(--radius), transparent calc(var(--radius) + 1px));
background: var(--polka) 0 0, var(--polka) var(--distance) var(--distance) var(--color-2);
background-size: calc(var(--distance) * 2) calc(var(--distance) * 2);
แผนภูมิวงกลมแบบง่าย:
.pie {
--p: 80%;
width: 60px;
aspect-ratio: 1;
border-radius: 50%;
background: conic-gradient(var(--color-1) var(--p), transparent 0%) var(--color-2);
}
สำคัญ: เมื่อใช้การไล่ระดับสีเพื่อแสดงผลแผนภูมิ ให้ตรวจสอบว่ามีข้อความสำรองสำหรับโปรแกรมอ่านหน้าจอ บังคับ: คุณต้องระบุตารางข้อมูลเชิงความหมายเป็นทางเลือกที่เข้าถึงได้ ตามที่ระบุไว้ในหลักเกณฑ์การเขียนโค้ดสำหรับการช่วยเหลือพิเศษภายใต้หลักเกณฑ์ข้อความและสื่อสำรอง