В чем проблема с «абсолютным позиционированием» Visual Studio.Net, и как эта проблема решается с помощью «абсолютного позиционирования» CSS? - PullRequest
2 голосов
/ 01 октября 2009

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

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

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

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

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

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

Здорово, что все это прояснили. Спасибо.

Ответы [ 2 ]

7 голосов
/ 01 октября 2009

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

Visual Studio достигла этого макета с помощью встроенного CSS-стиля, но все равно это было абсолютное позиционирование CSS.

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

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

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

2 голосов
/ 01 октября 2009

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...