สีพื้นหลัง CSS แบบโปร่งใส


91

ฉันต้องการทำให้พื้นหลังของเมนูรายการหายไปโดยใช้ความทึบโดยไม่ส่งผลต่อฟอนต์ เป็นไปได้ด้วย CSS3?


ใช่แน่นอน! คุณสามารถทำได้โดยเคล็ดลับนี้stackoverflow.com/a/15351192/366884 ขอให้ โชคดี
Saud Alfadhli

คำตอบ:


120

ตอนนี้คุณสามารถใช้rgbaในคุณสมบัติ CSS ดังนี้:

.class {
    background: rgba(0,0,0,0.5);
}

0.5 คือความโปร่งใสเปลี่ยนค่าตามการออกแบบของคุณ

การสาธิตสด http://jsfiddle.net/EeAaB/

ข้อมูลเพิ่มเติม http://css-tricks.com/rgba-browser-support/


ขอขอบคุณ. แต่ฉันต้องการหมุนเครื่องหมายลูกศรเริ่มต้นในเมนูรายการโดยไม่ส่งผลกระทบต่อแบบอักษร
ศรั ณ ย่า

1
มีวิธีเขียนให้สั้นกว่านี้rgba('black', 0.5)ไหม
phil294

44

โปรดคำนึงถึงสามตัวเลือกเหล่านี้ (คุณต้องการ # 3):

1) องค์ประกอบทั้งหมดโปร่งใส:

visibility: hidden;

2) องค์ประกอบทั้งหมดค่อนข้างโปร่งใส:

opacity: 0.0 - 1.0;

3) พื้นหลังขององค์ประกอบโปร่งใสเท่านั้น:

background-color: transparent;

14

ใช่เป็นไปได้ เพียงใช้rgba-syntaxสำหรับสีพื้นหลังของคุณ

.menue{
  background-color: rgba(255, 0, 0, 0.5); //semi-transparent red
}

2
ไฮ! คุณรู้บางอย่างเกี่ยวกับนิยาม CSS 'background-color' ด้วย aplha channel แต่ใช้ค่า #HEX สำหรับสีหรือไม่?
Piotr Stępniewski

@ PiotrStępniewskiอาจจะสายไป แต่ตอนนี้มีไวยากรณ์ดังกล่าวแล้ว (ดูคำตอบของฉัน )
FZs

10

นี่คือคลาสตัวอย่างที่ใช้ CSS ชื่อสี:

.semi-transparent {
  background: yellow;
  opacity: 0.25;
}

เพิ่มพื้นหลังที่ทึบแสง 25% (สี) และ 75% โปร่งใส

CAVEAT น่าเสียดายที่ความทึบจะส่งผลต่อองค์ประกอบทั้งหมดที่แนบมา
ดังนั้นหากคุณมีข้อความในองค์ประกอบนั้นก็จะตั้งค่าข้อความให้มีความทึบ 25% เช่นกัน :-(

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

มี 3 วิธีในการตั้งค่าพื้นหลังสีน้ำเงินที่ความโปร่งใส 75% โดยไม่ส่งผลกระทบต่อองค์ประกอบอื่น ๆ :

  • background: rgba(0%, 0%, 100%, 0.75)
  • background: rgba(0, 0, 255, 0.75)
  • background: hsla(240, 100%, 50%, 0.75)

8

ในกรณีนี้background-color:rgba(0,0,0,0.5);เป็นวิธีที่ดีที่สุด ตัวอย่างเช่น:background-color:rgba(0,0,0,opacity option);


6

เพื่อให้บรรลุคุณต้องแก้ไขbackground-colorองค์ประกอบ

วิธีสร้างสีโปร่งใส (กึ่ง):

  • ชื่อสี CSS transparentจะสร้างสีที่โปร่งใสอย่างสมบูรณ์

    การใช้งาน:

      .transparent{
        background-color: transparent;
      }
    
  • การใช้rgbaหรือhslaฟังก์ชั่นสีที่ช่วยให้คุณสามารถเพิ่มช่องอัลฟา (ความทึบ) ให้กับฟังก์ชันrgbและ hslค่าอัลฟาอยู่ในช่วง 0 - 1

    การใช้งาน:

      .semi-transparent-yellow{
        background-color: rgba(255, 255, 0, 0.5);
      }
      .transparent{
        background-color:  hsla(0, 0%, 0%, 0);
      }
    
  • นอกจากโซลูชันที่กล่าวไปแล้วคุณยังสามารถใช้รูปแบบ HEX ที่มีค่าอัลฟา ( #RRGGBBAAหรือ#RGBAสัญกรณ์ )

    ค่อนข้างใหม่ (อยู่ใน CSS Color Module Level 4) แต่ได้นำไปใช้แล้วในเบราว์เซอร์ขนาดใหญ่ (ขออภัยไม่มี IE)

    สิ่งนี้แตกต่างจากโซลูชันอื่นเนื่องจากถือว่าช่องอัลฟา (ความทึบ) เป็นค่าเลขฐานสิบหกเช่นกันทำให้มีค่าตั้งแต่ 0 - 255 ( FF)

    การใช้งาน:

      .semi-transparent-yellow{
        background-color: #FFFF0080;
      }
      .transparent{
        background-color: #0000;
      }
    

คุณสามารถทดลองใช้งานได้เช่นกัน:

  • transparent:

  • rgba():

  • #RRGGBBAA:


5

ลองสิ่งนี้:

opacity:0;

สำหรับ IE8 และรุ่นก่อนหน้า

filter:Alpha(opacity=0); 

Opacity Demo จาก W3Schools


6
เว็บไซต์ที่คุณกำลังเชื่อมโยง ... มันแย่มาก
John Dvorak

1
@TheWandererr ฉันจะเริ่มด้วยการเชื่อมโยงเพจ โปรดทราบว่าควรแสดงรหัสที่เป็นแบบอย่าง แต่ ... ไม่มีการเยื้อง โปรดทราบว่าพวกเขาใช้ประเภท HTML5 ซึ่งหมายความว่าพวกเขาอัปเดตเพจหลังจากเชื่อมโยงที่นี่หรือใช้ HTML5 ครึ่งปีก่อนที่จะอยู่ในสถานะแนะนำผู้สมัครด้วยซ้ำ ถัดไป: Inline CSS ไม่ดีสำหรับการแคชและการอ่านง่าย พวกเขาต้องใช้ที่นี่เพราะมีแผงเดียวสำหรับแหล่งที่มาของหน้าทั้งหมด แต่ถ้าพวกเขาใช้แผงควบคุมหลายแผงเช่น jsfiddle (2010) และแม้กระทั่งสำหรับหน้าเว็บที่แสดงความทึบ
John Dvorak

1
@TheWandererr พวกเขาทำได้ดีกว่านี้ โดยการแสดงเอฟเฟกต์กับองค์ประกอบที่ซ้อนกันหรือโดยการอนุญาตให้โฮเวอร์แอคชันปิดใช้งานสำหรับหนึ่ง จากนั้นก็มีทั้งหมดนั่นคือ "แกล้งทำเป็นสมาคม w3 และเมื่อคุณพบว่ามีการเปิดตัว reskin อีกหรือสองตัวโดยระบุว่าเป็น w3something" - ค่อนข้างไม่ซื่อสัตย์ถ้าคุณถามฉัน พวกเขายังกล่าวด้วยว่าตัวอย่างของพวกเขาอาจ "ง่ายขึ้นสำหรับการอ่าน" และ "ตรวจสอบอย่างต่อเนื่อง" แต่การลบช่องว่างไม่ได้ช่วยให้อ่านง่ายและการรองรับ IE7 ก็ไม่ใช่เทรนด์ใหม่เช่นกัน นอกจากนี้ใครจะไม่จ่ายเงิน 100 เหรียญสำหรับกระดาษที่ทำลายความน่าเชื่อถือของพวกเขา?
John Dvorak

1
@TheWandererr IIRC พวกเขาเคยมีตัวอย่างการทดสอบ คำถามคือการผสมผสานระหว่างเรื่องไม่สำคัญและเรื่องระดับเริ่มต้น พวกเขาอาจมีบางคำตอบที่ไม่ถูกต้องเล็กน้อยเช่นกัน สำหรับส่วนความทึบของบทช่วยสอน CSS: ส่วนหัวสามส่วนสำหรับการทำให้ภาพโปร่งใส - จะเปลี่ยนเฉพาะตัวเลือก CSS เท่านั้น จากนั้นอีกสองย่อหน้า - หนึ่งเพื่อแนะนำ RGBA (ในที่สุดก็มีเพียงพื้นหลังเท่านั้นที่โปร่งใส) และอีกหนึ่งเป็น "ตัวอย่างการรวม" (เย้! นอกจากนี้ยังไม่มีการเยื้อง) แล้ว ... แค่นั้นเอง ไม่มีอะไรเพิ่มเติมเกี่ยวกับความทึบ และไม่ไม่มีหัวข้อ "ความทึบขั้นสูง" ในภายหลังเช่นกัน
John Dvorak

1
@TheWandererr มาพูดถึง Javascript กันเถอะ: ตัวอย่างทั้งหมด ได้แก่ : ไม่มีการเยื้อง (แม้แต่ในโค้ด Javascript); innerHTML =(เดี๋ยวก่อนอย่างน้อยก็ดีกว่าการแจ้งเตือนและdocument.writeพวกเขาเคยทำในปี 2012 แต่ก็ยังไม่มีการจัดการ DOM นอกบทช่วยสอน jQuery ยกเว้นบทช่วยสอนเล็กน้อยที่พวกเขาแสดงวิธีการที่เกี่ยวข้องหนึ่งรายการต่อบทและถึงแม้จะเป็นเพียงการเลือก - และใช่พวกเขาทำรายการdocument.write) บทช่วยสอน XHR ของพวกเขาใช้ readyStateChange แทน onLoad (รองรับตั้งแต่ IE7) โอ้และวิธีแก้ปัญหาสำหรับฟังก์ชันใน JSON? กำหนดให้พวกเขาได้รับการประเมินในภายหลัง
John Dvorak

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.