Почему динамический CSS не более популярен? - PullRequest
1 голос
/ 05 декабря 2010

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

Я вижу людей, говорящих о решениях javascript, чтобы обойти ограничения CSS, но почему CSS не может быть динамически «жестко закодирован»?

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

Есть ли недостатки в этом, по сравнению, скажем, изменение размера элементов с помощью javascript перед загрузкой страницы? Любые другие потенциальные ошибки, о которых я должен знать?

Я делаю это в Django, но вопрос в значительной степени не зависит от фреймворка / языка.

Просматривая вопросы в теге dynamic-css, я нашел {less} для Ruby, который выглядит довольно круто, но в целом не так много разговоров о файлах css, генерируемых на стороне сервера.

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

img {   
   position: absolute;   
   top: 50%;
   left: 50%;
   width: 500px;
   height: 500px;
   margin-top: -250px; /* Half the height */
   margin-left: -250px; /* Half the width */
}

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

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

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

Ответы [ 5 ]

2 голосов
/ 05 декабря 2010

Я согласен с тем, что другие опубликовали.HTML генерируется на стороне сервера, потому что контент динамический, и никто не пойдет на Facebook, Google, YouTube или почти где-либо еще, если они всегда обслуживают один и тот же HTML.Генерация на стороне сервера позволяет публиковать и просматривать контент по мере его добавления и улучшения пользователями.

CSS, с другой стороны, редко предоставляется пользователями, и если это так, их называют веб-дизайнерами и простогенерировать статические темы или файлы и оплачиваются владельцем сайта.Есть некоторые сайты, где это происходит, например csszengarden , но файлы по-прежнему статичны.Однако основное отличие заключается в том, что пользователи не чувствуют, что их единственным вкладом в сайт является положение элементов на странице и разные цвета.Одним из основных моментов CSS является последовательность.Черт, stackoverflow может изменять CSS каждый раз, когда кто-то публикует ответ, перемещать все кнопки и изменять всю страницу на ltr вместо того, чтобы просто обслуживать другой HTML.Сказать, что это будет раздражать, было бы самым большим преуменьшением века.

Однако я не думаю, что это то, о чем вы спрашивали.Как вы упомянули, большое преимущество динамического CSS: вы можете динамически жестко его кодировать. dot-less-css имеет несколько замечательных примеров на своей домашней странице.Это позволяет вам писать CSS в более простой промежуточной форме, с цветами, хранящимися в переменных вместо постоянно повторяющихся, вложенных правил и других функций, облегчающих кодирование.Это те функции, которые многие программисты хотели бы поддерживать во всех браузерах, поэтому некоторые люди ответили на это и создали свои собственные фреймворки, чтобы «взломать» их вместе.В некотором роде говорят, что JQuery - это то, как javscript должен был работать все время.

Есть ли минусы в этом сравнении, скажем, изменение размеров элементов с помощью javascript до загрузки страницы?Любые другие потенциальные ошибки, о которых я должен знать?

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

1 голос
/ 05 декабря 2010

CSS имеет тенденцию кешироваться, поэтому генерация его на лету будет: а) нуждаться в кэшировании css и б) генерировать гораздо больше ресурсов сервера.

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

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

1 голос
/ 05 декабря 2010

Вы ищете что-то вроде Sass? http://sass -lang.com /

0 голосов
/ 05 декабря 2010

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

0 голосов
/ 05 декабря 2010

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

В некотором смысле, многие вещи проще обрабатывать с помощью javascript. Под этим я подразумеваю, что, если вы уже делаете анимацию или что-то другое с JS, вы можете также делать все свои динамические изменения с ним. Используйте такую ​​библиотеку, как jQuery, и она станет только лучше.

...