Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Mình xin được giải đáp thắc mắc cho bạn có nick name Facbook là Nguyễn Duy Kiệt trên Group của diễn đàn WMP. Nguyên văn câu hỏi của bạn Kiệt như sau:

"Ad cho em hoi em up san pham ra ma luc ra index no khong tu can size anh bang nhau dan đến tình trạng chiều cao các sản phẩm không giống nhau các khung nó lên xuống nhìn k đẹp mắt vậy fix kiểu gì ạ".

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Một lời khuyên dành cho bạn Kiệt là nên sử dụng tiếng Việt có dấu hoặc viết nguyên văn câu bằng tiếng Anh cho mọi người dễ theo dõi nhé, chứ nửa nạc nữa mỡ vậy đến chị Google còn chào thua ấy chứ. Giỡn thôi giờ mình vào nội dung chính nhé ^^.Kiệt là nên sử dụng tiếng Việt có dấu hoặc viết nguyên văn câu bằng tiếng Anh cho mọi người dễ theo dõi nhé, chứ nửa nạc nữa mỡ vậy đến chị Google còn chào thua ấy chứ. Giỡn thôi giờ mình vào nội dung chính nhé ^^.

Hướng dẫn resize ảnh không làm ảnh hưởng đến tỉ lệ

Như bạn đã biết, hình thì có chiều cao và chiều rộng cố định nên khi bạn điều chỉnh chiều rộng mà không điều chỉnh chiều cao thì ảnh sẽ bị bóp méo so với ảnh gốc và ngược lại.

Để khắc phục thì các trang web hiện nay áp dụng phương pháp đặt chiều cao tối đa cho hình ảnh, nếu một ảnh vượt quá kích thước chiều cao được quy định thì phần vượt mức đó sẽ bị ẩn đi, do người quản trị web sử dụng thuộc tính overflow:hidden của CSS3.người quản trị web sử dụng thuộc tính overflow:hidden của CSS3.

Cụ thể là như thế này:

Đặt max-height: ...px cho class chứa ảnh. Trong đó bạn thay chỗ "..." bằng một con số mà bạn cảm thấy hợp lý so với tỉ lệ của hình ảnh mà bạn đưa lên website. Ví dụ:max-height: ...px cho class chứa ảnh. Trong đó bạn thay chỗ "..." bằng một con số mà bạn cảm thấy hợp lý so với tỉ lệ của hình ảnh mà bạn đưa lên website. Ví dụ:

max-height: 150px;

Sau đó trong cùng class đó bạn thêm thuộc tính overflow:hidden.overflow:hidden.

overflow:hidden;

Thực chất của phương pháp này là bạn đặt chiều cao tối đa cho thẻ div chứa ảnh, nội dung nào vượt quá kích thước của thẻ div thì sẽ bị ẩn đi. Không chỉ được áp dụng đối với hình ảnh không đâu, bạn có thể sử dụng cho text hoặc bất kỳ nội dung nào.thẻ div chứa ảnh, nội dung nào vượt quá kích thước của thẻ div thì sẽ bị ẩn đi. Không chỉ được áp dụng đối với hình ảnh không đâu, bạn có thể sử dụng cho text hoặc bất kỳ nội dung nào.

Để bạn dễ hình dung mình sẽ làm ví dụ cụ thể luôn:

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Hình ảnh chưa được xử lý resize

Ở trên là hình ảnh chưa được xử lý bằng CSS. Bạn thấy nó không đồng nhất tỷ lệ đúng không nào, tấm thì cao còn tấm thì thấp làm bố cục không được đẹp.

Ở WMP thì tất cả ảnh ở bố cục trang danh sách sản phẩm thì đều thuộc class .anh, do vậy bạn chỉ cần thêm đoạn code này vào phần nhập CSS là được:class .anh, do vậy bạn chỉ cần thêm đoạn code này vào phần nhập CSS là được:

.sanpham_box .anh{max-height:150px; overflow:hidden;}

Tại sao mình thêm .sanpham_box ở trước nữa, là vì class .anh nằm trong thẻ div cha của nó là .sanpham_box, làm như vậy nó sẽ áp dụng luôn cho tất cả các trang nào có bố cục là trang danh sách sản phẩm và tránh bị xung đột với các thẻ chứa class .anh mà không phải là trang danh sách sản phẩm..sanpham_box ở trước nữa, là vì class .anh nằm trong thẻ div cha của nó là .sanpham_box, làm như vậy nó sẽ áp dụng luôn cho tất cả các trang nào có bố cục là trang danh sách sản phẩm và tránh bị xung đột với các thẻ chứa class .anh mà không phải là trang danh sách sản phẩm.

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Ở WMP các ảnh trong danh sách sản phẩm đều nều trong class="anh"

