Thực hành tốt nhất cho hình ảnh trình duyệt chiều rộng đầy đủ?


8

Những thực hành tốt nhất mà mọi người tuân theo đối với hình ảnh trên các khung nhìn lớn hơn là gì?

Kích thước trình duyệt nào chúng ta nên thiết kế? Có nghĩa là làm thế nào để chúng ta đối phó với màn hình độ phân giải cao và bao nhiêu% người dùng có màn hình lớn?

Làm thế nào chúng ta có thể đối phó tốt nhất với chiều cao của hình ảnh anh hùng, vì chúng ta thực sự cần phải quyết định độ phân giải màn hình nào sẽ đi cùng?

Tất nhiên, tất cả những điều này là trong khi tuân theo triết lý lưới 12 cột;)

Câu trả lời:


5

Asprilla,

Mặc dù các nhận xét trên có điểm kỹ thuật rất tốt, tôi khuyên bạn nên điều chỉnh công việc của mình cho khách hàng cụ thể, bắt đầu bằng cách xem Google Analytics - Báo cáo / Công nghệ / Trình duyệt & HĐH / Độ phân giải màn hình của trang web hiện tại của họ. Bằng cách này, bạn sẽ sử dụng thời gian và ngân sách của khách hàng một cách khôn ngoan bằng cách giải quyết các nhu cầu cụ thể của khách hàng thay vì thực hiện các hướng dẫn chung. Chúng tôi thực sự đã phải tư vấn cho khách hàng của mình đôi khi không thực hiện thiết kế đáp ứng đầy đủ chỉ vì lưu lượng truy cập không phải máy tính để bàn của họ sẽ không biện minh cho chi phí.


1
Mặc dù điều này có thể đúng trong những trường hợp hiếm hoi, nhưng đến nay nó không phải là chuẩn mực
Zach Saucier

1
"Không phải là chuẩn mực" - điều chỉnh công việc của bạn theo nhu cầu của khách hàng, đó là điểm của bài viết của tôi? Asprilla đã hỏi "bao nhiêu% người dùng có màn hình lớn" và tôi đã nhấn mạnh rằng thiết kế của cô ấy nên dựa trên dữ liệu người dùng thực tế cụ thể cho khách hàng của cô ấy, chứ không phải là các thực tiễn và thủ thuật tốt nhất có thể được thực hiện bằng CSS.
Max Tokman

3
Tôi đã tham khảo phần cuối cùng về "lưu lượng truy cập không phải máy tính để bàn của họ sẽ không biện minh cho [một thiết kế hoàn toàn đáp ứng]"
Zach Saucier

Tôi là anh ấy: 0 & anh chàng này thực sự đánh giá cao tất cả những phản hồi tuyệt vời, cảm ơn - yêu sự sẵn lòng chia sẻ kiến ​​thức của cộng đồng này ;-)
Asprilla

6

Có một số điều cần lưu ý khi phục vụ hình ảnh cho người xem.

  1. Giữ tỷ lệ hình ảnh giống với kích thước ban đầu

Chúng tôi làm điều này để ngăn hình ảnh bị lệch và để hình ảnh không bị mờ. Chúng tôi có thể giữ tỷ lệ kích thước giống nhau hoặc cắt bớt các phần không phù hợp.

Khi sử dụng một <img>yếu tố hoặc một cái gì đó tương tự, điều này khá đơn giản, nó chỉ yêu cầu sử dụng một bộ widthhoặc heightOR set max-widthhoặc max-height.

Tuy nhiên, trong trường hợp hình ảnh chiều rộng khung nhìn đầy đủ thì điều này phức tạp hơn một chút. Có một số cách CSS để làm điều đó , cách tốt nhất background-size:covergiống như ví dụ được liên kết đầu tiên trong bài viết và chương trình trả lời của Talkingrock .

Ngoài ra, giờ đây chúng tôi có khả năng sử dụng các tính năng được tìm thấy trong đặc tả hình ảnh phản hồi bao gồm srcsetvà thành <picture>phần, khá hữu ích. Tôi nói về điều này nhiều hơn sau này trong câu trả lời này.

  1. Chỉ cung cấp cho người xem hình ảnh họ cần

