2013-08-08 21 views

risposta

45

CSS è non riconosciuto da alcun parser Microdata di cui sono a conoscenza. Avrete bisogno di aggiungere un meta tag per specificare l'immagine in questo modo:

<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 grazie! Bello e totalmente inaspettato, non sapevo di poter fare cose del genere. '' e l'immagine devono essere entrambi childs o all'interno di 'itemscope' per far sì che funzioni correttamente. –

+1

Sì, entrambi devono essere figli del nodo itemscope ma non necessariamente dirigere i bambini. Possono essere annidati all'interno di altri elementi purché non venga dichiarato alcun nuovo itemcope. –

+1

FYI Nei meta tag HTML5 all'esterno dell'elemento head non sono validi. – jwillmer

9

questo è un buon uso per un meta tag all'interno del div contenente per il vostro itemscope.

I due attributi che si desidera in questo meta tag sono itemprop e content

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

È possibile verificare che meta-informazioni è, infatti, leggere bene provandola qui: http://www.google.com/webmasters/tools/richsnippets

+0

Dare un div a src non è valido html, credo. Penso che mi preoccupo molto, ovviamente questo è stupido o no? –

+1

penso che il suggerimento di shawn fosse buono: aggiungi un metatag per specificare l'url e la proprietà. facendo ciò, non devi preoccuparti che il tuo markup sia perfetto – Kristian

+1

Kristian ti sbagli. L'URL dell'immagine è fornito dall'attributo ** content ** nel meta. 'come bambino per il div NON è bacato. – Nepaluz

0

Perché non specificare la img nel contenuto e nasconderlo con i CSS, se ha bisogno di essere visto nel DOM, ma manipolato visivamente come background-image? Mantiene le meta tag dal vostro body rendendolo un po 'più tradizionale nei miei occhi, così come mantenere gli utenti funzionalità del browser di default anticipare con le immagini come ad esempio il salvataggio di un'immagine (menu ad albero sulla tasto destro del mouse) e l'evidenziazione del cursore, ecc

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

La risorsa viene scaricata solo una volta poiché è lo stesso percorso URL, senza richieste HTTP aggiuntive.

+0

più lento per il rendering della pagina. – chovy

+0

@chovy se è contenuto, la velocità di caricamento della pagina è annullata dal significato semantico. Se è puramente visuale dovrebbe essere in css solo in ogni caso. La velocità di rendering della pagina sarà impercettibile a meno che non si disponga di immagini di grandi dimensioni/grandi quantità di immagini, nel qual caso ci sono modi per ovviare a questo. – darcher