Що робить @ -moz-document url-prefix ()?


84

У новому старому адаптивному веб-дизайні Саймона Коллісона , у CSS, є кілька таких заяв:

@-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; }
}

Що це насправді робить? Я погуглив @ -moz-document url-prefix () і знайшов посилання на його використання в userchrome, але не в стандартних таблицях стилів веб-сайтів.

Зазвичай URL-адреса передається як аргумент, який потім обмежує вміст декларації цією URL-адресою. Однак на сайті Коллі жоден аргумент не передається. Це означало б, що декларація працює над поточною URL-адресою чи будь-якою URL-адресою, ні? То що ми бачимо тут, спосіб націлювання на браузери лише Mozilla з певними правилами ?

Відповіді:


96

Будь-яке CSS-правило, яке починається з, @-moz-є специфічним для Gecko механізмом, а не стандартним правилом. Тобто це специфічне для Mozilla розширення.

url-prefixПравило застосовує правила стилю , що містяться на будь-якій сторінці , чий URL починається з нього. При використанні без аргументу URL-адреси, як @-moz-document url-prefix()це стосується ВСІХ сторінок. Це фактично CSS-хак, який використовувався лише для націлювання на Gecko (Mozilla Firefox). Усі інші браузери ігноруватимуть стилі.

Перегляньте тут список інших розширень, специфічних для Mozilla.


Я трохи розширив питання, оскільки не довідався ключового моменту. Я інтуїтивно здогадався, що ви тут написали, але був здивований відсутністю аргументів, які передавались. Думаю, я все-таки це зрозумів.
Чарльз Ропер

У мене проблеми з інтервалом між літерами в mozilla для певного шрифту. (тобто простий). У chorme це робить нормально, але у firefox він виглядає трохи ширше. тому я хочу зменшити інтервал між літерами у firefox, але не в chrome. Я не можу знайти таке розширення moz для інтервалів між літерами.
Yash Vekaria

1
@YashVekaria Це не було б розширенням moz, ви б використовували властивість CSS. @-moz-document url-prefix() { .your-class { letter-spacing: 2em; } }
Стаут Джо

17

З 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; }
}

5

Починаючи з Firefox 59, вам слід просто використовувати:

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

Підтримка префіксної версії -moz цієї властивості припинена для веб-вмісту через помилку:

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


@jaepage, так, це більше не працюватиме. Ви повинні використовувати: _:-moz-tree-row(hover), .selector {}. Де .selectorзнаходиться ваш бажаний селектор.
Адам

4
Firefox підтримуватиме @-moz-document url-prefix()(з порожнім префіксом url) fxsitecompat.com/en-CA/docs/2018/…
Орландо,

4
Це посилання тепер говорить @-moz-document url-prefix()(з порожнім префіксом url) "буде видалено найближчим часом після вирішення основних проблем сумісності". і справді, здається, це вже не працює.
Dave Morse

2

@supports (-moz-appearance:none) {...}працював у мене у тих випадках, коли @-moz-document url-prefix() {...}ні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.