Để tải trang nhanh hơn và ngăn người dùng cần truyền thêm dữ liệu, điều cực kỳ quan trọng là chỉ phục vụ người dùng cuối hình ảnh mà họ cần, khi họ cần. Điều này có nghĩa là chúng tôi cung cấp cho họ một hình ảnh có cùng kích thước hoặc chỉ lớn hơn một chút so với hình ảnh mà họ đang sử dụng và chờ để tải hình ảnh sẽ không được nhìn thấy ngay lập tức cho đến sau khi tải trang ban đầu.

Chúng tôi có thể phân phát hình ảnh có kích thước phù hợp hơn bằng CSS bằng cách sử dụng @mediatruy vấn khi chúng tôi sử dụng hình nền. Các hình ảnh không có trong truy vấn phương tiện đang được sử dụng không được tải . Tôi khuyên bạn nên sử dụng ít nhất ba kích cỡ ảnh (có nghĩa là ít nhất 3 truy vấn phương tiện), nhưng có thêm một vài kích thước có thể là hiệu suất khôn ngoan. Dưới đây là một ví dụ, nhưng nó thường trùng với một số điểm dừng chung cho bố cục trang web của bạn.

@media (max-width: 320px) { /* For phones (this breakpoint is the one I'm least sure about) */
    ... background-image(imageURLforPhones.png); ...
}
@media (min-width:501px) and (max-width: 1024px) { /* For tablets and such */
    ... background-image(imageURLforTablets.png); ...
}
@media (min-width: 1025px) { /* For large screens */
    ... background-image(imageURLforLargeScreens.png); ...
}

Nhưng, hãy đối mặt với điều đó: chúng ta không giỏi trong việc chọn điểm dừng và chúng ta cũng không hoàn hảo trong việc chọn kích thước hình ảnh với một kích thước màn hình nhất định. Sẽ không tuyệt sao nếu chúng ta có thể để thứ gì đó làm điều này 'kỳ diệu' cho chúng ta?

Tin tuyệt vời là bây giờ chúng ta có thể !

Với đặc tả hình ảnh phản hồi, chúng tôi có thể để trình duyệt quyết định tất cả điều này cho chúng tôi, miễn là chúng tôi giúp nó một chút. srcsetThuộc tính hữu ích như vậy có thể được sử dụng với một <img>hoặc một <picture>phần tử. Để chuyển đổi độ phân giải như chúng ta đang làm ở đây, chúng ta nên sử dụng một <img>yếu tố.

Sau đây là một ví dụ về HTML cần thiết để cho phép srcsetthực hiện công việc của mình. Để biết thêm, bạn có thể đọc bài viết tuyệt vời của Yoav Weiss về chủ đề này. Ví dụ được lấy từ nó.

<img src="cat_500px.jpg"
     srcset="cat_750px.jpg 1.5x, cat_1000px.jpg 2x"
     width="500" alt="lolcat">

Lưu ý bên lề: Nếu bạn cần phân phát cùng một hình ảnh với các kích thước khác nhau ở các kích thước khung nhìn nhất định, bạn có thể sử dụng sizesthuộc tính.

Tôi không nói rằng việc sử dụng srcsetnhất thiết phải tốt hơn sử dụng hình nền CSS, tôi đã không thực hiện đủ công việc với nó để nói như vậy chắc chắn, nhưng nó có khả năng là một cách tốt hơn.

Ngoài ra, để giúp hiệu suất, chúng tôi có thể "tải lười biếng" những hình ảnh không thể nhìn thấy ban đầu. Điều này có nghĩa là chúng tôi ngăn chúng tải ban đầu nhưng bắt đầu tải chúng ngay khi trang ban đầu tải xong. Bằng cách đó, chúng tôi có thể khiến người xem thấy trang càng sớm càng tốt và điền vào một số chi tiết sau. Đây là một cách để làm điều đó, tôi sẽ không đi sâu vào chi tiết ngay bây giờ.

  1. Đảm bảo rằng nội dung trong hình ảnh bạn muốn hiển thị được hiển thị