Ở hình trên bạn có thấy trong class="anh" sẽ chứa thẻ không? Đó chính là thẻ cha chứa hình ảnh sản phẩm ở bố cục của WMP đấy. Nếu bạn muốn áp dụng cho các thẻ div khác thì cứ xác định thẻ cha chứa nó rồi thêm đoạn code như ở trên là được nhé.class="anh" sẽ chứa thẻ không? Đó chính là thẻ cha chứa hình ảnh sản phẩm ở bố cục của WMP đấy. Nếu bạn muốn áp dụng cho các thẻ div khác thì cứ xác định thẻ cha chứa nó rồi thêm đoạn code như ở trên là được nhé.

Bạn nhớ thay chỗ 150px tương xứng với kích thước mà ảnh của bạn được hiển thị nhé.150px tương xứng với kích thước mà ảnh của bạn được hiển thị nhé.

Đây là hình ảnh sau khi đã thêm đoạn code ở trên vào phần tự nhập CSS:

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Tất cả đã ngay ngắn và đẹp mắt rồi!

Sau khi làm xong hướng dẫn bạn quay trở lại website của mình xem đã resize được như ý muốn chưa nhé. Ưu điểm của phương pháp này là không làm mất đi tỉ lệ kích thước của ảnh, còn nhược điểm là phần ảnh nằm ngoài thẻ cha chứa nó sẽ bị ẩn đi.

Nhưng vậy là hay rồi, phương pháp này được rất nhiều website hiện nay sử dụng nên bạn cứ yên tâm nhé!

Còn một cách khác nữa là: nếu bạn muốn hình ảnh khi upload lên website được đẹp nhất thì nên đồng bộ về tỉ lệ trước khi thực hiện thêm sản phẩm. Cách này thì tốn thời gian và "cùi bắp" hơn nhưng cái gì tự tay mình làm thì sẽ đẹp hơn và thích thú hơn phải không nào.

Nếu có thắc mắc cần được hỗ trợ xin bạn comment ở Group của WMP giúp mình.

Nguồn: Web7bWeb7b

Bài trước: Làm sao để website được Google index nhanh?

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Đã đăng vào thg 3 8, 2021 8:08 SA 4 phút đọc 4 phút đọc

Chào các bạn,

Có lẽ trong hành trình code của các bạn thì không ít lần gặp vấn đề méo ảnh do fix cứng cả width, height của ảnh nhỉ? Hoặc kể cả khi bạn set value cho 1 thuộc tính weigth hoặc height còn thuộc tính còn lại để auto thì nhiều lúc ảnh cũng không được hiển thị toàn vẹn cho lắm. Từ đó sẽ dẫn tới việc không đúng ý của người upload image. Chính vì vậy, ở bài viết này mình xin giới thiệu tới các bạn tới 1 thuộc tính css có thể giải quyết vấn đề về căn chỉnh image giúp các bạn, đó là object-fit.object-fit.

object-fit là thuộc tính hỗ trợ người dùng resize lại kích thước của hoặc sao cho vừa vặn với khung sẵn có. object-fit có các giá trị sau: là thuộc tính hỗ trợ người dùng resize lại kích thước của hoặc sao cho vừa vặn với khung sẵn có. object-fit có các giá trị sau:

  • fill: Đây là giá trị default. Lúc này image sẽ được thay đổi kích thước để có thể lấp kín element chứa nó nhiều nhất có thể. Nếu cần, hình ảnh sẽ được kéo căng hoặc thu nhỏ để vừa.: Đây là giá trị default. Lúc này image sẽ được thay đổi kích thước để có thể lấp kín element chứa nó nhiều nhất có thể. Nếu cần, hình ảnh sẽ được kéo căng hoặc thu nhỏ để vừa.
  • contain: Hình ảnh vẫn giữ nguyên tỷ lệ co giãn nhưng được thay đổi kích thước để vừa với kích thước đã cho.: Hình ảnh vẫn giữ nguyên tỷ lệ co giãn nhưng được thay đổi kích thước để vừa với kích thước đã cho.
  • cover: Hình ảnh giữ nguyên tỷ lệ co giãn và lấp đầy kích thước đã cho. Hình ảnh sẽ được cắt bớt sao cho vừa khớp với khung của element chứa nó.: Hình ảnh giữ nguyên tỷ lệ co giãn và lấp đầy kích thước đã cho. Hình ảnh sẽ được cắt bớt sao cho vừa khớp với khung của element chứa nó.
  • none: image không resize: image không resize
  • scale-down: Hình ảnh được thu nhỏ xuống phiên bản nhỏ nhất của none hoặc contain.: Hình ảnh được thu nhỏ xuống phiên bản nhỏ nhất của none hoặc contain.

