2 回答

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
body :not(.childclass) * { transform:none; }
您試圖在偽變量上選擇通配符 (*),這是不正確的。我將解釋下面的代碼:
body :not(.childclass) *
選擇 body 標(biāo)記內(nèi)沒(méi)有子類(lèi)的任何項(xiàng)目?jī)?nèi)的所有項(xiàng)目。
不需要在 :not false 之前添加通配符,但如果需要,您可以添加它,它會(huì)解釋相同
body :not(.childclass) *
比
body *:not(.childclass) *
由于 body 和 :not 之間有一個(gè)空格,它將解釋為 body 標(biāo)記內(nèi)的所有 :not 匹配元素。
事實(shí)上,您不需要選擇器上的 body 標(biāo)記:
:not(.childclass) *
將匹配標(biāo)簽內(nèi)沒(méi)有子類(lèi)的所有元素。
但這里有一個(gè)解決方法。如果匹配元素內(nèi)有子類(lèi),則當(dāng)您也使用通配符選擇它時(shí),也會(huì)選擇該子類(lèi),因?yàn)榉亲宇?lèi)元素內(nèi)的元素如果子類(lèi)元素內(nèi)有非子類(lèi)元素,則該元素是真正的匹配。
看:
https://jsfiddle.net/5nw6k3jL/
您需要為其指定級(jí)別,例如,對(duì)于兩級(jí)匹配元素:
:not(.childclass) :not(.childclass) * { }
這將匹配所有不在子類(lèi)內(nèi)部但在非子類(lèi)元素內(nèi)部的元素。
您還可以連續(xù)設(shè)置多個(gè)級(jí)別:
:not(.childclass), :not(.childclass) :not(.childclass) * { }
這對(duì)兩者都有效,因?yàn)樽钚碌木哂懈叩膬?yōu)先級(jí)。
如果您不知道布局內(nèi)的標(biāo)簽級(jí)別,您可以在行中或周?chē)O(shè)置一堆選擇器 JavaScript。

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
vanilla JS 的解決方法之一是使用element.matches()方法。
var els = document.querySelectorAll('*');
els.forEach((elem) => {
if(!elem.matches(".childclass *")){
elem.style.transform = 'none';
}
});
- 2 回答
- 0 關(guān)注
- 111 瀏覽
添加回答
舉報(bào)