Tôi đang xây dựng hình ảnh dựa trên SVG (một phần) dựa trên việc hiển thị nhiều hình ảnh liên tiếp nhanh chóng. Không thể tải các hình ảnh đủ nhanh từ mạng, vì vậy chúng phải được tải trước.Cách tốt nhất để tải trước thẻ hình ảnh SVG là gì?
Sự hiểu biết của tôi là SVG không lưu trữ đúng các thẻ image
, ít nhất trong các trình duyệt chính. Vì vậy, JavaScript tải trước các librairies và các kỹ thuật (ví dụ: this SO question) sẽ không hoạt động. (Tôi có thể nghỉ mát để sử dụng HTML lớp img
thẻ, nhưng vì các chi tiết cụ thể của ứng dụng của tôi, tôi muốn dính vào SVG tinh khiết càng nhiều càng tốt)
tôi thấy hai lựa chọn:
- Encoding sự Dữ liệu hình ảnh PNG dưới dạng base64, lưu trữ nó trong bộ nhớ dưới dạng chuỗi và sử dụng các chuỗi để lặp lại các thẻ
image
bằng cách sử dụngdata:image/png;base64
. - Phân nhóm nhiều nhóm SVG lên trên cùng với tất cả trừ một nhóm được đặt thành
display: none
hoặcvisibility: hidden
và lặp lại việc ẩn nhóm thích hợp. Tuy nhiên, tôi tin rằng nó sẽ không thể lập trình phát hiện ra rằng tất cả các hình ảnh đã hoàn thành tải trước.
Cách tốt nhất để tải trước dữ liệu hình ảnh là gì? Có lẽ tôi đã bỏ lỡ một lựa chọn dễ dàng hơn.
Thị thực của bạn phải là * tất cả * SVG? Nếu không, bạn có thể tải trước hình ảnh dưới dạng HTML, sau đó phủ chúng lên màn hình ... Nó sẽ không hoạt động nếu bạn cần chúng tích hợp hoàn toàn, ví dụ: để áp dụng đường dẫn clip. – nrabinowitz
Vâng, như tôi đã đề cập trong câu hỏi của mình, tôi rất thích nếu đó là tất cả SVG. (nếu không, nó sẽ yêu cầu tôi chia viz của tôi thành hai lớp SVG sao cho lớp hình ảnh được xếp lớp giữa chúng) –