Куда Вы помещаете свои Поля CSS? [закрытый]

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

17
задан Craig Walker 4 December 2009 в 18:32
поделиться

7 ответов

Я склонен использовать нижнее поле на элементах, когда я хочу, чтобы они имели пространство перед следующим элементом и затем использовали ".last" класс в CSS для удаления поля из последнего элемента.

<body>
  <h1>This is the heading</h1>
  <p>This is a paragraph</p>
  <h1>Here's another heading</h1>
  <div class="last">This is a footer</div>
</body>
div { margin-bottom: 1em; }
p { margin-bottom: 1em; }
h1 { margin-bottom: 1em; }
.last {margin-bottom: 0; }

В Вашем примере, хотя, это, вероятно, не , что применимый, поскольку у отделения нижнего колонтитула, скорее всего, были бы свой собственный класс и определенное моделирование. Тем не менее ".last" приближаются, я использовал работы для меня, когда у меня есть несколько идентичных элементов один за другим (абзацы и этажерка). Конечно, я избирательно подошел к выбору техники от "Элементов" платформа CSS.

7
ответ дан 30 November 2019 в 13:46
поделиться

Используя усовершенствованные селекторы CSS 2, другое решение было бы возможно, который не полагается на класс last для введения информации о расположении в HTML.

решение использует смежные селекторы . К сожалению, MSIE 6 еще не поддерживает его, таким образом, нежелание использовать его понятно.

h1 {
    margin: 0 0 1em;
}

div, p, p + h1, div + h1 {
    margin: 1em 0 0;
}

Таким образом, первое h1 не будет иметь верхнего поля, в то время как любой h1, который сразу следует абзацу или полю , имеет верхнее поле.

4
ответ дан 30 November 2019 в 13:46
поделиться

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

  • Вы собираетесь иметь один нижний колонтитул на странице.
  • Вы собираетесь иметь один заголовок на запись .
  • Вы собираетесь иметь n абзацы на запись.

Устанавливают пробел для Ваших абзацев, зная, что они собираются иногда произойти в последовательности - необходимо волноваться о том, как они смотрят как ряд. Оттуда, скорректируйте свои заголовки для контакта с границами между записями. Наконец, скорректируйте свой интервал нижнего колонтитула/тела, чтобы удостовериться, что конец страницы выглядит достойным.

Это - набросок. Как Вы в конечном счете заканчиваете тем, что присвоились, Ваше дополнение полностью ваше дело, но если Вы приблизитесь к нему с восходящей точки зрения, то Вы будете, вероятно, видеть меньше неожиданностей, поскольку Вы настраиваете первый наиболее распространенные / многочисленные элементы и затем позже менее общие.

2
ответ дан 30 November 2019 в 13:46
поделиться

Если Вы хотите некоторое пространство вокруг элемента, даете ему поле. Это означает, в этом случае, только дайте <h1> нижнее поле, но дайте <p> верхнее поле.

Помнят, когда два элемента вертикально смежны, и у них нет границы или дополняющий между ними, их коллапсом полей. Это означает, что только большее из этих двух полей рассматривают - они не добавляют вместе. Так это:

h1, p { margin: 1em; }

<h1>...</h1>
<p>...</p>

... привел бы к 1em пространство между заголовком и абзацем.

3
ответ дан 30 November 2019 в 13:46
поделиться

Я относительный новичок, но мое собственное решение проблемы, с которой, как я думаю, столкнулись вы и я (изменение полей для одного тега, может привести к расхождению в одной части сайта только нарушить ранее хороший интервал в другом месте?) теперь нужно выделить равные поля сверху и снизу для всех тегов. Возможно, вы захотите больше места над и под H1, чем для H3 или ap, но в целом я думаю, что страницы выглядят хорошо с одинаковыми пробелами над и под любым фрагментом текста, поэтому это решение хорошо работает для меня и соответствует вашему «простому» эмпирическое правило тоже, надеюсь!

1
ответ дан 30 November 2019 в 13:46
поделиться

Мнение, которое высказывает Jim, является ключом. Поля выходят из строя между элементами, они не дополнение. Если то, что Вы хотите, должно гарантировать, что существует 1em поле выше и ниже абзацев и заголовков и что существует 1em поле ниже заголовка и выше нижнего колонтитула, то Ваша CSS должна отразить это.

, Учитывая эту разметку (я добавил заголовок и поместил идентификаторы в заголовок/нижний колонтитул):

<body>
  <div id="header"></div>
  <h1>This is the heading</h1>
  <p>This is a paragraph</p>
  <h1>Here's another heading</h1>
  <div id="footer">This is a footer</div>
</body>

необходимо использовать эту CSS:

#header {
  margin-bottom: 1em;
}

#footer {
  margin-top: 1em;
}

h1, p {
  margin: 1em 0;
}

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

2
ответ дан 30 November 2019 в 13:46
поделиться

Я склонен соглашаться с Вами, что первый вариант лучше. Это обычно, что мне нравится делать. Однако существует аргумент, который будет сделан этим, необходимо указать поле для каждого из тех элементов и обнулить его, если Вы не хотите применять его начиная с браузеров все поля дескриптора по-другому. < p> (и < h1> отметьте также, я думаю), будет обычно иметь поля по умолчанию данными браузером, если ни один не будет указан.

0
ответ дан 30 November 2019 в 13:46
поделиться
Другие вопросы по тегам:

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