CSS Color Module Level 4 อาจรองรับรูปแบบเลขฐานสิบหก RGBA 4 และ 8 หลัก!
สามสัปดาห์ที่ผ่านมา (วันที่ 18 ธันวาคม 2014) ร่างแบบแก้ไข CSS โมดูลสีระดับ 4ถูกส่งไปยังคณะทำงาน CSS W3C แม้ว่าในรัฐซึ่งเป็นอย่างยิ่งไวต่อการเปลี่ยนแปลงรุ่นปัจจุบันของเอกสารที่แสดงให้เห็นว่าในบ้างในอนาคตอันใกล้จะ CSS สนับสนุนทั้ง 4 และ 8 หลักเลขฐานสิบหก RGBA
หมายเหตุ: ข้อความต่อไปนี้มีเนื้อหาที่ไม่เกี่ยวข้องถูกตัดออกและแหล่งที่มาอาจได้รับการแก้ไขอย่างมากในเวลาที่คุณอ่าน (ตามที่กล่าวถึงข้างต้นเป็นร่างของบรรณาธิการและไม่ใช่เอกสารสรุป)
หากสิ่งมีการเปลี่ยนแปลงอย่างมากโปรดออกความคิดเห็นแจ้งให้ฉันทราบเพื่อให้ฉันสามารถอัปเดตคำตอบนี้!
§ 4.2 สัญลักษณ์เลขฐานสิบหก RGB: #RRGGBB
ไวยากรณ์ของ<hex-color>
เป็น<hash-token>
โทเค็นที่มีค่าประกอบด้วย 3, 4, 6 หรือ 8 หลักเลขฐานสิบหก กล่าวอีกนัยหนึ่งสีฐานสิบหกเขียนเป็นอักขระแฮช "#" ตามด้วยตัวเลข0-9
หรือตัวอักษรจำนวนหนึ่งa-f
(กรณีของตัวอักษรไม่สำคัญ - #00ff00
เหมือนกัน#00FF00
)
8 หลัก
ตัวเลข 6 ตัวแรกถูกตีความเหมือนกันกับเครื่องหมาย 6 หลัก คู่สุดท้ายของตัวเลขซึ่งตีความว่าเป็นเลขฐานสิบหกจะระบุช่องสัญญาณอัลฟาของสีโดยที่จะ00
แสดงถึงสีที่โปร่งใสอย่างสมบูรณ์และff
แสดงถึงสีทึบทั้งหมด
ตัวอย่างที่ 3
กล่าวอีกนัยหนึ่ง#0000ffcc
หมายถึงสีเดียวกันกับrgba(0, 0, 100%, 80%)
(สีน้ำเงินโปร่งใสเล็กน้อย)
4 หลัก
นี่เป็นตัวแปรที่สั้นกว่าของสัญกรณ์ 8 หลัก "ขยาย" ในลักษณะเดียวกับสัญกรณ์ 3 หลัก ตัวเลขแรกที่ตีความว่าเป็นเลขฐานสิบหกระบุช่องสีแดงของสีโดยที่0
แสดงถึงค่าต่ำสุดและf
แสดงถึงจำนวนสูงสุด ตัวเลขสามหลักถัดไปแสดงถึงช่องสีเขียวสีน้ำเงินและอัลฟาตามลำดับ
สิ่งนี้หมายความว่าสำหรับอนาคตของสี CSS?
ซึ่งหมายความว่าสมมติว่าสิ่งนี้ไม่ได้ถูกลบออกอย่างสมบูรณ์จากเอกสารระดับ 4 เราจะสามารถกำหนดสี RGBA ของเรา (หรือสี HSLA หากคุณเป็นหนึ่งในนั้น ) ในรูปแบบเลขฐานสิบหกในเบราว์เซอร์ที่รองรับสี ไวยากรณ์ของโมดูลระดับ 4
ตัวอย่าง
elem {
background: rgb(0, 0, 0); /* RGB notation (no alpha). */
background: #000; /* 3-digit hexadecimal notation (no alpha). */
background: #000000; /* 6-digit hexadecimal notation (no alpha). */
background: rgba(0, 0, 0, 1.0); /* RGBA notation. */
/* The new 4 and 8-digit hexadecimal notation. */
background: #0000; /* 4-digit hexadecimal notation. */
background: #00000000; /* 8-digit hexadecimal notation. */
}
ฉันจะสามารถใช้ผลิตภัณฑ์นี้กับผลิตภัณฑ์ที่ลูกค้าต้องเผชิญได้เมื่อใด
เรื่องตลกทั้งหมด:ขณะนี้เป็นเพียงการเริ่มต้นของปี 2015 ดังนั้นสิ่งเหล่านี้จะไม่ได้รับการสนับสนุนในเบราว์เซอร์ใด ๆ มาระยะหนึ่งแล้ว - แม้ว่าผลิตภัณฑ์ของคุณจะได้รับการออกแบบมาให้ทำงานกับเบราว์เซอร์รุ่นล่าสุดเท่านั้น ไม่เห็นการดำเนินการนี้ในเบราว์เซอร์ที่ใช้งานจริงเร็ว ๆ นี้
ดูการสนับสนุนเบราว์เซอร์ปัจจุบันสำหรับสัญกรณ์สี #RRGBGBBAA
อย่างไรก็ตามที่กล่าวว่าวิธีการทำงานของ CSS หมายความว่าเราสามารถเริ่มใช้สิ่งเหล่านี้ได้ในวันนี้! หากคุณต้องการเริ่มใช้งานจริง ๆ ในตอนนี้ตราบใดที่คุณเพิ่มเบราว์เซอร์ที่ไม่รองรับก็จะไม่สนใจคุณสมบัติใหม่จนกว่าพวกเขาจะถือว่าถูกต้อง:
figure {
margin: 0;
padding: 4px;
/* Fall back (...to browsers which don't support alpha transparency). */
background: #FEFE7F;
color: #3F3FFE;
/* Current 'modern' browser support. */
background: rgba(255, 255, 0, 0.5);
color: rgba(0, 0, 255, 0.75);
/* Fall... foward? */
background: #ffff007F; /* Or, less accurately, #ff08 */
color: #0000ffbe; /* Or #00fc */
}
<figure>Hello, world!</figure>
ตราบใดที่คุณกำลังดูคำตอบนี้บนเบราว์เซอร์ที่สนับสนุนbackground
และcolor
คุณสมบัติใน CSS <figure>
องค์ประกอบที่เป็นผลมาจากตัวอย่างข้างต้นจะมีลักษณะคล้ายกับนี้:
การใช้ Chrome เวอร์ชันล่าสุดบน Windows (v39.0.2171) เพื่อตรวจสอบ<figure>
องค์ประกอบของเราเราจะเห็นสิ่งต่อไปนี้:
การถอยกลับเลขฐานสิบหก 6 หลักจะถูกแทนที่ด้วยrgba()
ค่าและค่าเลขฐานสิบหก 8 หลักของเราจะถูกละเว้นเนื่องจากในขณะนี้ค่าตัวแยกวิเคราะห์ CSS ของ Chrome นั้นไม่ถูกต้อง ทันทีที่เบราว์เซอร์ของเรารองรับค่า 8 หลักเหล่านี้จะแทนที่ค่าเหล่าrgba()
นั้น
อัปเดต 2018-07-04: Firefox, Chrome และ Safari ได้รับการสนับสนุนในขณะนี้ Edge ยังคงหายไป แต่อาจจะติดตาม ( https://caniuse.com/#feat=css-rrggbbaa )
rgb(0xff,\x80,#44)
ตัวแทน Octal อย่างน่าประหลาดใจดูเหมือนว่า york เล็กน้อยrgb(0100, 0200,0300)
คือ#4080C0