В Ublock Origin, как мне изменить стиль div в зависимости от того, есть ли у него ребенок? - PullRequest
0 голосов
/ 29 марта 2020

В UBlcok Origin я пытаюсь скрыть панель поиска / заголовка вверху Youtube, когда на странице с видео, но не когда на главной странице. Это было намного сложнее, чем я себе представлял, потому что youtube не только повторно использует идентификаторы на той же странице, но также использует те же идентификаторы и классы на домашней странице, что и видео-страницы - так что я решил попробовать и использовать процедурную косметику c фильтр .

Пока у меня есть:

! stop search bar from floating when scrolling
youtube.com###masthead-container.ytd-app:style(position: static !important)
! remove resulting whitespace (search bar still remains for some reason)
youtube.com###masthead-container:style(height: 0 !important)
! move video up to cover search bar but only if #content's ytd-page-manager element contains a ytd-watch-flexy element
youtube.com###content.style-scope.ytd-app:has(ytd-page-manager:has(ytd-watch-flexy)):style(position: relative; top: -56px !important)

, но последняя строка не работает. Поэтому я изменил его, чтобы вызывать пользовательские элементы YouTube по id и классу:

youtube.com###content.style-scope.ytd-app:has(#page-manager:has(.hide-skeleton)):style(position: relative; top: -56px !important)

, и он успешно выберет правильный элемент #content, если я удалю условное выражение :style(...) - но, как показано, оно По-видимому, не применяется скрытие или применение стиля, если я связываю :style() с условным условием :has().

Можете ли вы связать :has() и :style()?

1 Ответ

0 голосов
/ 29 марта 2020

Функция условных цепочек для :style() не была добавлена ​​на конец 2019 года

https://github.com/uBlockOrigin/uBlock-issues/issues/382

...