亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何選擇除某些元素的子樹中的元素之外的所有元素?

如何選擇除某些元素的子樹中的元素之外的所有元素?

炎炎設計 2023-09-18 15:59:32
我想匹配 HTML 中的所有元素,除了某些元素中的那些元素。CSS3 似乎不支持這樣的選擇器:body *:not(.childclass *){   transform:none; }有什么簡單的解決方法嗎?
查看完整描述

2 回答

?
慕村9548890

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。


查看完整回答
反對 回復 2023-09-18
?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

vanilla JS 的解決方法之一是使用element.matches()方法。


var  els = document.querySelectorAll('*');

els.forEach((elem) => {

    if(!elem.matches(".childclass *")){

        elem.style.transform = 'none';

    }


});


查看完整回答
反對 回復 2023-09-18
  • 2 回答
  • 0 關注
  • 99 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號