ภาพรวม
หากต้องการใช้รูปแบบสภาพอากาศหรือพื้นผิวที่สมจริง (เช่น กรันจ์ นอยส์ หรือพื้นผิวกระดาษ) กับองค์ประกอบ ให้ใช้การมาสก์ CSS (mask-image) กับรูปภาพพื้นผิวที่ซ้ำกัน ซึ่งจะช่วยให้คุณทำให้เนื้อหาดูมีพื้นผิวได้โดยการทำให้บางส่วนกึ่งโปร่งใส แทนที่จะวางพื้นผิวซ้อนทับไว้ด้านบนเท่านั้น ซึ่งจะทำให้ลักษณะของวัสดุทางกายภาพดูสมจริงยิ่งขึ้น
การใช้งาน
วิธีใช้รูปแบบพื้นผิว
วิธีที่ 1: ใช้ภาพแรสเตอร์แบบซ้ำ (แนะนำสำหรับพื้นผิวที่สมจริง)
วิธีนี้เป็นวิธีที่ใช้กันโดยทั่วไปสำหรับพื้นผิวที่สมจริง
.weathered-element {
/* MANDATORY: Use vendor prefix for wider support in older browsers */
-webkit-mask-image: url('grunge-pattern.png');
-webkit-mask-repeat: repeat; /* Repeat the pattern to fill the area */
-webkit-mask-size: 300px; /* Control the scale of the texture */
/* Standard property for modern browsers */
mask-image: url('grunge-pattern.png');
mask-repeat: repeat;
mask-size: 300px;
}
วิธีที่ 2: การใช้การไล่ระดับสี CSS สำหรับรูปแบบเรขาคณิต
คุณสร้างรูปแบบได้โดยใช้การไล่ระดับสี CSS ซึ่งเป็นแบบสมบูรณ์ในตัวและไม่จำเป็นต้องใช้ไฟล์ภาพภายนอก
.patterned-element {
--checkerboard-gradient:
linear-gradient(45deg, #000 25%, transparent 25%),
linear-gradient(-45deg, #000 25%, transparent 25%),
linear-gradient(45deg, transparent 75%, #000 75%),
linear-gradient(-45deg, transparent 75%, #000 75%);
/* Apply a checkerboard pattern as a mask */
-webkit-mask-image: var(--checkerboard-gradient);
-webkit-mask-size: 20px 20px;
-webkit-mask-position: 0 0, 0 10px, 10px -10px, -10px 0px;
mask-image: var(--checkerboard-gradient);
mask-size: 20px 20px;
mask-position: 0 0, 0 10px, 10px -10px, -10px 0px;
}
โหมดการมาสก์แบบอัลฟากับแบบความสว่าง
โดยค่าเริ่มต้น มาสก์ CSS จะใช้ mask-mode: match-source ซึ่งหมายความว่าเบราว์เซอร์จะตัดสินใจโดยอัตโนมัติว่าจะใช้ช่องอัลฟ่า (ความโปร่งใส) หรือความสว่าง (ความสว่าง) ของมาสก์ตามประเภทแหล่งที่มาที่คุณระบุ ดังนี้
| ประเภทแหล่งที่มาของมาสก์ | โหมดมาสก์เริ่มต้น | พฤติกรรมการมาสก์ |
|---|---|---|
องค์ประกอบ <mask> ของ SVG ในหน้า |
luminance |
ความทึบแสงจะกำหนดโดยความสว่างของสี สีขาวจะแสดงเนื้อหา สีดำจะซ่อนเนื้อหา และสีเทาจะสร้างความกึ่งโปร่งใส |
| ไฟล์รูปภาพโดยตรง (เช่น ไฟล์ PNG, SVG) | alpha |
ความทึบแสงจะกำหนดโดยความโปร่งใส ส่วนที่ทึบแสงจะแสดงเนื้อหา และส่วนที่โปร่งใสจะซ่อนเนื้อหา |
| CSS Gradient | alpha |
ความทึบแสงจะกำหนดโดยความโปร่งใส สีทึบแสง (เช่น black) จะแสดงเนื้อหา และสีโปร่งใสจะซ่อนเนื้อหา |
กลยุทธ์สำรอง
หากเบราว์เซอร์ไม่รองรับ mask-image หรือเวอร์ชันที่มีคำนำหน้า ให้ทำดังนี้
- องค์ประกอบจะแสดงโดยไม่มีพื้นผิว (การเติมสีทึบและเรียบ)
- ตรวจสอบว่าเนื้อหายังคงอ่านได้โดยไม่มีพื้นผิว (การเพิ่มประสิทธิภาพแบบต่อเนื่อง)
- คุณสามารถใช้ภาพพื้นหลังหรือภาพซ้อนทับเป็นทางเลือกสำรองเพื่อจำลองพื้นผิวได้ แม้ว่าจะไม่ส่งผลต่อความโปร่งใสของเนื้อหาเองก็ตาม
/* Fallback: Use a background image for browsers without mask support */
@supports (not (mask-image: url(x))) and (not (-webkit-mask-image: url(x))) {
.weathered-element {
/* Fallback adds texture on top or behind, depending on implementation */
background-image: url('grunge-pattern.svg');
background-color: #fff; /* Ensure background is solid if needed */
}
}