J2TEAM Security: A must-have extension for Chrome users. Install now!

Thiết kế CSS cho hình ảnh bị lỗi

Chúng ta có thể sử dụng CSS để áp đặt kiểu dáng vào phần tử để cung cấp một trải nghiệm tốt hơn so với mặc định. Thiết kế CSS cho hình ảnh bị lỗi.
4 min read
Styling Broken Images

Những hình ảnh lỗi xấu xí.

This image is broken! Ugly, isn’t it?

Nhưng chúng không nhất thiết phải như vậy. Chúng ta có thể sử dụng CSS thiết lập kiểu dáng vào phần tử <img> để cung cấp một trải nghiệm tốt hơn so với mặc định.

Hai thông tin về phần tử <img>


Để hiểu cách mà chúng ta có thể thiết kế kiểu dáng cho các hình ảnh lỗi, dưới đây là hai thông tin về cách mà các phần tử <img> hoạt động mà chúng ta cần phải hiểu trước:

  1. Chúng ta có thể áp dụng phong cách kiểu chữ thông thường có liên quan tới phần tử <img>. Những phong cách này sẽ được áp dụng cho văn bản thay thế (alt text) và sẽ không ảnh hưởng đến hình ảnh không bị lỗi.
  2. Phần tử <img> là một phần tử bị thay thế. Đây là một phần tử "có kiểu dáng và kích thước được định nghĩa bởi một nguồn tài nguyên bên ngoài" (Sitepoint). Bởi vì thành phần được điều khiển bởi một nguồn bên ngoài, các phần tử pseudo :before:after không hoạt động với nó. Tuy nhiên, khi hình ảnh bị lỗi và không thể nạp được, những phần tử pseudo này có thể xuất hiện.

Nhờ vào hai thông tin này, chúng ta có thể áp dụng phong cách cho phần tử <img> mà chỉ xuất hiện khi ảnh bị lỗi mà không ảnh hưởng tới các hình ảnh không bị lỗi.

Áp dụng trong thực tế


Sử dụng thông tin trên, dưới đây là một vài ví dụ về cách mà chúng ta có thể thiết kế phong cách cho các hình ảnh lỗi, sử dụng liên kết lỗi sau:

<img src="http://bitsofco.de/broken.jpg" alt="Kanye Laughing">

Thêm thông tin hữu ích


Một cách để chúng ta xử lý các hình ảnh bị lỗi là cung cấp một tin nhắn tới người dùng nói rằng hình ảnh đó đã bị lỗi. Sử dụng biểu thức attr(), chúng ta thậm chí có thể hiển thị liên kết tới hình ảnh bị lỗi.

Thiết kế CSS cho hình ảnh bị lỗi

img {  
  font-family: 'Helvetica';
  font-weight: 300;
  line-height: 2;  
  text-align: center;

  width: 100%;
  height: auto;
  display: block;
  position: relative;
}

img:before {  
  content: "We're sorry, the image below is broken :(";
  display: block;
  margin-bottom: 10px;
}

img:after {  
  content: "(url: " attr(src) ")";
  display: block;
  font-size: 12px;
}

Thay thế văn bản thay thế mặc định


Ngoài ra, chúng ta có thể sử dụng phần tử pseudo để thay thế văn bản thay thế mặc định sẽ hiển thị.

Thiết kế CSS cho hình ảnh bị lỗi

img { /* Same as first example */ }

img:after {  
  content: "\f1c5" " " attr(alt);

  font-size: 16px;
  font-family: FontAwesome;
  color: rgb(100, 100, 100);

  display: block;
  position: absolute;
  z-index: 2;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #fff;
}


Phong cách bổ sung


Ngoài việc (hoặc thay vì) hiển thị một tin nhắn tùy chỉnh, chúng ta có thể sử dụng phần tử pseudo để áp dụng nhiều phong cách hơn cho ảnh bị lỗi.

Thiết kế CSS cho hình ảnh bị lỗi

img {  
  /* Same as first example */
  min-height: 50px;
}

img:before {  
  content: " ";
  display: block;

  position: absolute;
  top: -10px;
  left: 0;
  height: calc(100% + 10px);
  width: 100%;
  background-color: rgb(230, 230, 230);
  border: 2px dotted rgb(200, 200, 200);
  border-radius: 5px;
}

img:after {  
  content: "\f127" " Broken Image of " attr(alt);
  display: block;
  font-size: 16px;
  font-style: normal;
  font-family: FontAwesome;
  color: rgb(100, 100, 100);

  position: absolute;
  top: 5px;
  left: 0;
  width: 100%;
  text-align: center;
}

Nếu hình ảnh không bị lỗi, với tất cả phong cách tương tự áp dụng với phần tử, hình ảnh được hiển thị bình thường. Các phần tử pseudo không được tạo ra trong mọi trường hợp.

Thiết kế CSS cho hình ảnh bị lỗi

Khả năng tương thích trình duyệt


Thật không may, không phải tất cả trình duyệt xử lý các hình ảnh lỗi trong cùng một cách. Đối với một số trình duyệt, kể cả khi hình  ảnh không hiển thị, các phần tử pseudo cũng không hiển thị.

Dưới đây là những gì tôi thấy từ những thử nghiệm của mình:

Thiết kế CSS cho hình ảnh bị lỗi


* Văn bản thay thế sẽ chỉ hiện thị nếu chiều rộng màn hình đủ lớn để chứa nó. Nếu không có chiều rộng được quy định cho hình ảnh, văn bản thay thế sẽ không hiển thị.

** Kiểu Font không được áp dụng.

Đối với những trình duyệt không hỗ trợ phần tử pseudo thì những phong cách áp dụng được bỏ qua. Điều này có nghĩa rằng chúng ta vẫn có thể áp dụng các phong cách và phục vụ một trải nghiệm thú vị hơn cho người dùng trên một trình duyệt hỗ trợ.

Dịch bởi Juno_okyo theo bitsofco.de
Leader at J2TEAM. Website: https://j2team.dev/

Bạn có thể thích những bài đăng này

  • Khác nhau giữa thư viện jQuery 1.x và 2.x Nếu như Python có Python 2 và 3 được phát triển song song thì thư viện jQuery cũng tương tự, có phiên bản 1.x và 2.x Mà dân IT như tôi…
  • 1. Kẻ thù lớn nhất của developer là tester 2. Ngu dốt lớn nhất của developer là viết chương trình "Hello world" bị lỗi 3. Thất bại lớn nhất của developer là được thăng c…
  • Sublime Text 3 phiên bản portable đã kích hoạt bản quyền sẵn, các bạn chỉ cần tải về giải nén là có thể dùng được ngay. Screenshot: Download: Sublime Text 3 Portable Fu…
  • Tối ưu và tăng tốc xử lý khi lập trình PHP không chỉ giúp website chạy ổn định mà còn giúp tiết kiệm tài nguyên xử lý của máy chủ website. Khi học và làm việc với PHP lần đầu, đ…
  • PHP Debugbar là gì? PHP Debugbar là một thư viện giúp bạn có thể debug PHP như console của Dev Tools khi debug JavaScript. Trong bài này mình sẽ hướng dẫn các bạn cách tích hợp th…
  • Trong CodeIgniter, khi bạn thiết lập cấu hình bật bảo vệ CSRF (Cross Site Request Forgery) trong config.php $config['csrf_protection'] = TRUE; thì mọi truy vấn từ client tới se…

Đăng nhận xét

Cảm ơn bạn đã đọc bài viết!

- Bạn có gợi ý hoặc bình luận xin chia sẻ bên dưới.

- Hãy viết tiếng Việt có dấu nếu có thể!