Есть ли ограничение на размер файла CSS? - PullRequest
11 голосов
/ 09 июля 2010

Я использую ASP.NET MVC для разработки сайта. CSS-файл вырос до 88 КБ и содержит чуть больше 5000 строк. Недавно я заметил, что стили, добавленные в конце, отсутствуют в браузере. Есть ли ограничение на размер файла CSS или количества строк?

EDIT : Извините, я забыл упомянуть, что эта проблема возникает в Windows 7 как в FireFox, так и в IE8.

Ответы [ 11 ]

16 голосов
/ 09 июля 2010

Internet Explorer имеет , как говорят, имеет ограничение 4096 CSS правил на файл. Существует ограничение на функцию addRule, которая применима также и к правилам, применяемым через таблицу стилей: Ссылка

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

13 голосов
/ 09 июля 2010

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

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

Для начала нужно выполнить поиск Google на css reset .Существует несколько различных реализаций, но они обычно следуют теме переопределения различий в компоновке для каждого из браузеров и удаления произвольных границ, полей, отступов и т. Д. Начиная с чистого листа, если хотите.Затем вы можете продолжить работу над созданием своих стилей, стараясь максимально использовать каскадные и css цепочки

Цепочки - это то, где у вас более одногокласс по элементу.Например:

<div class="box right small"></div>  

box может иметь несколько общих стилей, которые вы можете применить ко многим элементам блока, например, div, h1 ... h6, p, ul, li, table, blockquote, preформа.small говорит само за себя right может быть просто выровнен вправо, но с отступом в 4 пикселя справа.Без разницы.Дело в том, что вы можете иметь несколько классов на элемент и создавать стили из многократно используемых строительных блоков - группировок отдельных настроек стиля.В противном случае он называется классами.

На очень простом уровне ищите возможности для объединения стилей:

, поэтому:

h1 {font-family: tahoma, color:#333333; font-size:1.4em;}  
h2 {font-family: tahoma, color:#333333; font-size:1.2em;}  
h3 {font-family: tahoma, color:#333333; font-size:1.0em;}  

становится

h1, h2, h3 {font-family: tahoma, color: #333}  
h1 {font-size:1.4em;}  
h2 {font-size:1.2em;}  
h3 {font-size:1.0em;}  

Только немного меньше, но делайте такие вещи много раз, и вы можете что-то изменить.

Кроме того, Подтвердите свой CSS .Это поможет вам обнаружить ошибки в вашем коде.

9 голосов
/ 09 июля 2010

Что валидатор CSS говорит о ваших правилах CSS?

Вырезайте и вставляйте последние "неэффективные" правила вашей таблицы стилей в начале: некоторые из них теперь работают?

Очевидные ошибки опечаток можно увидеть с помощью хорошего текстового редактора, такого как PSPad, Notepad ++, Scite: " ; /* */ и так далее.Они имеют довольно ограниченную область действия, например ;, или их легко увидеть, как закрытый комментарий.Менее очевидная проблема, с которой я столкнулся, заключалась не в закрытии скобок:

background: green url(img/dummy_gradient.png left top no-repeat;

Ничего не работало до следующего ) в моих правилах CSS на 50 строк ниже!

8 голосов
/ 18 сентября 2013

Ваш вопрос:

Есть ли ограничения по размеру файла CSS или количества строк?

Ответ для IE9 и ниже: да , в зависимости от того, что вы подразумеваете под "линиями" и "пределом размера".

  1. Размер: максимальная таблица стилей, которую будет читать IE9 и меньше, составляет 288 КБ. Любые стили после этой отметки НЕ читаются. Прочтите эту статью Джошуа Перина, чтобы узнать немного больше об этом .
  2. Не существует максимального количества строк в таблице стилей, о которых я знаю. Максимальное количество селекторов. IE9 и ниже прекращает чтение (и может даже не загрузить файл, эта информация, кажется, в воздухе) на 4095 селекторов на таблицу стилей. (см. связанную статью ниже)
  3. Если под "линиями" вы подразумеваете, сколько строк связанных таблиц стилей @import вы можете добавить в файл, вы можете импортировать до 31 таблицы стилей максимум. Каждая таблица стилей может иметь 31 максимум таблиц стилей @imported. (см. связанную статью ниже)
  4. @ Вложение импорта поддерживает до 4 уровней глубины.

В этой статье на MSDN рассказывается немного больше о максимальном селекторе и связанных таблицах стилей, а также о том, как они достигли этих цифр при разработке IE.

6 голосов
/ 09 июля 2010

Нет, нет предела.Возможно, файл кэшируется, и поэтому вы не видите изменений.Попробуйте очистить кеш браузера или Ctrl + F5 .

3 голосов
/ 09 июля 2010

Для большинства обычных браузеров ограничений нет (как указано в большинстве ответов).Еще одно очень важное соображение.Если вы сжимаете свои ответы, в Apache я бы использовал gzip или deflate, размер файла резко уменьшается.Поскольку CSS очень повторяется, и, например, в ваших 5000 строках вы используете слово «цвет» 800 раз, при сжатии браузер отправляет только один экземпляр слова «цвет» с 799 ссылками на слово в сжатом словаре.,Таким образом, ваш файл может быть 88 КБ на диске, но 9 КБ по проводам.

Такие инструменты, как FireFoxes Firebug полезны для просмотра размера сжатого файла.Я уверен, что IE имеет инструмент просмотра заголовка http.

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

1 голос
/ 09 июля 2010

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

Это может быть причиной твоих забот.

0 голосов
/ 09 июля 2010

Вы подтвердили свой CSS? Некоторые браузеры включают стили вплоть до синтаксической ошибки (или определенных синтаксических ошибок), а затем эффективно обрезают файл для вас, что приводит к такому поведению.

Я бы также проголосовал за рефакторинг вашего CSS, вы, вероятно, можете сэкономить немного меньше. , .

0 голосов
/ 09 июля 2010

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

Причина, по которой вы не видите изменений, возможно, кешируется. Вы можете использовать Ctrl + F5 , чтобы очистить кеш страницы в вашем браузере (как упоминал Дарин).

Мы переименовываем файл CSS, когда публикуем его новую версию, чтобы быть уверенными, что все посетители получат последнюю версию.

0 голосов
/ 09 июля 2010

Теоретически, нет предела.

Практически, большинство обычных браузеров (FF, Chrome, Opera, Safari) могут обрабатывать все, что вы на них бросаете.Однако некоторые из старых и / или мобильных браузеров (Access NetFront для одного комплекта со многими мобильными телефонами) сталкиваются с проблемами с большими страницами (около 100 КБ и выше) и выдают всевозможные ошибки.

TL;ДР: Нет, если только вы не пытаетесь поддерживать всевозможные странные браузеры.

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