วิธีใช้โหมดผสมผสาน CSS

เผยแพร่แล้ว: 2023-02-16

โหมดผสมผสาน CSS เป็นวิธีง่ายๆ ในการเพิ่มเอฟเฟ็กต์รูปภาพภายในเบราว์เซอร์ของคุณ

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

โหมดผสมผสานของเบราว์เซอร์จะขจัดความจำเป็นในการใช้ซอฟต์แวร์แก้ไขภาพโดยสิ้นเชิงหรือไม่ ยังไม่ทั้งหมด และยังไม่แน่นอน แต่การรองรับ CSS และเบราว์เซอร์นั้นช่วยสนับสนุนแนวทางใหม่ๆ ในการแก้ไขรูปภาพ การตัดและการมาสก์ CSS และ SVG, โหมดผสมผสาน, การแปลง 3 มิติ และอื่น ๆ สามารถลดการพึ่งพาที่เรามีสำหรับซอฟต์แวร์แก้ไขรูปภาพได้อย่างแน่นอน เมื่อเบราว์เซอร์มีความซับซ้อนมากขึ้น เราจะเห็นศักยภาพมากขึ้นและ (หวังว่าจะ) ใช้เวลากับ Photoshop น้อยลง

CSS Blend Modes และ CSS Mix Blend Modes

บทช่วยสอนนี้จะครอบคลุมโหมดผสมผสาน CSS และวิธีการใช้งาน ในการเริ่มต้น มีตัวเลือกต่าง ๆ สองสามอย่างที่คุณควรทราบ หนึ่งคือเอฟเฟกต์ด้วย background-blend-mode และอีกอันคือ mix-blend-mode

เมื่อใช้ background-blend-mode property คุณสามารถผสมผสานเลเยอร์พื้นหลัง (ภาพหรือสี) ขององค์ประกอบได้ โหมดผสมผสานถูกกำหนดเป็นค่าและระบุวิธีการผสมหรือผสมสีของรูปภาพพื้นหลังกับสีหรือรูปภาพพื้นหลังอื่นๆ ที่อยู่เบื้องหลัง

จะเกิดอะไรขึ้นถ้าคุณต้องการผสมบางอย่าง แต่ไม่ใช่กับองค์ประกอบพื้นหลัง สามารถผสมองค์ประกอบต่างๆ เข้าด้วยกันโดยใช้คุณสมบัติ mix-blend-mode คุณสมบัตินี้อธิบายว่าการผสมควรเป็นอย่างไรระหว่างองค์ประกอบ HTML แบบเรียงซ้อน องค์ประกอบบนเลเยอร์ที่ทับซ้อนกันจะกลมกลืนกับองค์ประกอบที่อยู่ด้านล่าง รูปภาพ ข้อความ เส้นขอบ หรือหัวเรื่องจะได้รับอิทธิพลจากพร็อพเพอร์ตี้นี้

ตัวอย่างการคูณของ Adobe Photoshop

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

ใช้โหมดผสมผสาน CSS ใน Adobe Photoshop

เอฟเฟกต์แบบเดียวกันนี้สามารถทำได้ด้วย CSS ช่วยให้ปรับแต่งได้เร็วขึ้นและอัปเดตได้ง่าย

ตัวอย่างพื้นฐานของ CSS Blend Mode

ตัวอย่างง่ายๆ เพื่อดูว่าโหมดผสมผสานทำงานอย่างไร คือการผสมภาพกับ a กับ background-color ขั้นแรก ต้องประกาศเส้นทาง URL ไปยังรูปภาพ จากนั้นจึงระบุสี หลังจากตัดสินใจแล้ว จำเป็นต้องเลือกโหมดผสมผสาน ทวีคูณถูกเลือกที่นี่เพื่อแสดงว่าโหมดผสมผสานนี้ส่งผลต่อลักษณะที่ปรากฏของ background-image อย่างไร

 .simple-blended { background-image: url(image.jpg); background-color: red; background-blend-mode: multiply; }
ภาพมหาสมุทรจากฝั่งก่อนและหลังใช้โหมด multiply Blend ใน Adobe Photoshop
div ที่มีคลาส .simple-blended ถูกสร้างขึ้นเพื่อแสดงโหมดการผสมแบบทวีคูณ ทางซ้ายคือต้นฉบับและทางขวาใช้โหมดผสมผสานแล้ว

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

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

โหมดผสมผสานพื้นหลังด้วยสองภาพ

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

 .two-image-stacked { background-image: url("image.jpg"), url("image-2.jpg"); background-color: purple; background-blend-mode: lighten; }
