Более-менее хорошее решение предложил
Владимир Мальков.
К сожалению селектор
*
протекает и в shadow DOM, но
чаще всего это не имеет значения.
В будущем могут помочь css правила:
contain: layout
- сейчас нет поддержки браузерами.
all: revert
- сейчас нет поддержки браузерами
revert
.
Можно использовать
all: unset
, для всего, но тогда пропадут и стили по умолчанию, придётся к каждому элементу возвращать их вручную.
Абсолютная гарантия есть сейчас только у
iframe
с
allowtransparency="true"
но там придётся сильно морочиться с размерами и позиционированием.