2012-09-30 69 views
7

Tôi có hai hình ảnh, một trong số đó là một biểu tượng nhỏ được chồng lên trên hình ảnh đầu tiên. Biểu tượng của tôi có nền trắng, vì vậy khi biểu tượng được đặt trên hình ảnh khác, chúng tôi sẽ nhận được hiệu ứng này, nơi hình vuông màu trắng xuất hiện trên hình ảnh. Lý tưởng nhất, tôi không muốn hiển thị nền trắng này trên đầu trang của hình ảnh khác của tôi. Có thuộc tính CSS nào tôi có thể áp dụng cho biểu tượng của mình để làm nền trắng trong suốt không?Làm nền trắng của hình ảnh trong suốt trong css

+0

Bạn có thể làm cho nền của biểu tượng trong suốt với các công cụ như Photoshop. – Kedume

+0

Bạn không thể làm những gì bạn muốn với CSS, bạn phải sử dụng một công cụ chỉnh sửa hình ảnh, như người bình luận trước đó đã nói. – depa

Trả lời

-6

Cách tốt nhất là sử dụng phần mềm như photoshop hoặc Paint.Net.

Tôi muốn giới thiệu Paint.Net. Bạn nên xóa nền trắng trong Paint.Net và lưu img thành .png.

+8

OP yêu cầu làm điều đó với CSS. Nếu không thể, câu trả lời đúng là "không" – Paolo

+2

Đồng ý với @Paolo tại đây, bạn không trả lời câu hỏi này. –

+4

Câu trả lời như thế này thực sự làm phiền tôi bởi vì họ chỉ hoàn toàn bỏ qua câu hỏi và trả lời một cái gì đó hoàn toàn khác nhau. Ví dụ: giả sử bạn đang hotlinking biểu đồ giá cổ phiếu từ một nguồn bên ngoài. Bạn không thể sao chép chính xác tệp vào paint.net mỗi phút và sửa đổi nó, có thể bạn? –

1

số Chưa ...

Nó iss nhận được rất gần càng tốt, mặc dù. Hãy xem bài viết này về Bộ lọc CSS, một tính năng css thử nghiệm, đang thực hiện một số điều mà phía máy khách đang gọn gàng.

CSS Filters

+0

Bộ lọc CSS hiện được Bật theo Mặc định trong Firefox. –

39

Trên thực tế có một cách mặc dù chỉ được hỗ trợ trên Chrome, Firefox và Safari. Nếu màu nền là màu trắng, bạn có thể thêm thuộc tính CSS:

mix-blend-mode: multiply; 

Bạn có thể đọc thêm về nó ở đây: https://developer.mozilla.org/en-US/docs/Web/CSS/mix-blend-mode

+0

wow, tôi biết nghĩ rằng điều này thậm chí còn có thể, Nice !!! – dreamweiver

+0

Làm việc như một phép thuật! Câu trả lời chính xác! –

+0

Nhưng kỹ thuật này không hoạt động đối với trình duyệt IE! –

1

mix-blend-mode làm việc cho một số trình duyệt, nhưng chúng tôi nhận thấy rằng nó gây ra hiệu suất vấn đề trong chrome, Tôi không biết tại sao.

Hack thiên tài này, nơi bạn tạo lớp trong suốt, nhưng khi được đặt trên nền trắng, màu của nó sẽ khớp với màu của nền xung quanh.

Tôi không nhớ nơi chúng tôi tìm thấy hack, nếu ai đó biết nơi nó được xuất bản, xin vui lòng cho tôi biết trong các ý kiến ​​

Cách này "ma thuật" màu sắc được tìm thấy; là bằng cách tính toán số lượng tối đa mỗi trục màu phải là số lượng độ mờ đục được loại bỏ. Công thức cho điều này là 255 - (255 - x)/opacity. Vấn đề là: Nếu độ mờ được đặt quá thấp, công thức sẽ cho bạn số âm (không thể sử dụng được). Nếu độ mờ quá cao, bạn sẽ nhận được một số màu trên các phần không phải màu trắng của hình ảnh của bạn.
Ban đầu, chúng tôi sử dụng bảng tính để thực hiện các phép tính và thông qua thử nghiệm thủ công và lỗi, chúng tôi sẽ thấy rằng màu Goldilox.
Khi chúng tôi bắt đầu sử dụng sass, tôi nhận ra rằng điều này có thể được thực hiện với tìm kiếm nhị phân. Vì vậy, tôi tạo ra một chức năng sass mà làm công việc cho chúng tôi.

Kiểm tra this gist trên sassmeister. Chuyển màu nền của bạn vào trong hàm opacitator trên dòng 56 của mã sass. và sử dụng màu rgba được tạo trong div (hoặc phần tử giả) để phủ hình ảnh.

1

Bạn có thể tạo vùng chứa cho hình ảnh của mình. Sau đó, đối với css của vùng chứa:

overflow:hidden; height: (depends on your image, then make it a smaller px); width:100%; 

Hy vọng điều đó sẽ hữu ích. :)

Các vấn đề liên quan