Ограничить CSS до DIV [дублировать]

Есть еще один способ, если ваш массив имеет тип char []:

char A[] = {'a', 'b', 'c'}; 

System.out.println(A); // no other arguments

печатает

abc
42
задан Kara 25 July 2013 в 01:02
поделиться

4 ответа

Каскадный и наследовательный уровень CSS Уровень 3 вводит свойство стенограммы all и ключевое слово unset , которые вместе позволяют вам для достижения этого удобно.

Например, если автор указывает all: initial на элемент, он заблокирует все наследование и сбросит все свойства, как если бы никакие правила не появились у автора, пользователя или Уровни пользовательского агента каскада.

Это может быть полезно для корневого элемента «виджета», включенного в страницу, который не хочет наследовать стили внешней страницы. Однако обратите внимание, что любой стиль «по умолчанию», применяемый к этому элементу (например, display: block из таблицы стилей UA на блочных элементах, таких как <div>) также будет удален.

Вам нужно применить all: initial к вашему div и all: unset к его потомкам:

#mydiv {
  all: initial; /* blocking inheritance for all properties */
}
#mydiv * {
  all: unset; /* allowing inheritance within #mydiv */
}

Вы можете использовать класс в своем div вместо id, так что любые правила, которые вы пишете в стиле своих потомков, не должны соответствовать или бить высокую специфичность, используемую в этом правиле.

Чтобы быть действительно безопасным, вы можете также заблокировать стили для потенциальных псевдоэлементных потомков:

#mydiv::before,
#mydiv::after,
#mydiv *::before,
#mydiv *::after {
  all: unset;
}

В качестве альтернативы, для более широкой поддержки браузера вы можете вручную сделать то, что all делает, установив все известные свойства CSS (не забудьте префиксные версии):

#mydiv {
  /*
   * using initial for all properties
   * to totally block inheritance
   */
  align-content: initial;
  align-items: initial;
  align-self: initial;
  alignment-baseline: initial;
  animation: initial;
  backface-visibility: initial;
  background: initial;
  ...
}

#mydiv::before,
#mydiv::after,
#mydiv *,
#mydiv *::before,
#mydiv *::after {
  /*
   * using inherit for normally heritable properties,
   * and initial for the others, as unset does
   */
  align-content: initial;
  align-items: initial;
  align-self: initial;
  ...
  color: inherit;
  ...
}

Вы можете поощрять поддержку браузера для стенографического свойства all и отслеживать его принятие с помощью этих ссылок на проблемы:

Здесь доступна обновленная информация о поддержке браузера для свойства all shorthand .

83
ответ дан jaredjacobs 24 August 2018 в 19:56
поделиться

Старый вопрос, но с момента принятого ответа ситуация немного изменилась. В настоящее время имеется ключевое слово, рекомендованное CSSWG, которое называется revert , которое было бы лучше, чем initial и unset , чтобы решить эту проблему , поскольку он сбрасывает свойство элемента на значение, определенное в таблице стилей пользователя пользователя , а не на начальное значение свойства независимо от того, какой элемент он использует. Так, например, div внутри #mydiv будет иметь свой дисплей, установленный на block, как и ожидалось, а не inline.

Вам нужно было бы сделать это:

#mydiv,
#mydiv::before,
#mydiv::after,
#mydiv *
#mydiv *::before,
#mydiv *::after {
  all: revert;
}

К сожалению, revert не поддерживается ни одним браузером , кроме Safari (для Mac и iOS) на момент написания.

Есть также что-то иначе принимать во внимание принятый ответ. Если вы хотите стилизовать что-либо внутри #mydiv, вам нужно сделать это с помощью селектора, который по крайней мере так же специфичен, как тот, который вы использовали для отмены или возврата всего, в противном случае оно будет отменено этим правилом, даже если оно произойдет после это в CSS.

Итак, вам нужно сделать что-то вроде этого (обратите внимание на #mydiv, которые повышают специфичность правил :

#mydiv p {
  margin-top: 20px;
}

#mydiv .bg-black {
  background-color: black;
}

// etc.
0
ответ дан benface 24 August 2018 в 19:56
поделиться

Одна вещь, которая может быть полезна, - это селектор прямых прямых CSS, который доступен во всех браузерах, включая IE7 +. Это позволяет применять стиль, который не каскадируется на детей. Например, в вашем коде вы можете использовать этот CSS:

body > img {
  width:100px;
  height:100px;
}
body > h1 {
  font-size:26px;
  color:red;
}

И этот CSS применим только к элементам непосредственно в элементе BODY.

0
ответ дан jpsimons 24 August 2018 в 19:56
поделиться

Вы не можете технически, так как CSS должен работать. Если в вашей таблице стилей есть определенный стиль для тега div, он будет применяться ко всем элементам div.

Немногие вещи, которые вы можете попробовать, не имеют стиль с именем тега , а вместо этого дают имя класса и дать объявление стиля классу. так что вы можете убедиться, где все стили будут идти.

ИЛИ. если вы хотите, чтобы какой-то определенный тег Div не имел стиля, в то время как другие Divs имели. вы всегда можете сбросить его, дать другое имя или идентификатор класса и сбросить декларации стиля

9
ответ дан Kamal 24 August 2018 в 19:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: