Tôi có một loại trình chiếu ở nơi ảnh sẽ mở rộng lớn nhất có thể, nhưng không vượt quá chiều rộng hoặc chiều cao của chế độ xem. Về cơ bản là object-fit: contain
.Tôi có thể sử dụng <picture> cho cả hình ảnh có chiều cao và chiều rộng không?
Tôi muốn làm cho những hình ảnh này phản hồi, vì "lớn nhất có thể" cho điện thoại và màn hình lớn tuyệt vời là sự khác biệt. Tôi không thể sử dụng <img srcset>
vì ngay bây giờ, mật độ màn hình chỉ (x
mô tả) hoặc chiều rộng (w
mô tả). Vì vậy, để lại <picture>
để tự tạo logic lựa chọn.
tôi bắt đầu với:
<picture>
<source media="(orientation:portrait)"
sizes="(max-width: 1200px) 100vw, 1200px"
srcset="300.jpg 300w, 500.jpg 500w, 800.jpg 800w, 1200.jpg 1200w">
<source sizes="(max-width: 1200px) 100vw, 1200px"
srcset="300.jpg 300w, 500.jpg 500w, 800.jpg 800w, 1200.jpg 1200w">
<img src="default.jpg" alt="a man slipping on a banana peel">
</picture>
Nhưng nó không đơn giản như định hướng của màn hình, vì tỷ lệ khía cạnh thực tế tham gia có thể nhận được khá kỳ lạ, cả hai cho khung nhìn (điện thoại rất cao, thanh công cụ trình duyệt, vv) và cho chính những hình ảnh đó; cùng một hình ảnh có thể bị giới hạn theo chiều rộng trên một màn hình, nhưng bị giới hạn về chiều cao trên một màn hình khác. Tôi hình tôi có thể viết một kịch bản phân tích các tỷ lệ khung hình, nhưng tôi bị vướng vào logic để biến nó thành một danh sách có ý nghĩa srcset
và sizes
.
Lý tưởng nhất là<img srcset>
sẽ get the h
descriptor soon, nhưng tôi muốn chia sẻ thứ gì đó cùng nhau sẽ hoạt động ngay bây giờ.
Đầu của tôi hiện không hoạt động, nhưng bạn chỉ cần thay đổi kích thước và trong trường hợp bạn làm mọi thứ với JS, bạn chỉ cần tính toán một kích thước giá trị pixel, do đó không quá khó. (Tôi có thể thử làm một plugin lazySizes cho việc này). –
Nói chung nếu nó luôn luôn là khung nhìn và không phải là một phần tử nhỏ hơn bạn đang sử dụng, hơn bạn có nếu nó là chiều rộng hạn chế luôn kích thước = "100vw" và nếu nó là chiều cao hạn chế kích cỡ = "calc (100vh * (heightOfImage/widthOfImage)) " –
Đối với chứng minh cơ bản của khái niệm, vâng, nó sẽ là toàn bộ khung nhìn, nhưng trong quá trình sản xuất, nó sẽ là hình ảnh bên trong các vùng chứa khác nhau – Tigt