Nếu chúng ta có kích thước chính xác và hiệu suất tuyệt vời thì thật tuyệt vời, nhưng nếu người xem không thấy những gì chúng ta muốn họ thấy thì không có điểm nào. Nếu chúng ta luôn hiển thị hình ảnh hoàn toàn thì đây không phải là vấn đề, nhưng nếu chúng ta phải cắt hình ảnh thì đây có thể là một vấn đề.

Chúng ta có thể cắt xén background-imagebằng cách sử dụng CSS bằng cách sử dụng background-sizebackground-position(và loại sử dụng clip, nhưng thường được sử dụng cho các hình dạng phức tạp, nghệ thuật hơn). Các chi tiết chính xác của điều này sẽ thay đổi từ hình ảnh sang hình ảnh tùy thuộc vào cách nó được thực hiện.

Tùy chọn thứ hai là sử dụng <picture>phần tử. Chúng tôi sử dụng điều này khi chúng tôi chỉ muốn một phần của hình ảnh hiển thị, như đã thấy ở đây , nhưng đây là một ví dụ đơn giản về nó trong thực tế (lấy từ bài viết tuyệt vời của Jason Grigsby về chủ đề này).

<picture>
    <source media="(min-width: 45em)" srcset="large.jpg">
    <source media="(min-width: 32em)" srcset="med.jpg">
    <img src="small.jpg" alt="The president giving an award.">
</picture>

Tôi muốn nhắc lại, nếu bạn chỉ cần thực hiện chuyển đổi độ phân giải, đừng sử dụng <picture>phần tử , chỉ cần sử dụng <img>phần tử với srcset. Lần duy nhất chúng ta cần <picture>yếu tố là cho hướng nghệ thuật này, nghĩa là cắt, v.v.

Ngoài ra còn có khả năng thực hiện một số phía máy chủ cắt xén, sử dụng mặt nạ SVG hoặc thực hiện một số nội dung với Canvas, nhưng đó là một chút nằm ngoài phạm vi của câu trả lời này.


Một số lưu ý khác

Điểm dừng cụ thể không quan trọng. Như với tất cả các thiết kế đáp ứng, điều quan trọng là phải làm tốt nhất có thể cho tất cả các chế độ xem, nhưng không có truy vấn phương tiện nào sẽ hoàn hảo cho tất cả các trang web.

Thời gian tải trang là rất quan trọng và hình ảnh có thể làm chậm rất nhiều thời gian tải ban đầu. Hãy chắc chắn rằng bạn tải hình ảnh sẽ được nhìn thấy ngay lập tức đầu tiên, sau đó những người khác. Cố gắng ngăn hình ảnh (như JPEG) hiển thị một phần của hình ảnh trong khi nó tải phần còn lại. Đồng thời tối ưu hóa tất cả các hình ảnh của bạn để chúng có kích thước tệp nhỏ nhất có thể trong khi vẫn có số lượng chất lượng bạn yêu cầu.

Điều quan trọng cần nhớ là hình ảnh, trong hầu hết các trường hợp, phải là một phụ kiện, không phải là một điều cần thiết. Tôi khuyên bạn nên luôn kiểm tra xem trang web trông như thế nào mà không có hình ảnh để đảm bảo nó có thể sử dụng được.

Lưu ý : Chúng tôi có thể sử dụng một polyfill có tên là Picturefill để phục vụ các trình duyệt cũ không hỗ trợ đặc tả hình ảnh phản hồi.


Tôi không chắc làm thế nào lười tải là một thực hành tốt nhất. Xem xét ai đó tải một trang trên máy tính bảng hoặc máy tính xách tay, đặt thiết bị ngủ, lên xe buýt, đánh thức thiết bị và cố gắng đọc. Với việc lười tải, thiếu Wi-Fi trên xe buýt sẽ khiến kết nối không thành công.
Damian Yerrick

@tepples Điểm tải lười biếng là tải những hình ảnh không nhìn thấy ngay khi trang tải xong , vì vậy nó sẽ tiếp tục tải chúng ngay khi phần đầu của trang được tải và hiển thị. Cảm ơn, tôi sẽ làm cho nó rõ ràng hơn trong câu trả lời
Zach Saucier

