Это считают плохой практикой для использования абсолютного расположения?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
69
задан Herb Caudill 27 February 2010 в 14:34
поделиться

11 ответов

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

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

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

Примечание: "расположенный" элемент А может быть любым следующим: родственник, зафиксированный, абсолютный, или липкий.

Для объяснения:

<div id="parentDIV" style="position:relative">
    <div id="childDIV" style="position:absolute:left:20px;top:20px;">
          I'm absolutely positioned within parentDIV.
    </div>
</div>

Здесь, childDIV на самом деле расположен 20 пкс слева и 20 пкс от вершины parentDIV, НЕ полный документ. Это дает хороший точный контроль над вложенными элементами на странице, не жертвуя полным перетекающим макетом страницы.

Так для ответа на вопрос (расположение родственника, предпочитаемое по абсолюту): Я не полагаю, что существует корректный ответ, он зависит от того, что необходимо создать. Однако в общем расположении (абсолютный или относительный) по сравнению с перетекающим макетом по умолчанию, мой подход как описан выше.

84
ответ дан Fouad Boukredine 24 November 2019 в 13:41
поделиться

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

ключ - то, что абсолютно расположенный элемент расположен в контекст первого элемента предка, который имеет position:relative или position:absolute. Таким образом, если у Вас есть это:

div.Container
{
   position:relative
   width:300px;
   height:300px;
   background:yellow;
}

div.PositionMe
{
   position:absolute;
   top:10px;
   right:10px;
   width:20px;
   height:20px;
   background:red
}

и

<div class=Container>
...
   <div class=PositionMe>
   ...
   </div>
...
</div>

... отделение PositionMe будет размещено относительно Container, не к странице.

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

52
ответ дан Herb Caudill 24 November 2019 в 13:41
поделиться

Это не отвечает на Ваш вопрос, но...

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

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

14
ответ дан Jacco 24 November 2019 в 13:41
поделиться

Я думаю, что проблема состоит в том, что абсолютным расположением легко злоупотребить. Система координат намного легче для непрофессионалов понять, чем модель поля. Кроме того, программы как DreamWeaver делают его тривиально простым к расположению страница с помощью абсолютного расположения (и люди не понимают то, что они делают).

Однако для типичного макета страницы, статическое расположение по умолчанию должно соответствовать и получить задание сделанные 90% времени. Это очень гибко, и путем хранения всего в нормальном потоке, элементы знают о других элементах вокруг них и будут действовать соответственно, когда вещи изменяются. Это действительно хорошо при контакте с динамическим контентом (который большинство страниц в эти дни).

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

5
ответ дан Bryan M. 24 November 2019 в 13:41
поделиться

Посмотрите на свой веб-сайт в различных браузерах при следующих условиях:

  • Переключатель Ваши настройки OS к high-dpi/large шрифтам/высокому контрасту (все изменение размер шрифта браузера по умолчанию)
  • Увеличение/уменьшение размер стандартного шрифта в браузере
  • Переопределение шрифты страницы в браузере (обычно где-нибудь в опциях Accessibility)
  • Переопределяют/выключают таблицу стилей страницы (предоставленный, пользователи не должны ожидать, что игра в шахматы будет работать правильно в этом сценарии:-))

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

4
ответ дан Franci Penov 24 November 2019 в 13:41
поделиться

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

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

3
ответ дан bmdhacks 24 November 2019 в 13:41
поделиться

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

3
ответ дан Ian Oxley 24 November 2019 в 13:41
поделиться

Нет никаких жестких правил. Различные формы расположения являются всей пользой в разных вещах.

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

3
ответ дан Quentin 24 November 2019 в 13:41
поделиться

Некоторые вещи невозможны обойтись без position:absolute. Другими вещами является ПУТЬ, легче к achive с абсолютным расположением (позвольте, говорят, что Вы хотите нижнюю правую кнопку для "чтения больше" в фиксированном поле высоты / минимальном поле высоты, и у Вас нет достаточного количества текста в том поле). Так, мой совет: просто используйте тот, который соответствует Вашим потребностям...

2
ответ дан Ionuț Staicu 24 November 2019 в 13:41
поделиться

IMO, не плохая вещь вообще. Я недавно завершил присвоение с соответствием стандартов AA и поддержкой FF2, IE7, IE6 (да, боль, которую я знаю). Были определенные разметки, которые были только достижимы из-за абсолютного расположения! Даже определенные кнопки Мне нравится компонентов, где разделение на уровни было необходимо (диапозитивы), были возможны только из-за абсолютного расположения. Если у кого-то есть лучший путь, отошлите меня к этому.

Абсолютное расположение повреждает поток, если мы знаем, как ограничить поток (измените провода родителя на относительный/абсолютный), это интересно. Я не знаю о более старых браузерах (сам IE6 является динозавром), но одна болезненная вещь, которую я нашел, был, пишущий в PDF (Милый PDF) или открываясь WINWORD (предъявите иск мне), дает потертый результат.

1
ответ дан questzen 24 November 2019 в 13:41
поделиться

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

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

Шахматная доска - это стол, ячейки таблицы не нуждаются в настройке положения. Для событий onblur / onfocus и cie выполнят свою работу. Зачем вам вообще нужен расчет пикселей?

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

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