2009-10-01 2 views
2

В течение многих лет Visual Studio.NET предлагала «абсолютное позиционирование» для ASP.NET, благодаря чему вы можете перетаскивать элементы управления на холст конструктора, где бы вы их ни хотели. Тем не менее, всегда были сильные советы не, чтобы использовать эту функцию. Вместо этого, общая мудрость говорит, что вы должны использовать «Flow layout», потому что, если вы будете использовать «абсолютное позиционирование» VS.NET, ваш экран не будет отображаться правильно для пользователей, разрешение которых отличается от вашего.В чем проблема с «абсолютным позиционированием» Visual Studio.Net и как эта проблема устранена «абсолютным позиционированием» CSS?

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

Таким образом, рекомендуемая практика состоит в том, чтобы позиционировать элементы, используя абсолютное позиционирование CSS.

Вопрос: Что делает CSS правильно об абсолютном позиционировании, что Visual Studio делает неправильно? Как абсолютное позиционирование CSS может быть в порядке даже для пользователей с разными разрешениями экрана, в то время как Visual Studio.NET не может?

ОБНОВЛЕНИЕ: Ответы здесь прояснили вопрос для меня. Вот как я резюмирую его:

  1. Возраст ранее, VS.NET по умолчанию использовал абсолютное позиционирование для всего. Вот как VB работал со своего начала (что означало, что приложения Windows до того, как существовала даже сеть), и VS.NET был создан так, чтобы чувствовать себя подобно VB.
  2. Однако, используя абсолютное позиционирование для всего, что есть на веб-странице, есть очень плохая идея. См. Один из ответов ниже для некоторых конкретных примеров из .
  3. С помощью абсолютного позиционирования для каждый контроль над веб-приложение страница такая плохая идея, все, что советы по использованию «раскладку Flow» возникли. Это был способ работы с VS.NET без абсолютно позиционирование всего.
  4. Теперь, когда CSS настолько зрелый и широко поддерживаются, и является предпочтительным механизма для позиционирования и внешнего вида, он все еще CRAZY к абсолютно позиционировать все, и по тем же причины. Большинство предметов должно быть допущено к положению самим «в потоке». Тем не менее, для некоторых элементов здесь и там, абсолютное позиционирование CSS может сделать смысл.
  5. Механизм VS.NET всегда использовал для выполнения абсолютного позиционирования фактически встроенные стили CSS.

Отлично, что все это прояснилось. Благодарю.

+0

* «Итак, рекомендуемая практика состоит в том, чтобы позиционировать элементы с использованием абсолютного позиционирования CSS» * - рекомендован кем? VS.NET имеет * всегда * реализованное абсолютное позиционирование для ASP.NET с использованием CSS, по той простой причине, что CSS - единственный способ добиться абсолютного позиционирования в HTML-документе. (Позиционирование CSS предшествует ASP.NET на несколько лет.) – NickFitz

+0

Ну, может быть, я ошибаюсь. Я понимаю, что общее веб-сообщество (за пределами мира Microsoft) рекомендует использовать позиционирование CSS. Эти элементы HTML должны передавать структуру, а не позиционирование или внешний вид. Затем позиционирование должно выполняться с помощью CSS.Кроме того, я понимаю, что более крупные организационные элементы страницы должны быть позиционированы с помощью абсолютного позиционирования CSS. Например, эта ссылка recc использует CSS-P вместо табличного расположения: http://webdesign.about.com/od/css/a/aa102102a.htm. –

ответ

2

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

Проблема с абсолютно позиционированием не имеет ничего общего со стандартами или правильной рендерингом в браузерах (IE5 поддерживает NN4 как абсолютное позиционирование CSS, а то, что Visual Studio.NET использовало для позиционирования элементов).

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

Даже тривиальные изменения в HTML/CSS становятся кошмаром, когда все ваши элементы абсолютно расположены. Некоторые из моих конкретных колик:

  • Общее выравнивание перетасовать - Всякий раз, когда добавление, удаление или изменение размера элемента вы должны были вручную убедиться, что все элементы управления были еще равномерно распределены и что контроль не перекрывается , Если бы они это сделали ... вы просто потеряли следующие пять минут своей жизни, чтобы перетасовать общую настройку. Подталкивание элементов управления на место и обеспечение того, чтобы все выстроилось в линию.
  • Отметить все и переместить - Если логотип новой компании был на 10px выше, чем предыдущий, вы бы выбрали все свои элементы управления и переместили их на 10 пикселей ... но подождите ... вам как-то удалось пропустите этот элемент управления. Еще пять минут штрафа, поскольку вы мешаете этому контролю на свои места.
  • Динамический контент ад - Вы разместили окно описания прямо под заголовком ... который работает большую часть времени. Но теперь название обернуто и перекрывается описанием @ # $ #%. Не дай бог, вы должны на самом деле попробовать любую страницу с большим количеством динамического контента.

Абсолютное расположение нескольких элементов не так уж плохо, но если вы не портируете приложение VB6 на веб-форму, нет никаких оснований полностью их позиционировать.

+0

Фантастический ответ, спасибо. Я согласен с вами, и я начинаю видеть свет. Старый совет об использовании FlowLayout состоял не только в том, чтобы избегать собственной реализации VS.Net в абсолютной компоновке ... речь шла об избежании абсолютного макета в целом. Веб-страницы не должны иметь каждый элемент, выложенный с абсолютным позиционированием (и все же VS.Net используется для него по умолчанию). Очень полезно, спасибо. –

7

В качестве общей точки веб-разработки абсолютное позиционирование неодобрительно. Он имеет редкое применение, но не так много в хорошем дизайне css.

Визуальная студия приобрела этот макет, используя встроенный css-стиль, но это было неподвижное css-позиционирование.

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

Наконец-то, чтобы добавить любые функции whiz bang, вы можете использовать Javascript, например JQuery, чтобы визуально улучшить внешний вид стандартных элементов управления html.

Таким образом, ваш сайт может «деградировать изящно» с помощью браузеров, которые менее способны.

+0

+1, спасибо. Хорошая информация. –

Смежные вопросы