Hình nền css chiều cao đầy đủ
Ahmad Shadeed là một nhà thiết kế UX và nhà phát triển front-end đến từ Palestine. Anh ấy thích làm việc với các dự án thiết kế và phát triển front-end đầy thách thức. Anh ấy đã viết một … Thông tin thêm về Ahmad ↬ Show
Bản tin emailEmail (đập vỡ) của bạn
Mẹo hàng tuần về giao diện người dùng & UX.
Không phải lúc nào chúng tôi cũng có thể tải các hình ảnh có kích thước khác nhau cho một phần tử HTML. Nếu chúng tôi sử dụng chiều rộng và chiều cao không tỷ lệ với tỷ lệ khung hình của hình ảnh, hình ảnh có thể bị nén hoặc kéo dài. Điều đó không tốt, và nó có thể được giải quyết bằng cách sử dụng 2 cho phần tử 5 hoặc bằng cách sử dụng 3Đầu tiên, hãy xác định vấn đề. Xét hình sau Tại sao chuyện này đang xảy ra? Một hình ảnh sẽ có tỷ lệ khung hình và trình duyệt sẽ lấp đầy hộp chứa bằng hình ảnh đó. Nếu tỷ lệ khung hình của hình ảnh khác với chiều rộng và chiều cao được chỉ định cho nó, thì kết quả sẽ là hình ảnh bị nén hoặc kéo dài Chúng ta thấy điều này trong hình sau Giải phápKhông phải lúc nào chúng ta cũng cần thêm hình ảnh có kích thước khác khi tỷ lệ khung hình của hình ảnh không khớp với chiều rộng và chiều cao của phần tử chứa. Trước khi đi sâu vào các giải pháp CSS, tôi muốn cho bạn thấy cách chúng tôi đã từng làm điều này trong các ứng dụng chỉnh sửa ảnh Bây giờ chúng ta đã hiểu cách thức hoạt động của nó, hãy tìm hiểu cách thức hoạt động của nó trong trình duyệt. (Cảnh báo tiết lộ. Nó dễ hơn. ) CSS .card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }2Thuộc tính 2 xác định cách thay đổi kích thước nội dung của phần tử được thay thế, chẳng hạn như 5 hoặc 0 để phù hợp với vùng chứa của nó. Giá trị mặc định cho 2 là 2, điều này có thể khiến hình ảnh bị nén hoặc kéo dàiHãy đi qua các giá trị có thể Thêm sau khi nhảy. Tiếp tục đọc bên dưới ↓ Gặp gỡ Hội thảo trực tuyến Smashing về giao diện người dùng & giao diện người dùng, với các bài học thực tế, phiên trực tiếp, bản ghi video và phần Hỏi & Đáp thân thiện. Trên các hệ thống thiết kế, UX, hiệu suất web và CSS/JS. Với Brad Frost, Stephanie Troeth và rất nhiều người khác Chuyển đến hội thảo ↬Giá trị có thể có cho .card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }2.card__thumb img { aspect-ratio: 4 / 3; }4Trong trường hợp này, hình ảnh sẽ được thay đổi kích thước để phù hợp với tỷ lệ khung hình của vùng chứa. Nếu tỷ lệ khung hình của hình ảnh không khớp với tỷ lệ khung hình của vùng chứa, thì nó sẽ được đóng hộp chữ 4, hình ảnh sẽ được đóng hộp thư hoặc thay đổi kích thước cho phù hợp. (Xem trước lớn).card__thumb img { aspect-ratio: 4 / 3; }6Tại đây, hình ảnh cũng sẽ được thay đổi kích thước để phù hợp với tỷ lệ khung hình của vùng chứa và nếu tỷ lệ khung hình của hình ảnh không khớp với tỷ lệ khung hình của vùng chứa, thì nó sẽ được cắt bớt cho phù hợp. 6, hình ảnh sẽ được cắt bớt để phù hợp hoặc thay đổi kích thước cho phù hợp. (Xem trước lớn).card__thumb img { aspect-ratio: 4 / 3; }8Với điều này, hình ảnh sẽ được thay đổi kích thước để phù hợp với tỷ lệ khung hình của vùng chứa nó và nếu tỷ lệ khung hình của hình ảnh không khớp với tỷ lệ khung hình của vùng chứa, thì nó sẽ bị nén hoặc kéo dài. Chúng tôi không muốn điều đó 8, hình ảnh sẽ được nén, kéo dài hoặc thay đổi kích thước cho phù hợp. (Xem trước lớn).card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }80Trong trường hợp này, hình ảnh sẽ không bị thay đổi kích thước, không bị kéo giãn hay bị nén. Nó hoạt động giống như giá trị 81, nhưng nó không tôn trọng tỷ lệ khung hình của vùng chứa nó 80, hình ảnh sẽ không bị thay đổi kích thước nếu kích thước của nó không giống nhau. (Xem trước lớn)Ngoài 2, chúng tôi cũng có thuộc tính 84, chịu trách nhiệm định vị một hình ảnh trong vùng chứa của nóGiá trị có thể cho .card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }84Thuộc tính 84 hoạt động tương tự như thuộc tính 87 của CSSCác từ khóa 88 và 89 cũng hoạt động khi tỷ lệ khung hình của hộp chứa lớn hơn theo chiều dọc 80 (trái) và 81 (phải). (Xem trước lớn)CSS .card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }3Với 3, điểm khác biệt đầu tiên là chúng ta đang xử lý nền chứ không phải phần tử HTML ( 5)Giá trị có thể có cho .card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }3Các giá trị có thể có của 3 là 87, 88 và 81.card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }80Với 87, hình ảnh sẽ giữ nguyên kích thước mặc định.card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }82Tại đây, hình ảnh sẽ được thay đổi kích thước để phù hợp với vùng chứa. Nếu tỷ lệ khung hình không giống nhau, thì hình ảnh sẽ được che cho phù hợp 82, đảm bảo xem xét tỷ lệ khung hình của hình ảnh. (Xem trước lớn).card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }84Trong trường hợp này, hình ảnh sẽ được thay đổi kích thước để vừa với vùng chứa. Nếu tỷ lệ khung hình bị tắt thì hình ảnh sẽ có hộp chữ như minh họa trong ví dụ tiếp theo 84 thay đổi kích thước hình ảnh để vừa với vùng chứa. (Xem trước lớn)Đối với 87, nó tương tự như cách thức hoạt động của 84. Sự khác biệt duy nhất là vị trí mặc định của 84 khác với vị trí của 87Khi nào thì không nên sử dụng .card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }2 hoặc .card__thumb { position: relative; padding-bottom: 75%; height: 0; } .card__thumb img { position: absolute; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; }3Nếu phần tử hoặc hình ảnh được cung cấp chiều cao cố định và áp dụng 82 hoặc 6 cho phần tử hoặc hình ảnh, thì sẽ có một điểm mà hình ảnh sẽ quá rộng, do đó mất đi các chi tiết quan trọng có thể ảnh hưởng đến cách người dùng cảm nhận hình ảnhXem xét ví dụ sau trong đó hình ảnh có chiều cao cố định 2Nếu vùng chứa của thẻ quá rộng, nó sẽ dẫn đến những gì chúng ta thấy ở bên phải (hình ảnh quá rộng). Đó là bởi vì chúng tôi không chỉ định tỷ lệ khung hình Chỉ có một trong hai bản sửa lỗi cho điều này. Đầu tiên là sử dụng hack đệm để tạo tỷ lệ nội tại
Cách khắc phục thứ hai là sử dụng thuộc tính CSS mới 44. Sử dụng nó, chúng ta có thể làm như sau________số 8Ghi chú. Tôi đã viết chi tiết về bất động sản 44 trong trường hợp bạn muốn tìm hiểu về nó. “Hãy tìm hiểu về tỷ lệ khung hình trong CSS”Các trường hợp sử dụng và ví dụHình đại diện người dùngTrường hợp sử dụng hoàn hảo cho 6 là hình đại diện của người dùng. Tỷ lệ khung hình được phép cho hình đại diện thường là hình vuông. Đặt một hình ảnh trong một thùng chứa hình vuông có thể làm biến dạng hình ảnh 2 và có 6. (Xem trước lớn) 8Danh sách LogoLiệt kê các khách hàng của một doanh nghiệp là quan trọng. Chúng tôi sẽ thường sử dụng logo cho mục đích này. Vì các logo sẽ có các kích cỡ khác nhau, nên chúng tôi cần một cách để thay đổi kích thước của chúng mà không làm biến dạng chúng Rất may, 4 là một giải pháp tốt cho điều đó 8 4 có thể giúp chúng tôi thay đổi kích thước biểu trưng của khách hàng mà không làm biến dạng chúng. (Xem trước lớn)Hình thu nhỏ bài viếtĐây là một trường hợp sử dụng rất phổ biến. Vùng chứa cho hình thu nhỏ của bài viết có thể không phải lúc nào cũng có hình ảnh có cùng tỷ lệ khung hình. Sự cố này phải được hệ thống quản lý nội dung (CMS) khắc phục ngay từ đầu, nhưng không phải lúc nào cũng vậy 8 6. (Xem trước lớn)nền anh hùngTrong trường hợp sử dụng này, quyết định sử dụng phần tử 5 hay nền CSS sẽ phụ thuộc vào những điều sau
Dựa trên câu trả lời của chúng tôi, chúng tôi có thể quyết định sử dụng tính năng nào. Nếu hình ảnh là quan trọng 4 8Nếu hình ảnh mang tính trang trí, chúng ta có thể sử dụng 83 0CSS ngắn hơn trong trường hợp này. Đảm bảo rằng mọi văn bản được đặt trên hình ảnh đều có thể đọc được và truy cập được Thêm nền vào hình ảnh với .card__thumb img { aspect-ratio: 4 / 3; }4Bạn có biết rằng bạn có thể thêm màu nền cho 5 không? Trong ví dụ bên dưới, chúng ta có một lưới các hình ảnh. Khi tỷ lệ khung hình của hình ảnh và vùng chứa khác nhau, màu nền sẽ xuất hiện 4 4 để thêm màu nền cho hình ảnh. (Xem trước lớn)Phần tử videoBạn đã bao giờ cần một 0 làm nền chưa? 0 2 mặc định cho phần tử 0 là 88. Như bạn có thể thấy ở đây, video không bao gồm bối cảnh anh hùng, mặc dù nó có 02, 03 và 04. (Xem trước lớn)Để làm cho nó bao phủ toàn bộ chiều rộng và chiều cao của cha mẹ, chúng ta cần ghi đè giá trị mặc định 2 1Phần kết luậnNhư chúng ta đã thấy, cả 2 và 3 đều rất hữu ích để xử lý các tỷ lệ khung hình khác nhau của hình ảnh. Không phải lúc nào chúng tôi cũng có quyền kiểm soát việc đặt kích thước hoàn hảo cho từng hình ảnh và đó là lúc hai tính năng CSS này tỏa sángLời nhắc thân thiện về ý nghĩa trợ năng của việc chọn giữa phần tử 5 và nền CSS. Nếu hình ảnh hoàn toàn là trang trí, thì hãy sử dụng nền CSS. Mặt khác, một 5 phù hợp hơn |