Est-il possible de mettre les CSS @media règles inline?
J'ai besoin de charger dynamiquement des images des bannières dans une appli HTML5 et voudrais un couple de versions différentes pour répondre à des largeurs d'écran. Je ne peux pas déterminer correctement le téléphone de la largeur de l'écran, de sorte que la seule façon que je peux penser de le faire est d'ajouter des images d'arrière-plan d'un div et de l'utilisation de @media pour déterminer la largeur de l'écran et afficher l'image correcte.
Par exemple:
<span style="background-image:particular_ad.png; @media (max-width:300px){background-image:particular_ad_small.png;}"></span>
Est-ce possible, ou quelqu'un a d'autres suggestions?
- Déçu par les réponses? Voir ce commentaire. Il peut aider.
Vous devez vous connecter pour publier un commentaire.
Non,
@media
les règles et les requêtes de média ne peut pas exister dans les attributs de style en ligne, car ils ne peuvent contenir que desproperty: value
déclarations. Comme le spec il met:La seule façon d'appliquer des styles à un élément seulement dans certains médias est avec une règle distincte dans votre feuille de style, ce qui signifie que vous aurez besoin de venir avec un sélecteur pour elle.
Un mannequin
span
sélecteur ressemblerait à ceci, mais si vous êtes un ciblage très précis de l'élément que vous aurez besoin d'un plus spécifiques sélecteur:<style>
balise HTML ainsi. C'est une approche nécessaire pour le cas où labackground-image
est extrait de façon dynamique à partir d'une base de données. Évidemment, dans la feuille de style externe n'est pas le bon endroit pour cela.<script>
tag est souvent ignoré par les clients de messagerie lorsqu'un courriel est envoyé, afin que les gens ont tendance à l'aide de styles de ligne pour les e-mails. Et cela signifie pas les media queries. Je suis actuellement à la recherche pour les meilleures pratiques pour ce genre de situation, mais juste un match amical en heads-up.em
s, pas danspx
. De cette façon, il faudra encore travailler intelligemment lorsque vous effectuez un zoom avant.@page
à des règles. Aujourd'hui, le css de la nidification spec tire pleinement parti de ce avec le@nest
à la règle.Problème
Pas, les Requêtes de Média ne peut pas être utilisé de cette façon
Solution
Mais si vous voulez à condition d'un comportement spécifique utilisable à la volée ET réactive, vous pouvez utiliser le
style
de balisage et de ne pas l'attribut.e.j'.
Voir le code de travail en direct sur CodePen
Dans mon Blog par exemple, j'injecte un
<style>
balisage dans<head>
juste après<link>
déclaration pour les CSS et c'est de contenir le contenu d'un textarea à côté de réel contenu du textarea pour créer des extra-classe à la volée quand j'ai écrit un artitle.Remarque : le
scoped
attribut est une partie de la spécification HTML5. Si vous ne l'utilisez pas, le validateur ne vous blâme, mais les navigateurs actuellement pas en charge le véritable but : l'étendue du contenu de<style>
seulement immédiat élément parent et enfant de l'élément éléments. L'étendue n'est pas obligatoire si le<style>
élément est en<head>
balisage.Mise à JOUR: je conseille de toujours utiliser des règles dans le mobile, la première manière de code précédent doit être:
background-image
lorsque le chargement de la page..on-the-fly-behavior
être utilisé anywere mais si le mot est « ignorer » par certains navigator n'est pas un problème. <style> peut être utilisé dans <body> dans tous les navigateur, c'est le travail. C'est juste une validation w3c exigence.scoped
est une excellente solution, il n'est pas officiellement pris en charge par n'importe quel navigateur. J'espère que ça va bientôt changer.<style>
, oumedia queries
ou tout le code HTML/CSS fonctionnalité. Donc en fait le problème est plus grand que cela. Je sais seulement vous êtes en mesure de créer des e-mails affichés de la même manière sur tous les Clients de Messagerie (Gmail inclus) avec seulement HTML4 et CSS2 fonction (avec Outlook hack), mais il n'y a pas de Requêtes de Média dans ce cas.Styles en ligne actuellement, ne peuvent pas contenir autre chose que des déclarations (
property: value
paires).Vous pouvez utiliser
style
éléments appropriésmedia
attributs danshead
section de votre document.Si vous utilisez Bootstrap Responsive Utilitaires ou similaire alternative qui permet de masquer /afficher les divs selon les points de rupture, il peut être possible d'utiliser plusieurs éléments et de montrer la plus appropriée. c'est à dire
Oui, vous pouvez écrire des requêtes de média en ligne-css si vous utilisez une image de la balise. Pour les différentes tailles d'instrument, vous pouvez obtenir des images différentes.
J'ai essayé de tester cela et il n'a pas l'air de fonctionner mais je suis curieux de savoir pourquoi Apple est de l'utiliser. J'étais juste sur https://linkmaker.itunes.apple.com/us/ et remarqué dans le code généré, il prévoit que si vous sélectionnez l'option "Gros Bouton" bouton radio, ils sont en utilisant une ligne de media query.
note: ajouté des sauts de lignes pour des raisons de lisibilité, d'origine code généré est minimisé
Requêtes de média dans le style-les Attributs ne sont pas possible en ce moment.
Mais si vous deviez définir cette dynamique via Javascript.
Vous pouvez insérer la règle via JS aswell.
C'est comme si le style était là, dans la feuille de style. Donc, être conscient de la spécificité.
Hey, je viens d'écrit.
Maintenant, vous pouvez utiliser
<div style="color: red; @media (max-width: 200px) { color: green }">
ou donc.Profiter.
Vous pouvez utiliser l'image-set()
Inline médias requêtes sont possibles en utilisant quelque chose comme Point d'arrêt pour Sass
Ce blog fait un bon travail en expliquant la façon dont les media queries sont plus faciles à gérer que les blocs distincts: Il N'Y A Pas De Point D'Arrêt
Liées aux commandes de requêtes de média est l'idée de "l'élément de requêtes", quelques intéressantes lectures sont:
oui,vous pouvez le faire avec javascript par le fenêtre.matchMedia
de bureau pour le rouge la couleur du texte
tablette pour le texte de couleur verte
JS:
HTML:
si vous ajoutez la règle à l'impression.le fichier css, vous n'avez pas à utiliser @media.
Je uncluded dans le smarty foreach-je utiliser pour donner quelques éléments d'une couleur d'arrière-plan.
HTML: