2010-06-16 23 views
11

Gần đây tôi đã học (X) HTML & CSS và một trong những nguyên tắc chính là HTML dành cho cấu trúc và CSS để trình bày. Với ý nghĩ đó, có vẻ như với tôi rằng một số lượng hình ảnh công bằng trên hầu hết các trang web chỉ để trình bày và như vậy phải ở trong CSS (với div hoặc span để giữ chúng trong HTML) - ví dụ logo, hình ảnh tiêu đề, hình nền.Tất cả các hình ảnh trình diễn có được xác định trong CSS không?

Tuy nhiên, trong khi các ví dụ trong sách của tôi đặt một số hình ảnh trong CSS, chúng vẫn thường trong HTML. (Tôi chỉ nói về những hình ảnh 'presentational', không phải là hình ảnh 'cấu trúc' mà là một phần quan trọng của nội dung, ví dụ như ảnh trong một trang web ảnh).

Tất cả các hình ảnh đó có trong CSS không? Hoặc có lý do kỹ thuật hay logic nào để giữ chúng trong HTML?

Cảm ơn, Grant

+0

Câu hỏi hay. Tôi đã tự hỏi điều tương tự bản thân mình theo thời gian. Nói chung tôi dính mọi thứ trong CSS nếu nó không phải là trang cụ thể (ngoại trừ các nút/liên kết hình ảnh), mặc dù tôi không biết cách xử lý những thứ như đồ họa logo. – strager

+0

Biểu trưng không phải là hiện tại. Họ giao tiếp thông tin. – Quentin

+0

Đó là một điểm hợp lý, biểu trưng có lẽ không hoàn toàn là thuyết trình trong hầu hết các trường hợp. Nhưng tôi nghĩ điểm của câu hỏi vẫn hợp lệ. –

Trả lời

10

Nếu một hình ảnh là "nội dung" nói trong một bài báo, hình ảnh biên tập, sau đó sử dụng thẻ img. Nếu nó là một phần của giao diện người dùng, chủ đề hoặc da của bạn hoặc bất cứ tên nào, thì hãy đặt nó vào CSS.

đọc đề xuất của

  • Thiết kế với tiêu chuẩn web (Zeldman)
  • Bullet Thiết kế Proof Web (Dan Cederholm)
  • CSS Mastery (Andy Clark, Andy Budd, Cameron Moll)
+0

Tôi giả định rằng bằng "Giao diện người dùng", bạn chỉ có nghĩa là phần trang trí của giao diện người dùng. Nếu có hình ảnh ví dụ được sử dụng làm liên kết, các hình ảnh đó phải ở dạng HTML. Chỉ những hình ảnh hoàn toàn trang trí và không đáng kể cho nội dung phải được đặt trong CSS. – PauliL

+0

Tôi đoán vấn đề thực sự sau đó sẽ quyết định nội dung nào. Ví dụ tôi đang làm một trang danh sách quà tặng cho một đám cưới bao gồm một số hình ảnh của các mặt hàng - không phải là một phần cốt lõi của nội dung, nhưng cũng cho là nhiều hơn là chỉ trang trí. Dù sao điều này khá nhiều xác nhận những gì tôi ban đầu mặc dù, và có vẻ là gợi ý phổ biến, vì vậy bạn nhận được câu trả lời! –

2

Một lý do để đưa những hình ảnh trong CSS có thể là để phục vụ cho các trình duyệt khác nhau từ cùng một trang web, chỉ bằng cách thay đổi CSS: ví dụ, nếu bạn phát hiện một điện thoại di động/nhúng/túi trình duyệt bạn có thể cung cấp cho họ cùng một HTML nhưng với CSS không bao gồm hình ảnh.

+0

Bạn có thể 'hiển thị: none;' trên một hình ảnh bằng cách sử dụng CSS. – strager

0

Thuộc tính src của thẻ img là bắt buộc theo HTML 4.01/XHTML 1.0 DTD. Đó là lý do tại sao nó luôn luôn được bao gồm trong HTML.

Bạn có thể chỉ định nó trong CSS cho mục đích skining, nhưng hầu hết các hình ảnh trong hầu hết các trường hợp là tĩnh và không thay đổi để đặt nó trong CSS là một bước không cần thiết.

+0

Nhưng điều gì về việc rời khỏi thẻ img hoàn toàn, và chỉ cần có (ví dụ) một khoảng, mà đã được lấp đầy với một hình ảnh trong CSS? Vì một số hình ảnh chỉ dành cho trang trí, đây là những gì dường như được gợi ý bằng cách tách HTML/CSS. Cũng theo cách này, như ChrisW đã đề xuất, bạn có thể có một hình ảnh khác hoặc không có hình ảnh tùy thuộc vào loại người xem. –

