94 votes

Que fait @-moz-document url-prefix() ?

Dans l'article de Simon Collison nouveau vieux Responsive Web Design Dans le CSS, il y a plusieurs déclarations comme celle-ci :

@-moz-document url-prefix() {
  .fl { float:left; margin:12px 4px 0 0; padding:0; font-size:65px;  line-height:62%;  color:#ba1820; }
  .fs { float:left; margin:12px 4px 10px 0; padding:0; font-size:65px; line-height:62%; color:#ba1820; }
}

Qu'est-ce que cela fait réellement ? J'ai fait une recherche sur @-moz-document url-prefix() et j'ai trouvé des références pour son utilisation dans userchrome mais pas dans les feuilles de style de sites standards.

En général, une URL est passée en argument et le contenu de la déclaration est alors limité à cette URL. Cependant, sur le site de Colly, aucun argument n'est passé. Cela indiquerait que la déclaration fonctionne sur l'URL actuelle, ou tout URL, non ? Donc Est-ce que ce que nous voyons ici est un moyen de cibler les navigateurs Mozilla uniquement avec certaines règles ? ?

109voto

Oded Points 271275

Tout at-rule CSS qui commence par @-moz- est une règle spécifique au moteur Gecko, et non une règle standard. C'est-à-dire qu'il s'agit d'une extension spécifique à Mozilla.

El url-prefix applique les règles de style contenues à toute page dont l'URL commence par ce terme. Lorsqu'elle est utilisée sans argument URL, comme @-moz-document url-prefix() il s'applique à TOUTES pages. C'est effectivement un Piratage CSS utilisé pour cibler uniquement Gecko (Mozilla Firefox). Tous les autres navigateurs ignoreront les styles.

Voir aquí pour une liste d'autres extensions spécifiques à Mozilla.

0 votes

J'ai élargi un peu la question parce que je n'ai pas réussi à faire passer un point essentiel. J'ai intuitivement deviné ce que vous avez mis ici, mais j'étais perplexe devant le manque d'arguments transmis. Je pense avoir compris, cependant.

0 votes

J'ai des problèmes avec l'espacement des lettres dans Mozilla pour une police spécifique. (i.e. prime). En chrome, le rendu est correct mais en firefox, il est un peu plus large. Je veux donc réduire l'espacement des lettres en firefox mais pas en chrome. Je ne trouve pas d'extension Mozilla pour l'espacement des lettres.

1 votes

@YashVekaria Ce ne serait pas une extension moz, vous utiliseriez la propriété CSS. @-moz-document url-prefix() { .your-class { letter-spacing: 2em; } }

17voto

DRL Points 2403

De https://developer.mozilla.org/en/CSS/@-moz-document

       @-moz-document url(http://www.w3.org/),
                   url-prefix(http://www.w3.org/Style/),
                   domain(mozilla.org)
    {
      /* CSS rules here apply to:
         + The page "http://www.w3.org/".
         + Any page whose URL begins with "http://www.w3.org/Style/"
         + Any page whose URL's host is "mozilla.org" or ends with
           ".mozilla.org"
       */

      /* make the above-mentioned pages really ugly */
      body { color: purple; background: yellow; }
}

5voto

Adam Points 951

À partir de Firefox 59, vous devez simplement utiliser :

@document url("https://www.example.com/")

Le support de la version -moz-prefixed de cette propriété a été arrêté pour le contenu web, à cause d'un bug :

https://bugzilla.mozilla.org/show_bug.cgi?id=1035091

0 votes

@jaepage, Oui, cela ne fonctionnera plus. Vous devriez utiliser : _:-moz-tree-row(hover), .selector {} . Où .selector est votre sélecteur souhaité.

4 votes

Firefox prendra en charge @-moz-document url-prefix() (avec un préfixe url vide) fxsitecompat.com/fr-CA/docs/2018/

4 votes

Ce lien indique maintenant @-moz-document url-prefix() (avec un préfixe url vide) "sera supprimé dans un avenir proche, une fois que les principaux problèmes de compatibilité seront résolus" et, en effet, il ne semble plus fonctionner.

3voto

T Ngo Points 1

@supports (-moz-appearance:none) {...} a fonctionné pour moi dans les cas où @-moz-document url-prefix() {...} ne l'a pas fait.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X