CSS может действительно переопределить порядок элементов HTML на странице?

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

22
задан Ulf Gjerdingen 2 June 2016 в 12:59
поделиться

7 ответов

С Плаванием, и с абсолютным положением, можно вытянуть некоторое довольно хорошее волшебство расположения изменить часть порядка страницы.

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

h1 {
  position: absolute;
  top: 0;
  left: 0;
}

#content {
  margin-top: 100px;
  margin-right: 250px;
}

#nav {
  position: absolute;
  top: 0;
  left: 300px;
}

#side {
  position: absolute;
  right: 0;
  top: 100px;
}
<h1> Stack Overflow </h1>
<div id="content">
  <h2> Can Css truly blah blah? </h2>
  ...
</div>
<div id="nav">
  <ul class="main">
    <li>quiestions</li> ... </ul>
  ....
</div>
<div id="side">
  <div class="box">
    <h3> Sponsored By </h3>
    <h4> New Zelands fish market </h4>
    ....
  </div>
</div>

важная вещь здесь состоит в том, что разметка должна быть сделана с этим видом расположения волшебства в памяти.

Изменяющиеся вещи так, чтобы navbar был слева и боковая панель ниже военно-морского быть слишком твердым.

9
ответ дан Luca Antonelli 29 November 2019 в 04:00
поделиться

CSS может взять элементы из нормального потока и расположить их где угодно любым способом, который Вы хотите. Но это не может создавать новый поток .

этим я подразумеваю, что можно расположить последний объект из документа HTML в начале/вершине страницы/окна, и можно расположить первый объект из документа HTML в конце/нижней части страницы/окна. Но когда Вы делаете это, Вы не можете расположить эти объекты друг относительно друга; необходимо знать для себя, как далеко вниз конец страницы будет для первого объекта из документа HTML, который будет расположен правильно. Если то содержание является динамичным (т.е.: от базы данных или CMS), это может быть совсем не тривиально.

37
ответ дан Joel Coehoorn 29 November 2019 в 04:00
поделиться

Можно хотеть посмотреть CSS Zen-Garden для превосходных примеров того, как сделать то, что Вы хотите. Много демонстрационных разметок по ссылкам на право видеть различный способ переместить все использующее строго CSS.

3
ответ дан Nick Craver 29 November 2019 в 04:00
поделиться

Вам не нужен position:absolute на каждом элементе, чтобы сделать то, что Вы хотите.

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

2
ответ дан workmad3 29 November 2019 в 04:00
поделиться

Я думаю, что наиболее важный фактор должен поместить Ваши элементы HTML способом, который имеет смысл семантически, и с удачей Ваше расположение в CSS не должно будет делать слишком большой работы. Например, заголовок Вашего сайта, вероятно, будет первым элементом на странице, сопровождаемой общей навигацией, затем поднавигацией, содержанием и нижним колонтитулом (неполный список).

, Вероятно, приблизительно 90-95% разметок, с которыми Вы захотите работать, должны быть относительно тривиальными для управления той разметкой во что-то как то, что Вы после. другие 5-10% все еще будут возможны с немного большим усилием, но вопрос, который необходимо задать сами, "Как часто я, вероятно, захочу свой заголовок сайта, расположенный в нижний правый угол страницы?"

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

</2c>

1
ответ дан ZombieSheep 29 November 2019 в 04:00
поделиться

Можно расположить отдельные поля, абсолютно независимые от исходного порядка с помощью position:absolute. Таким образом, можно переместить заголовок в конец страницы и нижний колонтитул к главному CSS использования.

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

1
ответ дан JacquesB 29 November 2019 в 04:00
поделиться

Положительная сторона у заголовка, всегда являющегося первым и нижний колонтитул в последний раз! Но я мог бы хотеть переместить свой рекламный DIV от вдоль вершины к вниз праву.

другая вещь, о которой я услышал, помещает DIV содержания сначала, таким образом, Google обращает на Вас больше внимания (соответствующие ключевые слова около верхней части страницы выигрывают выше)..., или это - миф? Выполнение, которое потребовало бы вида приема CSS, о котором я справляюсь также.

0
ответ дан Magnus Smith 29 November 2019 в 04:00
поделиться