Ở trong bài này mình chú trọng tới 2 giá trị hay sử dụng nhất là cover và contain.covercontain.

object-fit: cover

Như mình đã giải thích bên trên. Khi sử dụng object-fit: cover thì hình ảnh sẽ giữ nguyên tỷ lệ và sẽ được cắt bớt sao cho vừa khớp với khung của element chứa nó. Các bạn có thể xem ví dụ dưới đây:object-fit: cover thì hình ảnh sẽ giữ nguyên tỷ lệ và sẽ được cắt bớt sao cho vừa khớp với khung của element chứa nó. Các bạn có thể xem ví dụ dưới đây:

No object-fit

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

object-fit: cover

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Giải thích 1 chút với đoạn code trên: Mình có 1 ảnh. 1 bên chỉ set gái trị cho width còn height: auto, 1 bên fix cứng giá trị cho cả 2. Lúc này mình sẽ sử dụng css như sau:

.media {
	display: inline-block;
    margin: 30px;
}

.object {
	background: #E6E6FA;
    border: 4px double green;
    width: 350px;
    height: 350px;
}

img {display: block;}

.cover {object-fit: cover;}

Và kết quả hiển thị sẽ là như thế này:

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Như các bạn thấy đó, 1 phần ảnh ở bên phần object-fit: cover đã được cắt bớt sao cho vừa đủ với khung của element chứa nó.object-fit: cover đã được cắt bớt sao cho vừa đủ với khung của element chứa nó.

object-fit: contain

Ngược với object-fit: cover, object-fit: contain sẽ thay đổi kích thước của ảnh sao cho ảnh đó hiển thị đầy đủ trong khung. Thực chất có rất nhiều khách hàng họ muốn hiển thị hình ảnh theo kiểu này. Như vậy, họ không cần băn khoăn việc cut image sao cho đúng tỷ lệ, họ chỉ cần chọn ảnh đẹp, vừa ý để upload lên. Mình có 1 đoạn code như sau:object-fit: cover, object-fit: contain sẽ thay đổi kích thước của ảnh sao cho ảnh đó hiển thị đầy đủ trong khung. Thực chất có rất nhiều khách hàng họ muốn hiển thị hình ảnh theo kiểu này. Như vậy, họ không cần băn khoăn việc cut image sao cho đúng tỷ lệ, họ chỉ cần chọn ảnh đẹp, vừa ý để upload lên. Mình có 1 đoạn code như sau:

object-fit: contain

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html
Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Đoạn HTML trên mình sử dụng 2 hình ảnh có kích thước khác nhau:

  • Ảnh 1: width > height
  • Ảnh 2: height > width

Như vậy có thể nhìn thấy 1 cách trực quan nhất. Và sử dụng css như sau:

.media {
	background: #E6E6FA;
    border: 4px double green;
    margin: 30px;
    width: 350px;
    height: 350px;
    display: inline-block;
}

.media img{
  width: 100%;
  height: 100%;
  object-fit: contain;
}

Kết quả hiển thị sẽ được như thế này.

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Nhìn khá là thích mắt đúng không?

object-position

Thuộc tính object-position được sử dụng cùng với object-fit để chỉ định vị trí cho hoặc với tọa độ x/y bên trong content box.object-position được sử dụng cùng với object-fit để chỉ định vị trí cho

Hướng dẫn resize image html - thay đổi kích thước hình ảnh html

Chỉ đơn giản là như vậy thôi. Thực chất, thuộc tính này khá ít sử dụng vì hầu như ai cũng muốn ảnh căn middle là sẽ đẹp nhất.

Như vậy, qua bài viết này, các bạn có thể bổ sung thêm cho bản thân 1 cách căn chỉnh image sao cho đẹp mắt. Chúc các bạn thành công!

All rights reserved