Как вы организуете CSS в своем проекте?

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

1. Имейте разные таблицы стилей для каждой веб-страницы / модуля.

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

2: Иметь общие таблицы стилей, которые используются на аналогичных веб-страницах.

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

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

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

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
6
0
1 419
6

Ответы 6

Вы хотите использовать каскадный характер CSS и способы наследования правил.

Кодируйте сначала самые общие случаи, а затем меняйте конкретику.

Для проекта нормального размера это ни в коем случае не должно выходить из-под контроля.

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

/* 
This is the CSS index page. It contains no CSS code but calls the other sheets
*/
@import url("main/reset.css");
@import url("main/colors.css");
@import url("main/structure.css");
@import url("main/html-tags.css");
@import url("main/sign-up-sign-in.css");
@import url("main/pagination.css");
@import url("main/menu-items.css");
@import url("main/teachers-list.css");
@import url("main/footer.css");
@import url("main/misc-custom-sections.css");
@import url("main/error-messages.css");

Удачи в поиске собственного стиля.

использование этого способа означает, что мы связываем страницу только с этой таблицей стилей индекса? или как?, спасибо

user287745 15.12.2010 08:12

Да, вы ссылаетесь на индексный файл в своем html-файле. Приведенный выше код вызывает другие файлы.

allesklar 18.12.2010 23:29

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

В идеале я хочу, чтобы файл template.css был гибким, чтобы охватить большинство случаев.

Я попал в похожие ситуации.

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

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

Рассмотрите этот прием для достижения компромисса. Используйте свой язык по выбору (для меня PHP) для обслуживания вашего CSS. Под этим я подразумеваю, что включите ваш файл стиля следующим образом:

<link rel = "stylesheet" type = "text/css" href = "styles.php" />

, чтобы заголовок этого файла возвращал его с типом содержимого text / CSS, и этот файл

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

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

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

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

Мне помогает то, что я фактически создал псевдопространства имен для своего CSS. Я знаю, что CSS 3 поддерживает пространства имен, и это упрощает задачу, но, поскольку некоторые браузеры не поддерживают это, я делаю следующее:

  1. Создавайте папки и файлы, относящиеся к вашему проекту (я использую стиль пространства имен Java)
    • Например, /css/com/mydomain/myprojectname/globalheader.css.
  2. Затем я использую имена классов, которые соответствуют расположению файловой системы.
    • Например, <div id = 'header' class = 'com-mydomain-myprojectname-globalheader-topClass'>
  3. Используйте разделители и хорошие комментарии в вашем файле css
    • Например, / * ---------------------------- начало раздела ссылок --------------- ----- * /
  4. Используйте PHP или что-то еще, чтобы загрузить эти файлы и объединить их в одну таблицу стилей при загрузке (вы можете кэшировать полученные листы, если вы действительно умен. Соглашение о пространстве имен предотвратит конфликты между именами классов.

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

поддерживать файлы css НАМНОГО проще, если вы сможете вовлечь всех в работу с правильным использованием каскадирования и свести свои сильные стороны к минимуму.

Убедитесь, что элементы наследуют стили и что переопределения не слишком тяжелые, чтобы ваш CSS не свалился с ума. Таким образом, вы позволяете себе иметь только 2 или 3 таблицы стилей для макета / базовых стилей и переопределений. Если вы установите жесткие уровни контроля над тем, что попадает в таблицы стилей макета / основы, и будете регулярно заходить, чтобы переоценить то, что находится в таблице переопределений, чтобы увидеть, что можно переместить на базу, а что можно упростить, вы освободитесь чтобы позволить людям обходить их по своему желанию, но также и для сохранения контроля над ползучестью.

Вот моя теория ...

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

Второй подход хорош до того момента, когда вы начнете задавать вопросы ... Я имею в виду:

Должен ли стиль фона для этого div находиться в файле graphic.css или layout.css?

Должен ли стиль шрифта идти в fonts.css или в макете, когда доходит до ширины P?

Если поле для заголовка с div положения значка переходит в файл graphic.css, layout.css или fonts.css (было бы проще использовать одно и то же объявление для значка, текста и позиции .. .)?

Потом вы поняли, что в этом подходе что-то не так.

Сейчас я комментирую. МНОГО.

template.css -

/* ////// Headers ////// */
#header {
    width: 1004px;
    height: 243px; /* 263H-20MARG=243H */
    padding: 20px 0px 0px 0px;
    background-color: #000000;
    background-image:url('../images/redset/top1-bk.png');
    background-repeat:no-repeat;
    background-position:right top;
    clear: both;
}

/* logo */
#logo {
    background-image:url('../images/redset/wh-logo.png');
    background-repeat:no-repeat;
    width:327px;
    height: 263px;
    float: left;
    margin: -20px 0px 0px 0px;
}
#logo a {
    width:327px;
    height:263px;
}

/* Top menu & Banner */
#menuybanner {
    text-align: center;
/*  margin-right: 65px; optional*/
}
#bannerz {
    height: 152px;
    width: 653px;
    text-align: left;
    margin-right: 24px;
    /* optional: width: 100%;
    margin: 0px */
}
#bigmenu {
    text-align: left;
    margin: 18px 0px 14px 74px;
}

#bigmenu img {
    margin: 0px 22px 0px 0px;
}

Первоначально это было бы в трех разных CSS: макет, графика и текст. Теперь я знаю, что все делают.

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

a, .b, .c, .d, #f, #2 { background-color: black; }

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

Надеюсь на помощь.

Увидимся.

Другие вопросы по теме