พอดแคสต์ CSS - 023: ตัวกรอง
สมมติว่าคุณต้องสร้างองค์ประกอบที่มีเอฟเฟกต์กระจกสีทึบแสง เหนือรูปภาพ โดยข้อความจะต้องเป็นข้อความแบบสด ไม่ใช่รูปภาพ คุณจะทำอย่างไร
การใช้ฟิลเตอร์ CSS ร่วมกับ backdrop-filter
ช่วยให้เราใส่เอฟเฟกต์และเบลอสิ่งที่จำเป็นได้แบบเรียลไทม์
การเบลอและความทึบแสงเป็น 2 ในฟิลเตอร์ที่มีให้เลือก
ดังนั้นเราจะมาดูการทำงานและวิธีใช้ฟิลเตอร์เหล่านั้นกัน
พร็อพเพอร์ตี้ filter
คุณสามารถใช้ตัวกรองต่อไปนี้อย่างน้อย 1 รายการเป็นค่าสำหรับ filter
หากคุณใช้ตัวกรองไม่ถูกต้อง ตัวกรองที่เหลือที่กำหนดไว้สำหรับ filter
จะไม่ทำงาน
blur
วิธีนี้จะใช้การเบลอแบบเกาส์เชียน (Gaussian Blur) และอาร์กิวเมนต์เดียวที่คุณข้ามได้คือ radius
ซึ่งก็คือจำนวนการเบลอที่ใช้
ค่านี้ต้องเป็นหน่วยความยาว เช่น 10px
ระบบไม่ยอมรับเปอร์เซ็นต์
.my-element {
filter: blur(0.2em);
}
brightness
หากต้องการเพิ่มหรือลดความสว่างขององค์ประกอบ ให้ใช้ฟังก์ชันความสว่าง ค่าความสว่างแสดงเป็นเปอร์เซ็นต์ โดยรูปภาพที่ไม่เปลี่ยนแปลงแสดงเป็นค่า 100% ค่า 0% จะเปลี่ยนรูปภาพเป็นสีดำสนิท ดังนั้นค่าระหว่าง 0% ถึง 100% จะทำให้รูปภาพสว่างน้อยลง ใช้ค่าที่เกิน 100% เพื่อเพิ่มความสว่าง
.my-element {
filter: brightness(80%);
}
contrast
ตั้งค่าระหว่าง 0% ถึง 100% เพื่อลดหรือเพิ่มคอนทราสต์ตามลำดับ
.my-element {
filter: contrast(160%);
}
grayscale
คุณใช้เอฟเฟกต์โทนสีเทาโดยสมบูรณ์ได้โดยใช้ 1
เป็นค่าสำหรับ grayscale()
หรือ 0
เพื่อให้องค์ประกอบมีความอิ่มตัวเต็มที่
คุณยังใช้ค่าเปอร์เซ็นต์หรือทศนิยมเพื่อใช้เอฟเฟกต์โทนสีเทาบางส่วนได้ด้วย
หากไม่ส่งอาร์กิวเมนต์ องค์ประกอบจะเป็นโทนสีเทาโดยสมบูรณ์
หากคุณส่งค่ามากกว่า 100% ระบบจะจำกัดค่าสูงสุดที่ 100%
.my-element {
filter: grayscale(80%);
}
invert
เช่นเดียวกับ grayscale
คุณสามารถส่ง 1
หรือ 0
ไปยังฟังก์ชัน invert()
เพื่อเปิดหรือปิดฟังก์ชันดังกล่าวได้ เมื่อเปิดแล้ว สีขององค์ประกอบจะกลับด้านกันทั้งหมด
คุณยังใช้ค่าเปอร์เซ็นต์หรือทศนิยมเพื่อใส่เฉพาะการกลับสีเพียงบางส่วนได้ด้วย
หากไม่ส่งอาร์กิวเมนต์ใดๆ ไปยังฟังก์ชัน invert()
องค์ประกอบจะกลับด้านทั้งหมด
.my-element {
filter: invert(1);
}
opacity
ตัวกรอง opacity()
ทำงานเหมือนกับพร็อพเพอร์ตี้ opacity
ซึ่งคุณจะส่งตัวเลขหรือเปอร์เซ็นต์เพื่อเพิ่มหรือลดความทึบแสงได้
หากไม่ส่งอาร์กิวเมนต์ องค์ประกอบจะแสดงให้เห็นอย่างสมบูรณ์
.my-element {
filter: opacity(0.3);
}
saturate
ตัวกรองความอิ่มตัวคล้ายกับตัวกรอง brightness
มาก และยอมรับอาร์กิวเมนต์เดียวกัน นั่นคือ
number หรือเปอร์เซ็นต์
แทนที่จะเพิ่มหรือลดเอฟเฟกต์ความสว่าง saturate
จะเพิ่มหรือลดความอิ่มตัวของสี
.my-element {
filter: saturate(155%);
}
sepia
คุณเพิ่มเอฟเฟกต์โทนซีเปียได้ด้วยฟิลเตอร์นี้ซึ่งทํางานเหมือนกับ grayscale()
โทนสีซีเปียเป็นเทคนิคการพิมพ์ภาพถ่ายที่จะแปลงโทนสีดำเป็นโทนสีน้ำตาลเพื่อเพิ่มความอบอุ่น
คุณจะส่งผ่านตัวเลขหรือเปอร์เซ็นต์เป็นอาร์กิวเมนต์สำหรับ sepia()
ซึ่งจะเพิ่มหรือลดผลกระทบได้
การไม่ส่งอาร์กิวเมนต์จะเป็นการเพิ่มเอฟเฟกต์ซีเปียแบบเต็ม (เทียบเท่ากับ sepia(100%)
)
.my-element {
filter: sepia(70%);
}
hue-rotate
คุณได้เรียนรู้เกี่ยวกับวิธีที่โทนสีใน hsl
อ้างอิงการหมุนวงล้อสีในบทเรียนสี และตัวกรองนี้ทำงานในลักษณะที่คล้ายกัน
หากคุณส่งผ่านมุม เช่น องศาหรือเลี้ยว สีจะเปลี่ยนสีของทุกสีขององค์ประกอบ เป็นการเปลี่ยนส่วนของวงล้อสีที่ใช้อ้างอิง หากข้ามการโต้แย้งไม่ได้ จะไม่มีผลใดๆ
.my-element {
filter: hue-rotate(120deg);
}
drop-shadow
คุณใช้เงาตกกระทบแบบโค้งได้เหมือนกับที่ใช้ในเครื่องมือออกแบบ
เช่น Photoshop ด้วย
drop-shadow
เงานี้จะใช้กับมาสก์อัลฟ่าซึ่งมีประโยชน์มากสำหรับการเพิ่มเงาในภาพที่ถูกตัดออก
ฟิลเตอร์ drop-shadow
จะใช้พารามิเตอร์เงาซึ่งมีค่าออฟเซ็ต x, ออฟเซ็ต-y, เบลอ และสีซึ่งคั่นด้วยช่องว่าง
คล้ายกับ box-shadow
แต่ไม่รองรับคีย์เวิร์ด inset
และค่าสเปรด
.my-element {
filter: drop-shadow(5px 5px 10px orange);
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับเงาประเภทต่างๆ ในโมดูลเงา
url
ฟิลเตอร์ url
ช่วยให้คุณใช้ฟิลเตอร์ SVG จากองค์ประกอบหรือไฟล์ SVG ที่ลิงก์อยู่ได้
อ่านเพิ่มเติมเกี่ยวกับฟิลเตอร์ SVG ได้ที่นี่
ฟิลเตอร์ฉากหลัง
พร็อพเพอร์ตี้ backdrop-filter ยอมรับค่าฟังก์ชันตัวกรองทั้งหมดเหมือนกับ filter
ความแตกต่างระหว่าง backdrop-filter
และ filter
คือพร็อพเพอร์ตี้ backdrop-filter
จะใช้ตัวกรองกับพื้นหลังเท่านั้น โดยพร็อพเพอร์ตี้ filter
จะนำตัวกรองไปใช้กับองค์ประกอบทั้งหมด
ตัวอย่างที่อยู่ในตอนต้นของบทเรียนนี้เป็นตัวอย่างที่ดีมาก เพราะคุณไม่ต้องการให้ข้อความถูกเบลอ และโดยหลักการแล้ว คุณไม่ต้องเพิ่มองค์ประกอบ HTML อีก ซึ่งสามารถใช้ฟิลเตอร์เฉพาะกับฉากหลังได้
ตรวจสอบความเข้าใจ
ทดสอบความรู้เกี่ยวกับตัวกรอง
ข้อใดต่อไปนี้คือฟังก์ชันตัวกรอง CSS
grayscale()
invert()
flip()
multiply()
blur()
brightness()
CSS สามารถใช้ฟิลเตอร์ SVG ได้ไหม
url()
จะเปิดใช้การตั้งค่านี้