ภาพแถวบนสุดเป็นภาพต้นฉบับที่แยกออกมาต่างหาก ภาพซ้ายแถวที่สองมีสีพื้นหลัง: สีม่วง; เพิ่ม ภาพด้านขวาไม่มีสีพื้นหลัง
ภาพแถวบนสุดเป็นภาพต้นฉบับที่แยกออกมาต่างหาก ภาพซ้ายแถวที่สองมีสีพื้นหลัง: สีม่วง; เพิ่ม ภาพด้านขวาไม่มีสีพื้นหลัง

การไล่ระดับสีในโหมดผสมพื้นหลัง

แทนที่จะใช้เพียงสีเดียว การไล่ระดับสียังสามารถให้เอฟเฟกต์พิเศษบางอย่างได้อีกด้วย

 .gradient-on-image {
 พื้นหลัง:
 การไล่ระดับสีเชิงเส้น (สีม่วง 0% สีแดง 80%)
 การไล่ระดับสีเชิงเส้น (ไปทางขวา, สีม่วง 0%, สีเหลือง 100%), url ("image.jpg");
 โหมดพื้นหลัง: หน้าจอ, ความแตกต่าง, สว่างขึ้น;
 } 
ภาพด้านซ้ายไม่ได้ใช้โหมดผสมผสาน ภาพด้านขวามีการไล่ระดับสีและใช้โหมดผสมผสานหลายโหมด
ภาพด้านซ้ายไม่ได้ใช้โหมดผสมผสาน ภาพด้านขวามีการไล่ระดับสีและใช้โหมดผสมผสานหลายโหมด

นอกจากนี้ คุณจะสังเกตเห็นว่าตัวอย่างนี้มีโหมดผสมผสานพื้นหลังหลายโหมด หากโหมดผสมผสานเดียวไม่เพียงพอ สามารถใช้หลายโหมดได้

ตัวอย่างการทำงานสามารถพบได้ใน Codepen นี้

ตัวอย่างโหมดการผสม

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

สิ่งต่างๆ จะดูเหมือนกันจาก background-blend-modes ยกเว้นโหมดเริ่มต้น สืบทอด และไม่ได้ตั้งค่า

  • เริ่มต้น: การตั้งค่าเริ่มต้นของคุณสมบัติที่ไม่ได้ตั้งค่าโหมดผสมผสาน
  • สืบทอด: สืบทอดโหมดผสมผสานจากองค์ประกอบหลัก
  • Unset: ลบโหมดผสมผสานออกจากองค์ประกอบ

ตัวอย่างพื้นฐานของโหมดการผสมแบบผสมที่มีการแยกส่วน

เมื่อทำงานกับ mix-blend-mode คุณจะต้องทำการแยกบางอย่าง อันดับแรก สิ่งสำคัญคือต้องรู้ว่า "การซ้อน" นั้นเป็นไปได้ และสิ่งนี้มีประโยชน์เมื่อทำงานกับเลเยอร์จำนวนมาก ลองนึกถึงกองกล่อง แต่ละกล่องแยกจากกลุ่ม ในแต่ละกล่องสามารถใส่ของได้หลายชั้น วิธีคิดนี้จะช่วยในการพิจารณาว่าสิ่งใดจำเป็นต้องแยกออกจากกัน

ผสมข้อความและรูปภาพด้วยโหมดผสม

ในตัวอย่างนี้ div ที่มีคลาส img-wrap มีรูปภาพ ภาพมี mix-blend-mode การคูณ โดยพื้นฐานแล้ว ภาพจะดูเหมือนตกลงไปในพื้นหลัง

เพื่อป้องกันสิ่งนี้ div img-wrap (รวมถึงข้อความส่วนหัวด้วย) ควรเป็นชุดใหม่ของเนื้อหาแบบเรียงซ้อน ดังนั้นจึงแยกออกจากพื้นหลังขององค์ประกอบเนื้อหา สิ่งนี้ทำได้ด้วยคุณสมบัติการแยก ค่าเริ่มต้นคือ auto ดังนั้น isolation: isolate; จะต้องเพิ่ม

ผสมข้อความและรูปภาพด้วยโหมดผสมผสาน

หากต้องการทดสอบ ให้แสดงความคิดเห็นเกี่ยวกับคุณสมบัติการแยกใน div ที่มีคลาสเป็น .img-wrap และตรวจสอบผลลัพธ์

นี่คือ HTML:

 <div class="img-wrap"> <img src="http://abbeyjfitzgerald.com/wp-content/uploads/2017/01/blend-mode-original.jpg" /> <h2>Outdoor Club</h2> </div>

นี่คือ CSS ให้ความสนใจเป็นพิเศษกับ isolate บน .img-wrap

 h2 { margin-bottom: 7rem; position: absolute; top: 45%; right: 0; left: 0; margin: auto; text-align: center; font-size: 4rem; padding: .5em .25em; color: #007eae; text-shadow: 2px 3px 3px #000; mix-blend-mode: overlay; } .img-wrap { width: 45%; padding: 1%; position: relative; isolation: isolate; margin: 0 auto; } .img-wrap img { max-width: 100%; mix-blend-mode: multiply; }

ตัวอย่างการทำงานสามารถพบได้ใน Codepen

ข้อความตัดออกด้วยโหมดผสมผสาน

สามารถสร้างเอฟเฟ็กต์ประเภทที่น่าสนใจได้ด้วยโหมดผสมผสาน มีวิธีง่ายๆ ในการตัดข้อความ พื้นหลังถูกซ่อนไว้โดยการเติมองค์ประกอบ h1

นี่คือ HTML:

 <div class="dark-cover"> <h1>Outdoor Club</h1> </div>

ที่มี <div> จะเต็มไปด้วยภาพพื้นหลังป่า

 .dark-cover { background-image: url(image.jpg); text-align: center; background-size: cover; }

ส่วนหัวข้างในมีสไตล์ด้วยสีพื้นหลังที่เลือกได้ ส่วนหัวมีเอฟเฟ็กต์แบบซีทรูพร้อมภาพพื้นหลังกึ่งซีทรูโดยใช้ mix-blend-mode แบบคูณ:

 .dark-cover h1 { margin: 0; font-size: 8rem; text-transform: uppercase; line-height: 1.9; color: #fff; background-color: green; mix-blend-mode: multiply; }
ตัดข้อความซึ่งอ่านว่า Outdoor Club พร้อมโหมดผสมผสานบนพื้นหลังสีเขียว เส้นต้นไม้ปรากฏขึ้นหน้าคำว่า Outdoor

ตัวอย่างการทำงานสามารถพบได้ใน Codepen

โหมดผสมผสานและ SVG

ไฟล์ SVG เป็นที่นิยมอย่างมากบนเว็บ และโหมดการผสม CSS ก็ทำงานได้ดีเช่นกัน รูปร่างสามารถกำหนดเป้าหมายได้อย่างง่ายดายเพื่อให้ได้โหมดผสมผสานที่ต้องการ

วงกลมสีที่ทับซ้อนกัน

การแยกตัวเป็นกุญแจสำคัญในตัวอย่างนี้เช่นกัน พื้นหลังสีเทาจะรบกวน

นี่คือรหัสสำหรับสร้างกลุ่มแวดวง:

 <svg> <g class="isolate"> <circle cx="60" cy="60" r="50" fill="red"/> <circle cx="100" cy="60" r="50" fill="lime"/> <circle cx="80" cy="100" r="50" fill="blue"/> </g> </svg>

นี่คือสไตล์ CSS:

 body { background: #898989; } circle { mix-blend-mode: screen; } .isolate { isolation: isolate; } /* if this was not isolated, the gray background would impact the outcome */

ตัวอย่างนี้สามารถพบได้ใน Codepen

เบราว์เซอร์รองรับโหมดพื้นหลังและโหมดผสม

การสนับสนุนเบราว์เซอร์ค่อนข้างดี แต่ไม่สอดคล้องกันทั้งหมดสำหรับโหมดพื้นหลังผสม ก่อนเริ่มการออกแบบโดยใช้คุณลักษณะนี้ โปรดตรวจสอบว่าฉันสามารถใช้ได้ไหม ขณะนี้ Edge และ Safari ยังขาดการสนับสนุน เพื่อจัดการกับการสนับสนุนที่จำกัดและขึ้นอยู่กับว่าเบราว์เซอร์ใดต้องรองรับ CSS Feature Query อาจเป็นตัวเลือกที่ดี หากไม่เป็นเช่นนั้น การนึกถึงภาพที่ "ผสมผสาน" เป็นการปรับปรุง (ไม่ใช่ข้อกำหนด) อาจเป็นทางเลือกที่ดีที่สุดของคุณ

การสนับสนุนเบราว์เซอร์จะดีกว่าเล็กน้อยสำหรับโหมดผสม เป็นการดีที่จะรับรู้ถึงการสนับสนุนบางส่วน ตัวอย่างเช่น Safari ไม่รองรับเฉดสี ความอิ่มตัวของสี หรือความส่องสว่าง

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


ขับเคลื่อนอิสระในการสร้างสรรค์ด้วย WP Engine

WP Engine ขับเคลื่อนอิสระในการสร้างบน WordPress ผลิตภัณฑ์ของบริษัทซึ่งเร็วที่สุดในบรรดาผู้ให้บริการ WordPress ทั้งหมด ขับเคลื่อนประสบการณ์ดิจิทัล 1.5 ล้านครั้ง ไซต์ชั้นนำกว่า 200,000 ไซต์ในโลกใช้ WP Engine เพื่อขับเคลื่อนประสบการณ์ดิจิทัลมากกว่าใครใน WordPress ค้นหาข้อมูลเพิ่มเติมของเราที่ wpengine.com หรือพูดคุยกับตัวแทนวันนี้!