Относительный CSS против фиксированного макета - PullRequest
2 голосов
/ 15 сентября 2011

H!

Я узнал, что при написании GUI, особенно если этот GUI должен использоваться в разных операционных системах, никогда не следует использовать фиксированные позиции для каких-либо графических элементов в окне программы. Этот принцип обычно преподается на курсах начального программирования, поскольку GUI отображается немного по-разному в каждой отдельной операционной системе, и принудительное фиксирование координат для элементов может иметь неприятные последствия на некоторых машинах. Создание привлекательного графического интерфейса без фиксированных координат не является проблемой, поскольку в каждом объектно-ориентированном API есть объекты макета (например, GridLayout или BorderLayout в Java). В настоящее время я работаю над веб-страницей, и я удивлен, узнав, что то, что можно прочитать в Интернете о css и html, является совершенно противоположным!

Я пытаюсь создать макет, похожий на этот: http://www.dynamicdrive.com/style/layouts/item/css-fixed-layout-21-fixed-fixed/ Однако, этот и многие другие инструкции в CSS используют фиксированные или абсолютные координаты. Можно ли переделать эту раскладку без указания точного расположения подразделений или «панелей»? Есть ли способ добавить эти подпанели в основной контейнер и заставить их автоматически упорядочивать себя по заданному шаблону после того, как они были добавлены?

Является ли использование абсолютных / фиксированных координат действительно хорошей идеей? Каков наилучший способ создания размещенного мною макета?

Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 15 сентября 2011

Я бы взглянул на сеточные системы css - http://960.gs/ - одна из самых известных, и если вы новичок в css, у вас есть видео-ролики о том, как их использовать

Но http://www.tinyfluidgrid.com/ моя любимая жидкость

1 голос
/ 15 сентября 2011

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

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

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

Здесь, например, я создал макет, похожий на тот, который вы связали с , гдевместо того, чтобы иметь фиксированные размеры, содержимое в целом изменяется до шириныш.Основное содержание всегда составляет 80% от общей ширины, а не является фиксированным размером.Я также добавил несколько маленьких «панелей», как вы описали, которые будут перестраиваться в зависимости от ширины основного содержимого div, заполняя столько ширины, сколько доступно.

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

1 голос
/ 15 сентября 2011

Для конкретной компоновки, к которой вы привязаны, ее очень просто создать без необходимости устанавливать абсолютные или фиксированные позиции, которые будут работать и корректно отображаться в большинстве основных браузеров. Этот пример, который я сделал в jsFiddle , представляет собой очень простую фиксированную компоновку с использованием float, но также с заданной шириной.

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

Ваш заголовок, который заполняет всю ширину оболочки.

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

И ваш нижний колонтитул, который отображается так же, как заголовок.

Это хорошо для использования в качестве макета, но, как и в примерах, связанных с asbjornu, после того, как вы начнете изменять размер браузера, так как ширина вашей обертки составляет 800px, когда ваш браузер опустится ниже этого, он не будет изменять размеры до чего-то меньшего так как это исправлено. Таким образом, содержимое будет затем прокручиваться пользователю. Для меня это не большая проблема, так как я знаю, что большинство людей не будут просматривать мой сайт с небольшим оконным браузером, и если это так, то они, скорее всего, привыкли к необходимости прокрутки, так как многие сайты сделаны так, и большинство смартфонов / планшетов автоматически изменяют размеры с функцией масштабирования, чтобы в любом случае правильно отображать их, поэтому большую часть времени это не составляет большой проблемы.

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

1 голос
/ 15 сентября 2011

Вместо создания One True Design , который должен работать для всех пользователей во всех браузерах, операционных системах, устройствах и размерах экрана, гораздо лучше следовать принципам Адаптивный веб-дизайн для создания нескольких разных макетов с одинаковым HTML и CSS.

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

...