ฟิลเตอร์

พอดแคสต์ CSS - 023: ตัวกรอง

สมมติว่าคุณต้องสร้างองค์ประกอบที่มีเอฟเฟกต์กระจกสีทึบแสง เหนือรูปภาพ โดยข้อความจะต้องเป็นข้อความแบบสด ไม่ใช่รูปภาพ คุณจะทำอย่างไร

การใช้ฟิลเตอร์ CSS ร่วมกับ backdrop-filter ช่วยให้เราใส่เอฟเฟกต์และเบลอสิ่งที่จำเป็นได้แบบเรียลไทม์ การเบลอและความทึบแสงเป็น 2 ในฟิลเตอร์ที่มีให้เลือก ดังนั้นเราจะมาดูการทำงานและวิธีใช้ฟิลเตอร์เหล่านั้นกัน

พร็อพเพอร์ตี้ filter

การรองรับเบราว์เซอร์

  • 53
  • 12
  • 35
  • 9.1

แหล่งที่มา

คุณสามารถใช้ตัวกรองต่อไปนี้อย่างน้อย 1 รายการเป็นค่าสำหรับ filter หากคุณใช้ตัวกรองไม่ถูกต้อง ตัวกรองที่เหลือที่กำหนดไว้สำหรับ filter จะไม่ทำงาน

blur

วิธีนี้จะใช้การเบลอแบบเกาส์เชียน (Gaussian Blur) และอาร์กิวเมนต์เดียวที่คุณข้ามได้คือ radius ซึ่งก็คือจำนวนการเบลอที่ใช้ ค่านี้ต้องเป็นหน่วยความยาว เช่น 10px ระบบไม่ยอมรับเปอร์เซ็นต์

.my-element {
    filter: blur(0.2em);
}

brightness

การรองรับเบราว์เซอร์

  • 18
  • 12
  • 35
  • 6

แหล่งที่มา

หากต้องการเพิ่มหรือลดความสว่างขององค์ประกอบ ให้ใช้ฟังก์ชันความสว่าง ค่าความสว่างแสดงเป็นเปอร์เซ็นต์ โดยรูปภาพที่ไม่เปลี่ยนแปลงแสดงเป็นค่า 100% ค่า 0% จะเปลี่ยนรูปภาพเป็นสีดำสนิท ดังนั้นค่าระหว่าง 0% ถึง 100% จะทำให้รูปภาพสว่างน้อยลง ใช้ค่าที่เกิน 100% เพื่อเพิ่มความสว่าง

.my-element {
    filter: brightness(80%);
}

contrast

การรองรับเบราว์เซอร์

  • 18
  • 12
  • 35
  • 6

แหล่งที่มา

ตั้งค่าระหว่าง 0% ถึง 100% เพื่อลดหรือเพิ่มคอนทราสต์ตามลำดับ

.my-element {
    filter: contrast(160%);
}

grayscale

การรองรับเบราว์เซอร์

  • 18
  • 12
  • 35
  • 6

แหล่งที่มา

คุณใช้เอฟเฟกต์โทนสีเทาโดยสมบูรณ์ได้โดยใช้ 1 เป็นค่าสำหรับ grayscale() หรือ 0 เพื่อให้องค์ประกอบมีความอิ่มตัวเต็มที่ คุณยังใช้ค่าเปอร์เซ็นต์หรือทศนิยมเพื่อใช้เอฟเฟกต์โทนสีเทาบางส่วนได้ด้วย หากไม่ส่งอาร์กิวเมนต์ องค์ประกอบจะเป็นโทนสีเทาโดยสมบูรณ์ หากคุณส่งค่ามากกว่า 100% ระบบจะจำกัดค่าสูงสุดที่ 100%

.my-element {
    filter: grayscale(80%);
}

invert

การรองรับเบราว์เซอร์

  • 18
  • 12
  • 35
  • 6

แหล่งที่มา

เช่นเดียวกับ grayscale คุณสามารถส่ง 1 หรือ 0 ไปยังฟังก์ชัน invert() เพื่อเปิดหรือปิดฟังก์ชันดังกล่าวได้ เมื่อเปิดแล้ว สีขององค์ประกอบจะกลับด้านกันทั้งหมด คุณยังใช้ค่าเปอร์เซ็นต์หรือทศนิยมเพื่อใส่เฉพาะการกลับสีเพียงบางส่วนได้ด้วย หากไม่ส่งอาร์กิวเมนต์ใดๆ ไปยังฟังก์ชัน invert() องค์ประกอบจะกลับด้านทั้งหมด

.my-element {
    filter: invert(1);
}

opacity

การรองรับเบราว์เซอร์

  • 18
  • 12
  • 35
  • 6

แหล่งที่มา

ตัวกรอง opacity() ทำงานเหมือนกับพร็อพเพอร์ตี้ opacity ซึ่งคุณจะส่งตัวเลขหรือเปอร์เซ็นต์เพื่อเพิ่มหรือลดความทึบแสงได้ หากไม่ส่งอาร์กิวเมนต์ องค์ประกอบจะแสดงให้เห็นอย่างสมบูรณ์

.my-element {
    filter: opacity(0.3);
}

saturate

การรองรับเบราว์เซอร์

  • 18
  • 12
  • 35
  • 6

แหล่งที่มา

