2 回答

TA貢獻1884條經驗 獲得超4個贊
body :not(.childclass) * { transform:none; }
您試圖在偽變量上選擇通配符 (*),這是不正確的。我將解釋下面的代碼:
body :not(.childclass) *
選擇 body 標記內沒有子類的任何項目內的所有項目。
不需要在 :not false 之前添加通配符,但如果需要,您可以添加它,它會解釋相同
body :not(.childclass) *
比
body *:not(.childclass) *
由于 body 和 :not 之間有一個空格,它將解釋為 body 標記內的所有 :not 匹配元素。
事實上,您不需要選擇器上的 body 標記:
:not(.childclass) *
將匹配標簽內沒有子類的所有元素。
但這里有一個解決方法。如果匹配元素內有子類,則當您也使用通配符選擇它時,也會選擇該子類,因為非子類元素內的元素如果子類元素內有非子類元素,則該元素是真正的匹配。
看:
https://jsfiddle.net/5nw6k3jL/
您需要為其指定級別,例如,對于兩級匹配元素:
:not(.childclass) :not(.childclass) * { }
這將匹配所有不在子類內部但在非子類元素內部的元素。
您還可以連續設置多個級別:
:not(.childclass), :not(.childclass) :not(.childclass) * { }
這對兩者都有效,因為最新的具有更高的優先級。
如果您不知道布局內的標簽級別,您可以在行中或周圍設置一堆選擇器 JavaScript。

TA貢獻1842條經驗 獲得超21個贊
vanilla JS 的解決方法之一是使用element.matches()方法。
var els = document.querySelectorAll('*');
els.forEach((elem) => {
if(!elem.matches(".childclass *")){
elem.style.transform = 'none';
}
});
- 2 回答
- 0 關注
- 99 瀏覽
添加回答
舉報