2013-08-08 34 views

Odpowiedz

45

CSS nie jest rozpoznawany przez żaden analizator składni mikrodanych, o którym wiem. trzeba dodać tag meta, aby określić obraz tak:

<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 dzięki! Miło i całkowicie nieoczekiwane, nie wiedziałem, że mogę tak rzeczy. '' a obraz musi być potomkiem lub wewnątrz 'itemscope', żeby to działało poprawnie, tak myślę? –

+1

Tak, obie muszą być dziećmi z węzła itemcope, ale niekoniecznie są bezpośrednimi dziećmi. Można je zagnieżdżać w innych elementach, o ile nie zadeklarowano nowych obiektów. –

+1

FYI W metatagach HTML5 poza elementem głównym są niepoprawne. – jwillmer

9

jest to dobre wykorzystanie metatagu w obrębie elementu div zawierającego atrybut itemscope.

Obydwa atrybuty, które mają w tym meta tagu są itemprop i content

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

Można sprawdzić, że meta informacje są w rzeczywistości, czytać dobrze sprawdzając je tutaj: http://www.google.com/webmasters/tools/richsnippets

+0

Podanie elementu div a src jest nieprawidłowym html. Myślę, że bardzo się martwię, oczywiście, że to głupie czy nie? –

+1

Myślę, że sugestia Shawn była dobra: dodaj metatag, aby określić adres URL i właściwość. robiąc to, nie musisz się martwić o to, że twój znak jest doskonały. – Kristian

+1

Kristian, mylisz się. Adres URL obrazu jest dostarczany za pomocą atrybutu ** content ** w meta. 'jako element potomny elementu div NIE jest błędny. – Nepaluz

0

Dlaczego nie określić img w treści i ukryć go z CSS, czy to musi być postrzegane w DOM ale manipulować wizualnie jako background-image? Utrzymuje meta tagów ze swojego body czyni go nieco bardziej tradycyjny w moich oczach, a także zachowaniu użytkowników funkcjonalności domyślną przeglądarkę przewidywać z obrazami takimi jak zapisywania obrazu (drzewo menu na prawe kliknięcie) i kursor podświetlanie itp

<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> 

Zasób jest pobierany tylko raz, ponieważ ma tę samą ścieżkę URL, bez dodatkowych żądań HTTP.

+0

wolniej renderować stronę. – chovy

+0

@chovy jeśli treść, prędkość ładowania strony jest zanegowana przez znaczenie semantyczne. Jeśli jest czysto wizualny, powinien być w css tylko w każdym razie. Szybkość renderowania strony będzie niezauważalna, chyba że masz duże obrazy/dużą liczbę obrazów, w takim przypadku istnieją sposoby, aby to pomieścić. – darcher