Je ne suis pas très compétent en javascript, alors soyez indulgent avec moi. Safari 6 et versions antérieures et inférieures Android et peut-être plus ne prennent pas en charge la valeur CSS VH. Mon ID ou classe DIV # n'est pas à la hauteur de la fenêtre d'affichage. Ci-dessous, un lien vers une page. j'ai trouvé des informations utiles, mais je ne sais vraiment pas comment l'utiliser avec une valeur css:
Vérifiez si une valeur css est prise en charge
Voici le code donné comme raccourci pour vous:
if('opacity' in document.body.style) {
// do stuff
}
function isPropertySupported(property{
return property in document.body.style;
}
Dans les commentaires du lien que j'ai joint ci-dessus, quelqu'un demande comment vérifier si une valeur CSS est prise en charge et la réponse est: "Vous la définissez, puis relisez la valeur et vérifiez si le navigateur l'a conservée." Maintenant, je suis sûr que ce serait une information utile si je connaissais plus de javascript que je viens de commencer à apprendre.
C'est ce que j'ai à l'esprit mais je ne sais vraiment pas comment faire cela. Vérifiez si div # id ou div.class a une valeur vh css. Vérifiez si la valeur css est prise en charge par le navigateur. Si c'est pris en charge, continuez à charger. Si non pris en charge, changez l'ID ou la classe.
Donc, pour résumer ma question:
Comment puis-je vérifier si une valeur css est prise en charge par le navigateur en utilisant javascript ou jquery?
L'orientation vers la réponse est vraiment appréciée. Merci de votre aide.
Je suppose que vous vouliez vérifier si la valeur vh
est prise en charge, pas si spécifiquement DIV#id
le supporte?
function cssPropertyValueSupported(prop, value) {
var d = document.createElement('div');
d.style[prop] = value;
return d.style[prop] === value;
}
cssPropertyValueSupported('width', '1px');
// => true
cssPropertyValueSupported('width', '1vh');
// => maybe true, maybe false (true for me)
cssPropertyValueSupported('width', '1foobar');
// => false
Il y a la nouvelle API CSS.supports . Pris en charge dans la plupart des navigateurs sauf IE .
console.log(
// CSS.supports(property, value)
1, CSS.supports("text-decoration-style", "blink"),
2, CSS.supports("display", "flex"),
3, CSS.supports('--foo', 'red'),
4, CSS.supports('(--foo: red)'),
// CSS.supports(DOMstring)
5, CSS.supports("( transform-Origin: 5% 5% )"),
6, CSS.supports("( transform-style: preserve ) or ( -moz-transform-style: preserve ) or "
+ "( -o-transform-style: preserve ) or ( -webkit-transform-style: preserve )")
)
Et il existe une fonctionnalité similaire en CSS, le @ prend en charge le sélecteur de requête de fonctionnalité , également pris en charge dans la plupart des navigateurs sauf IE :
@supports (display: grid) {
div {
display: grid;
}
}
@supports not (display: grid) {
div {
float: right;
}
}
Je vois le code que vous avez là-bas.
var styletotest = "PutStyleHere";
if (styletotest in document.body.style)
{
alert("The " + styletotest + " property is supported");
} else {
alert("The " + styletotest + " property is NOT supported");
}
Placez simplement la propriété css que vous souhaitez tester dans les guillemets où elle est indiquée
PutStyleHere
Et lorsque vous chargez le fichier, il affichera une fenêtre contextuelle vous indiquant si cela fonctionne ou non.
Cependant, cela semble inutile.
Googler simplement:
[propriété] css W3
où [propriété] est la propriété que vous souhaitez connaître les informations de prise en charge du navigateur.
Quand j'ai cherché
Opacity Css W3
puis cliqué sur le lien W3 ... vous pouvez faire défiler vers le bas et vous verrez une section de la page avec les informations que vous souhaitez comme ceci:
Nous pouvons depuis un certain temps tester à partir de javascript si une règle css est disponible dans le contexte avec CSS.supports
.
(Depuis Firefox 22/Chrome 28 )
console.log(
CSS.supports("( transform-Origin: 5% 5% )"),
"\n",
CSS.supports("( display: flex )"),
"\n ",
CSS.supports("( background-color: #12233212 )")
)
La méthode statique CSS.supports () renvoie une valeur booléenne indiquant si le navigateur prend en charge ou non une fonctionnalité CSS donnée.
https://developer.mozilla.org/en-US/docs/Web/API/CSS/supports
Je suggère d'utiliser Modernizr.
Modernizr est une bibliothèque JavaScript qui détecte les fonctionnalités HTML5 et CSS3 prises en charge par le navigateur de votre visiteur. En détectant la prise en charge des fonctionnalités, il permet aux développeurs de tester certaines des nouvelles technologies, puis de fournir des solutions de secours aux navigateurs qui ne les prennent pas en charge.
Quelques liens utiles:
C'est mon code qui prend en compte les propriétés totalement non prises en charge en vérifiant la présence d'accessoires camel-Case dans le style et utilise CSS.supports si disponible.
const prefixes = ['', '-webkit-']
function supports(prop, value) {
if ('CSS' in window && 'supports' in window.CSS) {
for (let i = 0; i < prefixes.length; i++) {
const property = prefixes[i] + prop
if (window.CSS.supports(property, value) ) { return true }
}
return false
}
const el = document.createElement('div')
let found = false
prefixes.forEach((pr) => {
if (found) return
const p = `${pr}${prop}`
const Prop = p.replace(/-(.)/g, (m, s) => s.toUpperCase())
if (!(Prop in el.style)) return
el.style[p] = value
found = el.style[p] == value // can just check if it's not empty actually
})
return found
}