Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> CSS

วิธีเพิ่มสีไล่โทนสีข้อความด้วย CSS

เรียนรู้วิธีเพิ่มสีการไล่ระดับสีเชิงเส้นให้กับองค์ประกอบข้อความของคุณด้วย CSS และวิธีหลีกเลี่ยงข้อผิดพลาดในการไล่ระดับสีทั่วไป

ในการเพิ่มสีข้อความแบบไล่ระดับให้กับองค์ประกอบข้อความ HTML คุณจะต้องมีคุณสมบัติ CSS ต่อไปนี้:

  • background
  • -webkit-background-clip
  • -webkit-text-fill-color

ทำไมเราใช้ background คุณสมบัติสำหรับการระบายสีข้อความ? วิธีการนี้ดูเหมือนแฮ็คเล็กน้อย แต่ฉันสัญญาว่ามันจะได้ผล!

มาสร้างตัวอย่างสั้นๆ ที่เราใช้การไล่ระดับสีเชิงเส้นจากซ้ายไปขวากับองค์ประกอบข้อความ โดยใช้สองสีต่อไปนี้ สีส้มและสีแดง:

HTML

<h2> องค์ประกอบส่วนหัวที่มีแอตทริบิวต์คลาสที่เรียกว่า text-gradient :

<h2 class="text-gradient">Gradient text color!</h2>

CSS

เพิ่มรูปแบบการไล่ระดับสีให้กับ .text-gradient คลาส:

.text-gradient {
  /* Set the background color */
  background: linear-gradient(to right, #ff8a00 0%, #dd4c4f 100%);
  /* Mask the color to the text, and remove the rest  */
  -webkit-background-clip: text;
  /* Make the text fill color value transparent so the masked background color comes through */
  -webkit-text-fill-color: transparent;
}

ผลลัพธ์:

ไล่สีข้อความ!

เยี่ยมเลย!

แต่เดี๋ยวก่อน!

คุณสังเกตเห็นปัญหาในการใช้สองสีกับองค์ประกอบข้อความหรือไม่ สีถูกทาไม่สม่ำเสมอ

linear-gradient ฟังก์ชัน CSS ใช้ค่าสีสองค่า:

  • #ff8a00 (ส้ม)
  • #DD4C4F (สีแดง)

และควรจะกระจายจาก 0 ถึง 100% เท่าๆ กัน ตามที่ระบุไว้ใน CSS:

(to right, #ff8a00 0%, #DD4C4F 100%)

ดังนั้นเราจึงต้องการ สิ่งนี้ บนองค์ประกอบข้อความ:

แต่ตัวอย่างข้อความของเราเป็นสีส้มเกือบทั้งหมด:

ไล่สีข้อความ!

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

มันเกิดขึ้นเพราะว่า <h2> องค์ประกอบส่วนหัวเป็น ระดับบล็อก องค์ประกอบโดยค่าเริ่มต้น ซึ่งหมายความว่าพื้นหลังของพวกมันครอบคลุม ความกว้างทั้งหมด ของคอนเทนเนอร์หลัก

สิ่งนี้ทำให้สีจากคลาสการไล่ระดับสี (.text-gradient ) ที่เราเพิ่มใน <h2> องค์ประกอบขยายเกินความกว้างของข้อความของคุณเนื่องจากกำหนดเป้าหมาย background ทรัพย์สิน

ฉันจะเพิ่มเส้นขอบให้กับตัวอย่างข้อความเพื่อให้ประเด็นของฉันชัดเจน:

สีข้อความไล่ระดับ!

คุณเห็นไหม

ควรตั้งค่าการไล่ระดับสีข้อความบนข้อความเท่านั้น ไม่ใช่พื้นหลัง (แต่เราจำเป็นต้องใช้ background ให้ดำเนินการได้)

ในการแก้ไขปัญหานี้ คุณต้องแทนที่ <h2> องค์ประกอบเริ่มต้น display:block การตั้งค่าโดยเพิ่ม inline-block แทน:

.text-gradient {
  background: linear-gradient(to right, #ff8a00 0%, #dd4c4f 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  display: inline-block;
}

ผลลัพธ์:

สีข้อความไล่ระดับ!

หวาน! คุณเห็นความแตกต่างหรือไม่? ตอนนี้ส่วนสีแดงของการไล่ระดับสีสองสีกำลังโผล่ขึ้นมาพอๆ กับสีส้มเพราะว่าใช้ 50-50

ความเข้ากันได้ของเบราว์เซอร์

เคล็ดลับการไล่ระดับสีได้รับการสนับสนุนในเบราว์เซอร์ WebKit เท่านั้น สำหรับเบราว์เซอร์อื่นๆ ให้ใช้ CSS color . ปกติ คุณสมบัติเป็นตัวเลือกสำรองและใช้สีที่คล้ายกับการไล่ระดับสี