@ -Moz-document url-prefix () làm gì?


83

Trong Thiết kế web đáp ứng cũ mới của Simon Collison , trong CSS, có một số khai báo như sau:

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

Điều này thực sự làm gì? Tôi đã lập googled cho @ -moz-document url-prefix () và đã tìm thấy các tham chiếu để sử dụng nó trong userchrome chứ không phải các bảng định kiểu trang web tiêu chuẩn.

Nó thường có một URL được chuyển vào dưới dạng đối số, sau đó hạn chế nội dung của khai báo đối với URL đó. Tuy nhiên, trên trang của Colly, không có đối số nào được chuyển vào. Điều này cho thấy rằng khai báo đang hoạt động trên URL hiện tại hay bất kỳ URL nào , phải không? Vì vậy, những gì chúng ta đang thấy ở đây có phải là một cách nhắm mục tiêu các trình duyệt chỉ có Mozilla với các quy tắc nhất định không?

Câu trả lời:


95

Mọi quy tắc tại CSS bắt đầu bằng @-moz-quy tắc dành riêng cho công cụ Gecko, không phải quy tắc chuẩn. Đó là, nó là một phần mở rộng dành riêng cho Mozilla.

Các url-prefixquy tắc áp dụng các quy tắc phong cách chứa tới bất kỳ trang có URL bắt đầu với nó. Khi được sử dụng mà không có đối số URL giống như @-moz-document url-prefix()nó áp dụng cho TẤT CẢ các trang. Đó thực sự là một bản hack CSS được sử dụng để chỉ nhắm mục tiêu Gecko (Mozilla Firefox). Tất cả các trình duyệt khác sẽ bỏ qua các kiểu.

Xem tại đây để biết danh sách các phần mở rộng khác dành riêng cho Mozilla.


Tôi đã mở rộng câu hỏi một chút vì tôi không hiểu được điểm chính. Tôi đã trực giác đoán những gì bạn đưa ra ở đây, nhưng cảm thấy bối rối vì thiếu lập luận được chuyển vào. Tuy nhiên, tôi nghĩ rằng tôi đã tìm ra.
Charles Roper

Tôi gặp sự cố về khoảng cách giữa các chữ cái trong mozilla cho phông chữ cụ thể. (tức là số nguyên tố). Trong chorme nó hiển thị ok nhưng trong firefox nó hiển thị rộng hơn một chút. vì vậy tôi muốn giảm khoảng cách giữa các chữ cái trong firefox nhưng không phải trong chrome. Tôi không thể tìm thấy phần mở rộng moz như vậy cho khoảng cách giữa các chữ cái.
Yash Vekaria

1
@YashVekaria Nó không phải là một tiện ích mở rộng moz, bạn sẽ sử dụng thuộc tính CSS. @-moz-document url-prefix() { .your-class { letter-spacing: 2em; } }
Stout Joe

17

Từ 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

Bắt đầu từ Firefox 59, bạn chỉ nên sử dụng:

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

Việc hỗ trợ phiên bản có tiền tố -moz của thuộc tính này đã bị ngừng đối với nội dung web do một lỗi:

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


@jaepage, Có, nó sẽ không hoạt động nữa. Bạn nên sử dụng: _:-moz-tree-row(hover), .selector {}. Đâu .selectorlà bộ chọn mong muốn của bạn.
Adam

4
Firefox sẽ hỗ trợ @-moz-document url-prefix()(với tiền tố url trống) fxsitecompat.com/en-CA/docs/2018/…
Orlando

4
Liên kết đó hiện cho biết @-moz-document url-prefix()(với tiền tố url trống) "sẽ bị xóa trong tương lai gần khi các vấn đề tương thích lớn được giải quyết." và thực sự nó dường như không hoạt động nữa.
Dave Morse

2

@supports (-moz-appearance:none) {...}đã làm việc cho tôi trong những trường hợp @-moz-document url-prefix() {...}không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.