Il existe une technique qui consiste à mettre en javascript dans l'attribut class de la balise html un nom de propriété CSS et de le préfixer par no- quand cette dernière n'est pas reconnue par le navigateur. Cette technique vous permet en CSS de prévoir les deux cas, le cas où la propriété est reconnue et le cas où la propriété n'est pas reconnue.
Par exemple, nous voulons tester la propriété css box-sizing. Voici le code HTML de la balise HTML au départ :
Si après nos tests javascript la propriété css box-sizing est reconnue on obtient :
sinon :
Vous devrez avoir dans votre feuille de style :
Fonction pour ajouter à l'attribut class
Voici, un exemple de fonction qui va vous permettre d'ajouter une propriété dans l'attribut class de la balise html.
La fonction addClass accepte comme paramètres :
sPropriete, valeur de type String qui représente est le nom de la propriété.
bTest, valeur de type Boolean, pour la valeur false la propriété sera préfixée de 'no-'.
Les tests des propriétés en javascript
box-sizing CSS
La propriété CSS box-sizing n'est pas reconnue par tous les navigateurs. Il est donc nécessaire à mon avis de pouvoir proposer une alternative.
Dans cette fonction, nous testons aussi les propriétés préfixées telles que -moz-box-sizing ou -webkit-box-sizing. Et si on est en compatMode supérieur à Internet Explorer 7.
La fonction boxSizingTest renvoi une valeur de type Boolean : - true, la propriété box-sizing ou une de ses versions préfixées est comprise, - false, la propriété box-sizing et ses versions préfixées se sont pas comprises,
box-shadow CSS
La propriété CSS box-shadow n'est pas reconnue par tous les navigateurs. Il est donc nécessaire à mon avis de pouvoir proposer une alternative.
Dans cette fonction, nous testons aussi les propriétés préfixées telles que -moz-box-shadow ou -webkit-box-shadow. Et si on est en compatMode supérieur à Internet Explorer 7.
La fonction boxShadowTest renvoi une valeur de type Boolean : - true, la propriété box-shadow ou une de ses versions préfixées est comprise, - false, la propriété box-shadow et ses versions préfixées se sont pas comprises,
border-radius CSS
La propriété CSS border-radius n'est pas reconnue par tous les navigateurs. Il est donc nécessaire à mon avis de pouvoir proposer une alternative.
Dans cette fonction, nous testons aussi les propriétés préfixées telles que -moz-border-radius ou -webkit-border-radius. Et si on est en compatMode supérieur à Internet Explorer 7.
La fonction borderRadiusTest renvoi une valeur de type Boolean : - true, la propriété border-radius ou une de ses versions préfixées est comprise, - false, la propriété border-radius et ses versions préfixées se sont pas comprises,
content CSS
La génération de texte avec la propriété CSS content via le sélecteur :after ou :before n'est pas reconnue par tous les navigateurs. Il est donc nécessaire à mon avis de pouvoir proposer une alternative.
La fonction textContent renvoi une valeur de type Boolean : - true, la génération de texte avec content est comprise, - false, la génération de texte avec content n'est pas comprise,