2009-06-14 44 views
13

Tôi đang tạo trang web có div trong suốt.Không trong suốt div bên trong div trong suốt

Tôi muốn thêm một div không minh bạch bên trong div trong suốt đó và tôi thấy rằng nó cũng trong suốt.

Tôi cố gắng đặt div bên trong thành độ mờ: 1 nhưng nó không hoạt động.

Tôi nên làm gì?

+0

Bạn có thể hiển thị đoạn mã không? –

+0

Tôi thực sự tò mò tại sao bạn cần phải làm điều này. Nền của div là minh bạch theo mặc định. Tại sao làm cho toàn bộ điều trong suốt chỉ để hiển thị nó một lần nữa? –

+0

Sự cố phát ra nếu bạn tô màu một div và đặt độ mờ của nó để làm cho nó trong suốt. Nếu sau đó bạn muốn đặt văn bản trên div này, văn bản trong suốt và không phải lúc nào cũng mong muốn. – NilObject

Trả lời

16

Có hai cách mà tôi biết để làm việc xung quanh này:

  • minh bạch Fake trên div chứa bằng cách sử dụng một PNG trong suốt làm hình nền.
  • Phân tách các div để chúng cạnh nhau và sau đó sử dụng vị trí tương đối hoặc tuyệt đối để sắp xếp chúng.
+2

Vâng, bằng cách sử dụng một phần tử cha với vị trí: tương đối, bạn cũng có thể có một phần tử con mờ hoàn toàn định vị được đặt phía sau các phần tử con không được định vị thông thường. Điều này có lợi thế là không cần hình ảnh bên ngoài hoặc kích thước cố định. – Shog9

+0

Tùy thuộc vào tình huống của bạn, bạn nên cân nhắc, IE6 không hỗ trợ PNG trong suốt và cần trợ giúp (với các thư viện javascript bổ sung). – merkuro

+0

Có thể bị tắt tiếng, vì IE6 & 7 không hỗ trợ độ mờ CSS mà billy đang sử dụng (trừ khi tất nhiên anh ta không đề cập đến bộ lọc alpha của mình). –

2

Điều này không hoạt động trong CSS. Trong quá khứ tôi đã sử dụng định vị để đẩy div không trong suốt chứa nội dung vào div trong suốt. Tôi không thể đào lên một số mã cũ từ các dự án của tôi, nhưng tôi đã tìm thấy bài viết trên blog này:

Non-transparent elements inside transparent elements

40

tôi tìm thấy một nơi nào đó trong khi nghiên cứu CSS3 và xin lỗi mà tôi không thể tái gọi nơi để tín dụng tác giả thích hợp.

Nhưng nếu bạn đang tìm màu nền bán trong suốt trên div. Thay vì thiết lập màu và kiểm soát độ trong suốt với các thuộc tính opacity/alpha, hãy đặt thuộc tính màu nền trực tiếp bằng định dạng rgba (rrr, ggg, bbb, aaa). Điều này sẽ ngăn chặn bất kỳ phần tử con nào thừa hưởng bất kỳ sự minh bạch nào.

ví dụ:

#mydiv { background-color: rgba(128,64,0,0.75); } 
+0

Câu trả lời hay, điều này sẽ có dấu màu xanh lá cây. –

+0

Giải pháp tuyệt vời! Có rất nhiều trang web trên mạng nói rằng không có giải pháp cho vấn đề này! – DanielX2010

+0

Tốt. Thật không may, màu sắc css3 chỉ hoạt động trên ie9 + – taseenb

1

sử dụng nền, đệm, nền gốc để kiểm soát phần đệm và chỉ mục z để kiểm soát vị trí của phần tử. Ví dụ:

#mydiv{ background: white; padding:100px; background-origin:border-box; z-index:1} 
Các vấn đề liên quan