ตัวกรองความอิ่มตัวคล้ายกับตัวกรอง brightness มาก และยอมรับอาร์กิวเมนต์เดียวกัน นั่นคือ number หรือเปอร์เซ็นต์ แทนที่จะเพิ่มหรือลดเอฟเฟกต์ความสว่าง saturate จะเพิ่มหรือลดความอิ่มตัวของสี

.my-element {
    filter: saturate(155%);
}

sepia

การรองรับเบราว์เซอร์

  • 18
  • 12
  • 35
  • 6

แหล่งที่มา

คุณเพิ่มเอฟเฟกต์โทนซีเปียได้ด้วยฟิลเตอร์นี้ซึ่งทํางานเหมือนกับ grayscale() โทนสีซีเปียเป็นเทคนิคการพิมพ์ภาพถ่ายที่จะแปลงโทนสีดำเป็นโทนสีน้ำตาลเพื่อเพิ่มความอบอุ่น คุณจะส่งผ่านตัวเลขหรือเปอร์เซ็นต์เป็นอาร์กิวเมนต์สำหรับ sepia() ซึ่งจะเพิ่มหรือลดผลกระทบได้ การไม่ส่งอาร์กิวเมนต์จะเป็นการเพิ่มเอฟเฟกต์ซีเปียแบบเต็ม (เทียบเท่ากับ sepia(100%))

.my-element {
    filter: sepia(70%);
}

hue-rotate

การรองรับเบราว์เซอร์

  • 18
  • 12
  • 35
  • 6

แหล่งที่มา

คุณได้เรียนรู้เกี่ยวกับวิธีที่โทนสีใน hsl อ้างอิงการหมุนวงล้อสีในบทเรียนสี และตัวกรองนี้ทำงานในลักษณะที่คล้ายกัน หากคุณส่งผ่านมุม เช่น องศาหรือเลี้ยว สีจะเปลี่ยนสีของทุกสีขององค์ประกอบ เป็นการเปลี่ยนส่วนของวงล้อสีที่ใช้อ้างอิง หากข้ามการโต้แย้งไม่ได้ จะไม่มีผลใดๆ

.my-element {
    filter: hue-rotate(120deg);
}

drop-shadow

การรองรับเบราว์เซอร์

  • 18
  • 12
  • 35
  • 6

แหล่งที่มา

คุณใช้เงาตกกระทบแบบโค้งได้เหมือนกับที่ใช้ในเครื่องมือออกแบบ เช่น Photoshop ด้วย drop-shadow เงานี้จะใช้กับมาสก์อัลฟ่าซึ่งมีประโยชน์มากสำหรับการเพิ่มเงาในภาพที่ถูกตัดออก ฟิลเตอร์ drop-shadow จะใช้พารามิเตอร์เงาซึ่งมีค่าออฟเซ็ต x, ออฟเซ็ต-y, เบลอ และสีซึ่งคั่นด้วยช่องว่าง คล้ายกับ box-shadow แต่ไม่รองรับคีย์เวิร์ด inset และค่าสเปรด

.my-element {
    filter: drop-shadow(5px 5px 10px orange);
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับเงาประเภทต่างๆ ในโมดูลเงา

url

การรองรับเบราว์เซอร์

  • 5
  • 12
  • 3
  • 6

แหล่งที่มา

ฟิลเตอร์ url ช่วยให้คุณใช้ฟิลเตอร์ SVG จากองค์ประกอบหรือไฟล์ SVG ที่ลิงก์อยู่ได้ อ่านเพิ่มเติมเกี่ยวกับฟิลเตอร์ SVG ได้ที่นี่

ฟิลเตอร์ฉากหลัง

การรองรับเบราว์เซอร์

  • 76
  • 79
  • 103
  • 18

แหล่งที่มา

พร็อพเพอร์ตี้ backdrop-filter ยอมรับค่าฟังก์ชันตัวกรองทั้งหมดเหมือนกับ filter ความแตกต่างระหว่าง backdrop-filter และ filter คือพร็อพเพอร์ตี้ backdrop-filter จะใช้ตัวกรองกับพื้นหลังเท่านั้น โดยพร็อพเพอร์ตี้ filter จะนำตัวกรองไปใช้กับองค์ประกอบทั้งหมด

ตัวอย่างที่อยู่ในตอนต้นของบทเรียนนี้เป็นตัวอย่างที่ดีมาก เพราะคุณไม่ต้องการให้ข้อความถูกเบลอ และโดยหลักการแล้ว คุณไม่ต้องเพิ่มองค์ประกอบ HTML อีก ซึ่งสามารถใช้ฟิลเตอร์เฉพาะกับฉากหลังได้

ตรวจสอบความเข้าใจ

ทดสอบความรู้เกี่ยวกับตัวกรอง

ข้อใดต่อไปนี้คือฟังก์ชันตัวกรอง CSS

grayscale()
🎉
invert()
🎉
flip()
ลองอีกครั้งนะ
multiply()
ลองอีกครั้งนะ
blur()
🎉
brightness()
🎉

CSS สามารถใช้ฟิลเตอร์ SVG ได้ไหม

ได้
ฟังก์ชันตัวกรอง url() จะเปิดใช้การตั้งค่านี้
ไม่ได้
ลองอีกครั้งนะ