Обычно у меня есть файл CSS, который имеет следующее правило:
#my-window {
position: fixed;
z-index: 102;
display:none;
top:50%;
left:50%;
}
Как я могу избежать создания такого статического файла CSS, добавляя информацию CSS во время выполнения действий к телу, или что-то подобное? (только с использованием jQuery)
Я хочу определить его один раз, но с помощью jQuery и использовать его много раз позже; вот почему я не хочу добавлять его каждый раз к конкретным элементам DOM.
Я знаю простые функции ( css("attr1", "value");
), но как мне создать полное правило CSS для повторного использования?
body
. то есть$("<style>...</style>").appendTo("body");
Просто
Заметили обратную косую черту? Они используются для объединения строк в новых строках. Оставляя их, выдает ошибку.
источник
Вы можете применить CSS объект. Таким образом, вы можете определить свой объект в вашем javascript следующим образом:
А затем просто примените его ко всем элементам, которые вы хотите
Так что это многоразово. С какой целью вы бы это сделали?
источник
Вы можете использовать insertRule, если вам не нужно поддерживать IE <9, в соответствии с dottoro . Там также есть немного кросс-браузерного кода.
источник
Вот плагин jquery, который позволяет вам внедрять CSS:
https://github.com/kajic/jquery-injectCSS
Пример:
источник
В этом нет ничего нового по сравнению с некоторыми другими ответами, поскольку в нем используется концепция, описанная здесь и здесь , но я хотел использовать объявление в стиле JSON:
Использование:
Я не уверен, охватывает ли он все возможности CSS, но пока он работает для меня. Если это не так, считайте это отправной точкой для ваших собственных нужд. :)
источник
Если вы не хотите жестко закодировать CSS в блок / файл CSS, вы можете использовать jQuery для динамического добавления CSS в элементы HTML, идентификаторы и классы.
источник
Добавление пользовательских правил полезно, если вы создаете виджет jQuery, для которого требуется пользовательский CSS (например, расширение существующей структуры CSS jQueryUI для вашего конкретного виджета). Это решение основано на ответе Тараса (первый выше).
Предполагая, что ваша HTML-разметка имеет кнопку с идентификатором «addrule» и div с идентификатором «target», содержащим некоторый текст:
Код JQuery:
Преимущество этого подхода заключается в том, что вы можете повторно использовать переменные cssrules в своем коде, чтобы добавлять или вычитать правила по желанию. Если cssrules встроен в постоянный объект, такой как виджет jQuery, у вас есть постоянная локальная переменная для работы.
источник
Обратите внимание, что
jQuery().css()
это не меняет правила таблицы стилей, оно просто меняет стиль каждого соответствующего элемента.Вместо этого я написал функцию javascript для изменения самих правил таблицы стилей.
Преимущества:
<head>
сценарии до того, как будут созданы элементы DOM, и, следовательно, до первого рендеринга документа, избегая визуально раздражающего рендеринга, затем вычисляя, а затем перерисовывая. С помощью jQuery вам придется ждать создания элементов DOM, а затем изменять их стиль и повторную визуализацию.jQuery(newElement).css()
Предостережения:
s.cssRules
определились, поэтому они будутs.rules
иметь некоторые особенности, такие как нечетное / ошибочное поведение, связанное с селекторами, разделенными запятыми, например"body, p"
. Если вы избегаете этого, вы можете быть в порядке в старых версиях IE без изменений, но я еще не проверял это."first, second"
то есть разделитель - запятая, за которой следует пробел.!important
модификатор без особых проблем.Если вы хотите внести некоторые улучшения в эту функцию, вы найдете несколько полезных документов по API здесь: https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet
источник
В (необычных) случаях, когда вы хотите часто иметь возможность динамически изменять стили - например, приложение для создания тем - добавление тегов <style> или вызов CSSStyleSheet.insertRule () приведет к растущей таблице стилей, которая может иметь производительность и дизайн отладочные последствия.
Мой подход допускает только одно правило для каждого селектора / свойства, очищая все существующие при установке любого правила. API прост и гибок:
Использование:
источник
Что если вы динамически написали раздел <script> на своей странице (с вашими динамическими правилами), а затем использовали jQuerys .addClass (class) для добавления этих динамически создаваемых правил?
Я не пробовал это, просто предлагая теорию, которая могла бы работать.
источник
Немного ленивый ответ на это, но может помочь следующая статья: http://www.javascriptkit.com/dhtmltutors/externalcss3.shtml
Кроме того, попробуйте ввести "изменить правила CSS" в Google
Не уверен, что произойдет, если вы попытаетесь обернуть document.styleSheets [0] с помощью jQuery (), хотя вы можете попробовать
источник
Вы можете использовать плагин cssRule . Код был прост тогда:
В одном из комментариев на данный момент спрашивается, почему кто-то хотел бы сделать такую вещь. Например, создание стилей для списка, в котором каждому элементу нужен отдельный цвет фона (например, список календарей GCal), в котором количество столбцов неизвестно до времени выполнения.
источник
div:before{content:'name: ';}
Вот установка, которая дает команду над цветами с этим объектом JSON
эта функция
производить этот элемент стиля
источник
если вы не хотите назначать отображение: none классу css, правильный подход - добавить стиль, jQuery.Rule сделает эту работу.
В некоторых случаях вы хотите применить стиль перед событием добавления контента ajax и исчезнуть после добавления, и это все!
источник
Здесь у вас есть функция для получения полного определения класса CSS:
источник
Вы можете использовать эту библиотеку под названием cssobj
В любое время вы можете обновить свои правила следующим образом:
Тогда вы изменили правило. JQuery не библиотека, делающая это.
источник
В последнее время я кое-что испортил и использовал два разных подхода при программировании сайта для iPhone / iPod.
Первый способ, с которым я столкнулся при поиске изменений ориентации, чтобы вы могли видеть, является ли телефон портретным или альбомным, это очень статичный, но простой и умный способ:
В CSS:
В файле JS:
В PHP / HTML (сначала импортируйте свой JS-файл, затем в тег body):
Это в основном выбирает другой предварительно установленный блок CSS для запуска в зависимости от результата, возвращаемого из файла JS.
Также более динамичным способом, который я предпочел, было очень простое дополнение к тегу скрипта или вашему файлу JS:
Это работает для большинства браузеров, но для IE лучше убрать боеприпасы с чем-то более жестким:
Или вы можете использовать
getElementByClass()
и изменять диапазон предметов.Надеюсь это поможет!
Ash.
источник
Может быть, вы можете поместить информацию о стиле в отдельный класс в вашем CSS-файле, например:
а затем использовать jQuery в точке вашего выбора, чтобы добавить это имя класса к элементу?
источник
Вы можете просто создать класс css, называемый чем-то вроде .fixed-object, в котором есть все ваши css ...
Тогда в jquery в любое время вы хотите, чтобы что-то имело этот стиль, просто добавьте к нему этот класс ...
Это кажется самым простым способом сделать это, если я не понимаю, что вам нужно сделать.
источник
Используя .addClass () в jquery, мы можем динамически добавлять стиль к элементам на странице. например. у нас есть стиль
Теперь в состоянии готовности jquery мы можем добавить CSS как .addClass (myStyle)
источник