2013-08-08 31 views

Trả lời

45

CSS không được nhận dạng bởi bất kỳ trình phân tích cú pháp Microdata nào mà tôi biết. Bạn sẽ cần phải thêm một thẻ meta để xác định hình ảnh như thế này:

<div itemscope itemtype="http://schema.org/Article"> 
    <meta itemprop="image" content="bg.jpg"></meta> 
    <div style="background-image:url('bg.jpg')"></div> 
</div> 
+0

Ahh cảm ơn! Đẹp và hoàn toàn bất ngờ, không biết tôi có thể làm những thứ như thế này. '' và cả hai hình ảnh đều cần phải là childs hoặc bên trong 'itemscope' để làm việc này đúng không? –

+1

Vâng, cả hai đều cần phải là con của nút itemscope nhưng không nhất thiết phải hướng dẫn trẻ em. Chúng có thể được lồng vào bên trong các phần tử khác miễn là không có itemscope mới được khai báo. –

+1

FYI Trong thẻ meta HTML5 bên ngoài phần tử đầu không hợp lệ. – jwillmer

9

đây là cách sử dụng tốt cho thẻ meta trong div chứa cho itemscope của bạn.

Hai thuộc tính mà bạn muốn ở chỗ thẻ meta là itempropcontent

<meta itemprop="image" content="/some/url/to/an/image.gif" /> 

Bạn có thể xác minh rằng thông tin meta được, trên thực tế, đọc tốt bằng cách kiểm tra nó ở đây: http://www.google.com/webmasters/tools/richsnippets

+0

Cho phép div a src là html không hợp lệ, tôi đoán vậy. Tôi nghĩ rằng tôi lo lắng nhiều, rõ ràng điều này là ngu ngốc hay không? –

+1

Tôi nghĩ đề nghị của shawn là tốt: thêm thẻ meta để chỉ định url và thuộc tính. bằng cách đó, bạn không cần phải lo lắng về việc đánh dấu của bạn là hoàn hảo – Kristian

+1

Kristian bạn đã sai. Url cho hình ảnh được cung cấp bởi thuộc tính ** content ** trong meta.' 'như một đứa trẻ cho div không phải là lỗi. – Nepaluz

0

Tại sao không xác định img trong nội dung và giấu nó với CSS nếu nó cần phải được nhìn thấy trong DOM nhưng thao tác trực quan như một background-image? Giữ các thẻ meta ra khỏi số body của bạn làm cho nó hơi truyền thống hơn trong mắt cũng như giữ lại chức năng trình duyệt mặc định mà người dùng dự đoán với hình ảnh như lưu hình ảnh (cây menu khi nhấp chuột phải) và tô sáng con trỏ, v.v.

<div itemscope itemtype="http://schema.org/Article"> 

    <style scoped> 
    /* I only use scoped to avoid excess classing in this demo. 
     Read: http://caniuse.com/#feat=style-scoped */ 
     figure 
     { position: relative; 
     background-size: cover; 
     background-position: center center } 

     figure > img[itemprop=image] 
     { opacity: 0; 
     position: absolute; 
     left: 0; top: 0; 
     width: 100%; height: 100% } 

     .specific-image 
     { background-image: url(/path-to/image.jpg); 
     width: 300px; height: 150px } 
    </style> 

    <figure class="specific-image"> 
     <img itemprop="image" src="/path-to/image.jpg" width="150" height="150" alt="image"> 
    </figure> 

</div> 

Tài nguyên chỉ được tải xuống một lần vì đó là cùng một đường dẫn URL, không có yêu cầu HTTP bổ sung nào.

+0

chậm hơn để hiển thị trang. – chovy

+0

@chovy nếu nội dung của nó, tốc độ tải trang bị phủ định theo nghĩa ngữ nghĩa. Nếu nó hoàn toàn trực quan, nó chỉ có trong css. Tốc độ hiển thị trang sẽ không đáng kể trừ khi bạn có hình ảnh lớn/lượng lớn hình ảnh, trong trường hợp đó, có nhiều cách để điều chỉnh. – darcher

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