Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.05.2014, 08:27
bio bio вне форума
Новичок на форуме
Отправить личное сообщение для bio Посмотреть профиль Найти все сообщения от bio
 
Регистрация: 08.08.2012
Сообщений: 7

Парсер css на js
Есть css в виде текста:

Код:
.title {
  font-size: 13px;
}

.amount {
  background-image: linear-gradient(to bottom, #d84436 0%, #e94c3d 100%);
}

.total {
  background-image: linear-gradient(to bottom, #e94c3d 0%, #d84436 100%);
}
Нужно вытащить селектор и свойство, только если у селектора есть свойство с градиентом.
Подскажите как реализовать наиболее поизводительнее так как число строк может достигать до 10 000.
Ответить с цитированием
  #2 (permalink)  
Старый 19.05.2014, 08:38
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Если это на клиенте необходимо сделать, можно ничего не парсить, а создать iframe, подключить там CSS файл и пройтись по свойствам:
document.styleSheets[i].rules[j].cssText.indexOf('linear-gradient')
Ответить с цитированием
  #3 (permalink)  
Старый 19.05.2014, 09:26
bio bio вне форума
Новичок на форуме
Отправить личное сообщение для bio Посмотреть профиль Найти все сообщения от bio
 
Регистрация: 08.08.2012
Сообщений: 7

document.styleSheets не подходит так как нужна поддержка IE8+, а он(IE) вырезает не стандартные значения свойств.
Ответить с цитированием
  #4 (permalink)  
Старый 19.05.2014, 13:18
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Если грубо то примерно так:
<script>var css = function(){/*
.title {
  font-size: 13px;
}

.amount {
  background-image: linear-gradient(to bottom, #d84436 0%, #e94c3d 100%);
}

.total {
  background-image: linear-gradient(to bottom, #e94c3d 0%, #d84436 100%);
}
*/}.toString().replace(/^.*[\n\r]+|[\n\r]+.*$/g,'');

var arr = css.match(/[^}]+?\{[^}]+?linear-gradient[^}]+}/g);

alert(arr.join('\n'))</script>


А тонко и вручную - это вам самостоятельно надо будет делать.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу jquery, js, html, css спеца. AlexBell Работа 41 23.11.2012 08:20
JS + CSS Под загрузка фонового изображения XboxPro Элементы интерфейса 0 14.11.2012 11:16
Разное оформление для посетителей с JS и без fry2 Events/DOM/Window 13 03.02.2012 17:45
С помощью JS добавить к ссылкам картинку в CSS wlad2 Элементы интерфейса 7 16.10.2010 23:44
JQuery CSS анализатор javascript jQuery 2 15.08.2010 21:27