+0

Bạn có thể, nhưng nó chỉ tái phát minh ra thẻ hình ảnh một cách trung thực. Bạn cũng (tôi nghĩ) không thể sử dụng văn bản thay thế có thể quan trọng đối với khả năng truy cập. –

1

Tôi đặt chúng vào CSS nếu có thể. Một lý do là tôi nghĩ rằng họ thuộc về đó như bạn đã đề cập và một trong những khác là khả năng sử dụng sprites. Điều này có thể làm giảm đáng kể thời gian tải trang của bạn.

0

Vâng, nó phụ thuộc. Ví dụ: nếu bạn muốn thực hiện một số hiệu ứng khi chuột trên một hình ảnh, nó phải ở trong HTML. Khi bạn đặt hình ảnh trong HTML, bạn có thể định vị nó một cách tự do hơn trong CSS. Ngoài ra, theo tôi biết, hình ảnh được bao gồm CSS không được thu thập dữ liệu (Bạn có thể quan tâm đến việc biểu tượng của công ty bạn được thu thập bởi người tìm kiếm).

Nếu bạn nghĩ về khả năng truy cập, hình ảnh nhúng HTML có thể có thông tin về tiêu đề và alt. Vì vậy, ví dụ: khi bạn đặt chuột lên biểu trưng của công ty, trình duyệt có thể hiển thị phương châm của công ty bạn nếu bạn nhúng nó với thuộc tính title = "motto" trong thẻ img. Bạn không thể làm điều đó với CSS.

Ngoài ra mọi người được sử dụng để đặt hình ảnh trong HTML chứ không phải CSS và hành vi là một điều khó thay đổi.

Trong kết nối, tùy theo nhu cầu của bạn, CSS không đủ linh hoạt để phù hợp với nhu cầu của bạn và bạn nên đặt hình ảnh trong HTML. Nhưng nếu CSS phù hợp với nhu cầu của bạn cho hình ảnh giao diện người dùng, thì CSS là ý tưởng tốt hơn.

+1

bạn có thể thực hiện quá trình cuộn với css. Trên thực tế bạn có nhiều khả năng hơn với css. ví dụ như với CSS sprites, bạn có một hình ảnh chứa các trạng thái bình thường và trạng thái hover, được xếp chồng lên nhau. Trong css a: hover, bạn chỉ cần thay đổi vị trí của ảnh nền et voila. > CSS không đủ linh hoạt ... có vấn đề. Có rất nhiều sách hay về điều này, "CSS Mastery", ví dụ: – redben

+0

Vâng, chúng tôi đồng ý với Rollover. Nếu bạn muốn thực hiện rollover chỉ trên hình ảnh, bạn nên sử dụng img: hover và thẻ img phải có mặt trên (X) HTML. Nếu bạn muốn đặt một thuộc tính tiêu đề trên hình ảnh, không có cách nào để làm điều đó trên CSS, do đó, cho rằng nhiệm vụ CSS không đủ linh hoạt. CSS là rất linh hoạt nói chung, nhưng đối với một số nhiệm vụ cụ thể là không đủ linh hoạt. – Matachana

+1

Không có ý nghĩa của tôi với rollover là những thứ như trình đơn cuộn ngang, không sử dụng thẻ img. ví dụ: item 1 sau đó trong css bạn sẽ có một cái gì đó như #item {background: url (...) trên cùng bên trái;} a.item: hover {background-position: bottm left;} Bây giờ đặt tiêu đề lên hình ảnh có nghĩa là hình ảnh là nội dung, sau đó nó phải được nạp mẫu html với nội dung, không phải từ css. Điều này không có gì để làm với css là không linh hoạt cho một số nhiệm vụ cụ thể. Ít nhất đây là những gì tôi nghĩ :) – redben

0

Đôi khi, tải hình ảnh giao diện người dùng bằng CSS, cũng ngăn người dùng tải xuống hình ảnh giao diện người dùng của bạn vào ổ đĩa của họ, trong khi lưu trang.

Nhưng tất nhiên có nhiều cách khác để lưu chúng, nhưng chỉ là một điểm để thêm.

Và trình duyệt có xu hướng ưu tiên CSS hơn HTML, do đó tải hình ảnh qua CSS có thể nhanh hơn một chút so với HTML.

Các vấn đề liên quan