2015-06-19 65 views
0

背景CSS *選擇,但不包括特定標籤

所以我發現在我們Ext JS's CSS這行代碼在WebKit的每個元素刪除焦點。不幸的是,它已經差不多2年了,他們還沒有解決他們的TODO問題。

// TODO: remove outline from individual components that need it instead of resetting globally 
.#{$prefix}webkit { 
    * { 
     &:focus { 
      outline:none !important; 
     } 
    } 
} 

其編譯成

.x-webkit *:focus { 
    outline: none !important; 
} 

這樣做是帶走了瀏覽器的默認焦點(UA樣式)上的鏈接,以便當用戶切換到一個錨標記,他們沒有UI跡象表明他們是在標籤上。我想使用原生瀏覽器行爲,所以我不想特別重寫a:focus,並且使用initial不起作用。同樣,刪除整個樣式會導致UI組件以不同的方式處理它們的焦點UI,這是不可接受的。

tldr

什麼是應用樣式到所有的標籤,除了一定的標籤(一個或多個)的最佳方法。我知道我可以製作一個選擇器,除了我不想要的標籤外,其他所有標籤都有,但這很乏味,這真的是最好的方法嗎?如果是的話,是否有HTML的有效UI標籤列表?

回答

5

你可以使用CSS :not選擇和應用樣式的.x-webkit所有後代除了標籤(一個或多個)要排除:

.x-webkit *:not(p):not(em) { 
 
    color: red; 
 
}
<div class="x-webkit"> 
 
    <div>red</div> 
 
    <ul><li>red</li></ul> 
 
    <p> 
 
    Not red<br> 
 
    <strong>red</strong><br> 
 
    <em>Not red</em> 
 
    </p> 
 
    <table><tr><td>red</td></tr></table> 
 
</div>