5

Nguyên tắc chọn kích thước của hình ảnh trình duyệt toàn bộ chiều rộng của bạn

Tôi đã học được những điều này thông qua nghiên cứu trong suốt năm ngoái và thử nghiệm trong vài ngày qua cho trường hợp sử dụng cụ thể này.

  • Chọn một hình ảnh với một tiêu điểm duy nhất, hoặc không có tiêu điểm nào cả.

  • Tệp hình ảnh nguồn của bạn sẽ cần rất lớn (tối thiểu 5000 x 5000) nếu bạn muốn phục vụ nhiều hình ảnh phụ thuộc độ phân giải.

  • Đối với phiên bản dọc, bạn nên sử dụng tỷ lệ khung hình là 9w:16h.

  • Đối với phiên bản ngang, bạn nên sử dụng tỷ lệ khung hình là 4w:3h.

  • Trong cả hai hình ảnh, có một khu vực an toàn nội dung nơi bạn có thể đảm bảo rằng một phần của hình ảnh sẽ được nhìn thấy hoặc nằm trên màn hình đầu tiên như họ nói trong Klingon.

  • Các khu vực an toàn nội dung cho cả hình ảnh, dựa trên những tỉ lệ năm: 3:2, 4:3, 5:3, 16:10& 16:9, là khoảng đầu ¾ của cả hai hình ảnh.

    nội dung khu vực an toàn trên hình ảnh ví dụ

  • srcsetlà Chén Thánh thực hiện các hình ảnh đáp ứng. <picture>có thể sẽ còn tốt hơn trong tương lai, nhưng srcsetbây giờ là vua. Kiểm tra câu trả lời của Zach Saucier để biết thêm thông tin về điều này.

Đây là một ví dụ mà tôi đã tạo ra sau khi thử nghiệm rộng rãi.

Những hình ảnh này sẽ bao phủ hầu hết mọi màn hình. Thay đổi kích thước bảng xem trước để xem các hình ảnh khác nhau. Dự phòng nên là một trong những hình ảnh tầm trung, nhưng tôi đã liên kết đến trang nơi tôi lấy hình ảnh thay vì như một loại thuộc tính nhỏ.

Tôi đã cố gắng giữ câu trả lời này ngắn gọn (viết lại 3 lần), mặc dù tôi có thể đưa ra những lời biện minh cho những khẳng định của mình, tôi không tin vì nó sẽ làm hỏng câu trả lời này rất nhiều. Tôi hy vọng bạn có thể suy ra những lời biện minh từ hình ảnh trên và xem bằng chứng từ ví dụ jsFiddle của tôi.

Trên 4:3màn hình:

nhập mô tả hình ảnh ở đây

Trên màn hình siêu rộng:

nhập mô tả hình ảnh ở đây

Trên điện thoại di động chân dung:

ví dụ di động


3

Đây là một số thông tin bổ sung mà bạn có thể thấy hữu ích.

Thống kê kích thước màn hình

Kích thước màn hình phổ biến khác nhau, vì vậy đây là một số trang web thống kê liệt kê mức độ sử dụng kích thước màn hình theo phần trăm, xu hướng trình duyệt, hệ điều hành và hơn thế nữa.

  1. http://www.w3schools.com/browsers/browsftimesisis.asp
  2. http://www.netmarketshare.com/

Anh hùng và hình ảnh lớn

Một giải pháp CSS tuyệt vời, dễ dàng tồn tại cho Hero và các hình ảnh lớn khác. Đó là background-size:cover. Nó rất hữu ích vì nó bao phủ toàn bộ div mà không làm biến dạng hình ảnh ở các kích thước màn hình khác nhau hoặc nếu div cha thay đổi hình dạng (nhiều / ít văn bản ...). Nó hoạt động bằng cách cắt các bit của hình ảnh để duy trì tỷ lệ thích hợp và bạn cũng có thể định vị nền để các phần quan trọng sẽ luôn hiển thị (trung tâm, dưới cùng bên phải ...).

