2012-02-27 21 views
3

所以我有一個容器div與可點擊的幻燈片元素。雙擊下一個或上一個按鈕時,幻燈片元素後面的幾個標籤將突出顯示。如果我禁用選擇下一個div,雙擊將選擇下一個div。保護從選擇DIV

截至目前我使用的是:

-webkit-touch-callout: none; 
-webkit-user-select: none; 
-khtml-user-select: none; 
-moz-user-select: none; 
-ms-user-select: none; 
-o-user-select: none; 
user-select: none; 

這個CSS不適合我,因爲我不想禁用div的選擇和DIV中的所有元素,我只是想保護div子元素免受其他div的雙擊選擇。有沒有辦法保護選擇div?

回答

4

如果您想選擇您div所有後代然後執行以下操作:

div * { 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    -o-user-select: none; 
    user-select: none; 
} 

,顯然有與速度問題,在這種情況下,特別適合製作。我建議修改你的HTML並選擇div的直系後代。

div h1, 
div p, 
div span/*, etc. */ { 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    -o-user-select: none; 
    user-select: none; 
} 

如果你想覆蓋的user-select: none默認繼承上div的孩子,然後爲每個這些元素的添加user-select: text(包括跨瀏覽器的聲明)。

+0

使用*很適合測試,但不應該在生產代碼中使用它 – Tom 2012-02-27 16:08:36

+0

您想抓住'​​div'的所有後代。如果您想獲得更具體的內容,請在類或ID上使用星號選擇器。我真的認爲這不值得讚揚。 – 2012-02-27 16:10:43

+1

,原因是CSS從右向左不是從左向右。這意味着首先它需要網站上的所有元素,然後向左走,以檢查它們是否具有父級div。這是慢的。將它與例如'*#div'進行比較 - 首先需要一個元素,然後檢查其父項是否爲FAST。沒有明確的聲明「不要在生產中這樣做」我同意它值得投票:) – mkk 2012-02-27 16:11:41