À l'aide de données HTML-attribut pour définir CSS background-image url
J'ai l'intention de construire une coutume galerie photo pour un ami et je sais exactement comment je vais produire le HTML, mais je suis confronté à un petit problème avec le CSS.
(Je préfère ne pas avoir la page style de compter sur jQuery si possible)
Ma question concerne:
Data-Attribute
en HTML
Background-image
en CSS
J'utilise ce format pour mon html vignettes:
<div class="thumb" data-image-src="images/img.jpg"></div>
et je suppose que le CSS devrait ressembler à quelque chose comme ceci:
.thumb {
width:150px;
height:150px;
background-position:center center;
overflow:hidden;
border:1px solid black;
background-image: attr(data-image-src);/*This is the question piece*/
}
Mon objectif est de prendre le data-image-src
de la div.thumb
dans mon fichier HTML et l'utiliser pour chaque div.thumb
(s) background-image
source dans mon fichier CSS.
Ici est un Codepen Stylo afin d'obtenir une dynamique exemple de ce que je suis à la recherche de:
http://codepen.io/thestevekelzer/pen/rEDJv
Vous devez vous connecter pour publier un commentaire.
Vous finirez par être en mesure d'utiliser
mais qui n'est pas mis en œuvre n'importe où encore à ma connaissance. Ci-dessus,
url
est une option de "type-ou-unité" paramètreattr()
. Voir https://drafts.csswg.org/css-values/#attr-notation.content
de la propriété. Comme par caniuse.com/#feat=css3-attrattr()
sur toute propriété CSS n'est pas encore supporté.Il n'est pas le plus pratique pour mélanger le contenu avec le style, mais une solution pourrait être
Vous aurez besoin d'un peu de JavaScript pour que:
Étirable dans
<script>
tags en bas, juste avant la</body>
tag ou enveloppez-les dans une fonction que l'on appel une fois la page chargée.HTML
jQuery
Démo sur JSFiddle
Vous pouvez le faire aussi avec du JavaScript.
if (attr) {
obtenir en difficulté? Je ne vois pas l'intérêt dans le strict typeof et les contrôles faux, puisque à la fois fausse et undefined sont falsy valeurs.Comment sur l'utilisation de certaines Sass? Voici ce que j'ai fait pour obtenir quelque chose comme ceci (mais notez que vous devez vous créer un Style de liste pour chacun des attributs data -).
Essentiellement, vous liste l'ensemble de vos données les valeurs d'attribut. Ensuite, l'utilisation de Sass @chacune de parcourir et de sélectionner tous les attributs data-dans le code HTML. Ensuite, mettre dans la variable d'itérateur et ont-il correspondre à un nom de fichier.
De toute façon, comme je l'ai dit, vous devez faire la liste de toutes les valeurs, puis assurez-vous que vos noms de fichiers intégrer les valeurs dans votre liste.
Si vous voulais le garder avec HTML et CSS, vous pouvez utiliser les CSS Variables.
Gardez à l'esprit, css variables ne sont pas pris en charge dans IE.
Codepen: https://codepen.io/bruce13/pen/bJdoZW
CODE HTML
CODE JS
Pour ceux qui veulent abrutir réponse comme moi
Quelque chose comme la façon dont les étapes 1, 2, 3
Ici, c'est ce que j'ai fait
D'abord créer le code HTML
Alors, avant la clôture de votre balise body, ajouter ce script
J'ai inclus à la fin du corps sur le code ci-dessous un exemple
Donc attention lorsque vous copiez