Một ưu điểm khác là nó hiển thị hình ảnh dưới dạng nền, vì vậy văn bản và thông tin khác có thể dễ dàng được thêm vào div. Nó cũng hoạt động như một nền kích thước đầy đủ. Đây là một ví dụ về JSFiddle để chơi với sử dụng kích thước nền: che làm nền toàn màn hình và một ví dụ khác sử dụng div Hero . Thay đổi kích thước cửa sổ JSFiddle và chỉnh sửa định vị CSS để xem nó hoạt động.

background-image:url(http://i.imgur.com/OaE8VAj.jpg);
background-repeat:no-repeat;
background-position:bottom right;
background-size:cover;
-webkit-background-size:cover;
-moz-background-size:cover;
-o-background-size:cover;

Hỗ trợ trình duyệt cho kích thước nền (CanIUse.com) rất tốt và đây là bản sửa lỗi cho IE7 và IE8 .


Một giải pháp phổ biến cho tất cả các kích cỡ màn hình thiết bị khác nhau (máy tính để bàn / máy tính bảng / thiết bị cầm tay) là tạo một trang web Responsive tự định vị lại để phù hợp với các kích thước màn hình khác nhau từ TV màn hình lớn, đến thiết bị cầm tay. Nếu bạn quan tâm đến điều này, đây là một hướng dẫn cấp trung gian tốt: http://www.elated.com/articles/responsive-web-design-demystified/ .

Thiết kế đáp ứng hoạt động với bố cục lưới và nếu trang web dựa trên pixel, có một công thức chuyển đổi kích thước pixel thành phần trăm tương đương. Một tìm kiếm nhanh bằng cách sử dụng cụm từ "lưới 12 cột đáp ứng" và "máy tính lưới cột đáp ứng" đã cho ra rất nhiều tài nguyên hữu ích như khung lưới 12 cột, máy tính và nhiều hơn nữa. Đây là một ví dụ: http://onepcssgrid.mattimling.com/


1

Phiên bản ngắn

Cố gắng thiết kế để tương thích với độ phân giải khung nhìn nhỏ nhất:

Máy tính để bàn: 800x600 / 1024x768 (tính bằng pixel)

điện thoại di động cũ: 320x480 (tính bằng pixel)

máy tính bảng: 800x1280 (tính bằng pixel)

Bằng cách chọn độ phân giải thấp nhất, bạn đảm bảo rằng thiết kế sẽ hoạt động cho những người có độ phân giải nhỏ hơn cũng như độ phân giải lớn hơn.

Phiên bản dài

Đối với tôi có vẻ như cả hai bạn đều quan tâm đến chế độ xem cho các thiết bị khác nhau hơn là kích thước trình duyệt.

Các trình duyệt là cửa sổ hoàn toàn được sử dụng để duyệt web trực quan. Khu vực này bao gồm đầu vào url điều hướng, tab và thanh công cụ.

Khung nhìn là khu vực của trình duyệt hiển thị trang web được hiển thị. Điều này thường ở dưới thanh công cụ và url. Đây là lĩnh vực mà các nhà thiết kế thường quan tâm hơn.

Để quyết định độ phân giải màn hình của bạn, trước tiên bạn cần tự hỏi mình điều này: chủ yếu nó sẽ được xem trên cái gì? Nếu nó được sử dụng nội bộ trong một công ty, chúng ta có thể đoán nó rất có thể sẽ được sử dụng trên máy tính xách tay hoặc máy tính để bàn. Nếu nó được sử dụng khi đang di chuyển, chúng ta có thể đoán nó sẽ chủ yếu được sử dụng trên các thiết bị di động.

Xu hướng hiện nay cho thiết kế web là "Mobile First". Đây là nơi một trang web được thiết kế cho thiết bị di động trước khi được phản hồi cho các nền tảng khác. Điều này là do ngày càng có nhiều người sử dụng thiết bị di động để truy cập internet thay vì máy tính để bàn hoặc máy tính xách tay.

Bạn có thể thấy Kích thước khung nhìn rất hữu ích cho việc tìm hiểu về kích thước khung nhìn. Trang web này cung cấp chế độ xem cho nhiều thiết bị di động và một vài máy tính để bàn. Nó sẽ cho phép bạn khám phá sự đa dạng của kích thước khung nhìn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.