2011-07-13 21 views

回答

6

雖然::selection僞元素仍然在draft spectext-decoration沒有說明作爲允許的樣式屬性之一。鑑於瀏覽器無論如何實施它們,他們應該遵循該文件的規則,不允許text-decoration這樣。

也就是說,您的選擇器沒有任何問題,但值得注意的是,Firefox使用供應商前綴版本::-moz-selection來代替。您必須重複該規則才能支持該瀏覽器,以及Chrome,Safari和Opera(有關信息,請參閱this answer)。

所以在SCSS,你可以這樣做:

* { 
    &::-moz-selection { /* Style any selection */ } 
    &::selection { /* Style any selection */ } 
} 

您可能能夠減少使用的混入,但我不知道,如果混入用僞元素選擇工作。

11

混入與僞元素選擇工作;)看到我的mixin:

$prefixes: ("-moz-", ""); 
@mixin selection($color, $background) { 
    @each $prefix in $prefixes { 
     ::#{$prefix}selection { 
      color: $color; 
      background: $background; 
     } 
    } 
} 

如何使用:

@include selection(white, black); 
當然

你可以把它更加靈活,但對我來說就足夠了;)

+1

::選擇只有一個-moz前綴,這是值得大家注意,這是一個非標準的,不應該被使用,檢查Mozilla開發人員網絡上的此[頁面](https://developer.mozilla.org/en-US/docs/CSS/::selection)。 – Pierre

+0

@Peter:奇怪我第一次編輯這個答案時就錯過了。我通常密切關注這些事情。 (是的,我知道你不是彼得。) – BoltClock

26

這是我做的方式:

// define it 
@mixin selection { 
    ::-moz-selection { @content; } 
    ::selection { @content; } 
} 

// use it 
@include selection { 
    color: white; 
    background: black; 
} 

更新

我建議只使用::selection {}autoprefixer而不是mixin。這將使你的代碼更薄,你的大腦更輕:)

在這種情況下,autoprefixer將改變這一點:

::selection { 
    color: white; 
    background: black; 
} 

...(具體取決於你的目標瀏覽器/配置)到類似的東西:

::-moz-selection { 
    color: white; 
    background: black; 
} 

::selection { 
    color: white; 
    background: black; 
} 
+3

這絕對比Peter的答案更清潔,更可重用。希望它上升到頂端! – BoltClock

+0

@VitalyBatonov如果您的問題得到解答,請將其標記爲:) – yckart

+0

不幸的是,我不認爲會發生這種情況 - 即使在您發佈此答案之前,OP也沒有訪問過該網站。但是,你的答案已經上升到最高點,至少是這樣。 – BoltClock

0

偉大的mixin,我已經改變了工作規則,通過添加「&」,它對我更好。我還添加了一個空白前綴來獲取不帶前綴的規則。

@mixin selection($color, $background) { 
    $prefixes: ("-moz-", "-webkit-", "-o-", "-ms-", ""); 
    @each $prefix in $prefixes { 
     &::#{$prefix}selection { 
     color: $color; 
     background: $background; 
     } 
    } 
} 
0

有了指南針,你可以做如下所示:

@import "compass/css3/selection"; 
@include selection($highlightBackground, $highlightColor) 
+0

「僅僅使用別人的圖書館」並不能解釋如何去編寫一個類似的功能,該功能在圖書館中是不存在的。 – cimmanon