Я использую AngleSharp для анализа некоторых файлов CSS, сравнения их структуры и создания выходного файла из них. Инструмент делает все заявления явными, то есть, если правило источника:Как скомбинировать несколько объявлений CSS с сокращением
.recent-work-wrap .overlay {
padding: 15px;
}
я получаю следующий выход из AngleSharp:
.recent-work-wrap .overlay {
padding-top: 15px;
padding-right: 15px;
padding-bottom: 15px;
padding-left: 15px;
}
Это хорошо для сравнения правил и выявления изменений, но вопрос в том, как это правило можно объединить с сокращением, как указано выше?
Так как еще один пример, как получить от этого:
.sample-rule {
margin-right: auto;
margin-left: auto;
margin-top: 30px;
margin-bottom: 30px;
}
к этому
.sample-rule {
margin: 30px auto;
}
Ситуация ухудшается с декларациями CSS3, потому что они действительно могут иметь много параметров .. Я проверил некоторые инструменты minifier/uglifier CSS, но они в основном используют RegEx для удаления пробелов и меньших оптимизаций. Существует ли известный способ/инструмент/библиотека для написания оптимальных сокращений из нескольких деклараций?
Я попытаюсь построить минимальный пример. Но в основном, я повторяю правила в ICssStyleSheet и сохраняя/создавая вывод для каждого правила. Итак, что вы говорите, я мог бы создавать правила программным способом (не разбирать строку CSS) в AngleScript и получать сокращенный код, вызывая 'ToCss()'? – gpinkas
Несколько, да. Обычно 'ToCss()' уже должен пытаться получить сокращенные обозначения (если это возможно), однако вы можете принудительно выполнить это представление, вызвав стенографические объявления напрямую (см. Выше пример с «Margin», который является сокращением для «MarginTop», «MarginBottom» и т. Д., Отражающие соответствующую декларацию CSS «margin-top», ...). –
Это прекрасно работает, AngleSharp просто УДИВИТЕЛЬНО! :) Я не уверен, что эти «начальные» значения верны. – gpinkas