Jquery css or style which

Может ли jQuery получить все стили CSS, связанные с элементом?

Есть ли способ в jQuery, чтобы получить все CSS из существующего элемента и применить его к другому без перечисления их всех? Я знаю, что это сработает, если они были атрибутом стиля с attr() , но все мои стили находятся во внешней таблице стилей.

5 ответов

function css(a) < var sheets = document.styleSheets, o = <>; for (var i in sheets) < var rules = sheets[i].rules || sheets[i].cssRules; for (var r in rules) < if (a.is(rules[r].selectorText)) < o = $.extend(o, css2json(rules[r].style), css2json(a.attr('style'))); >> > return o; > function css2json(css) < var s = <>; if (!css) return s; if (css instanceof CSSStyleDeclaration) < for (var i in css) < if ((css[i]).toLowerCase) < s[(css[i]).toLowerCase()] = (css[css[i]]); >> > else if (typeof css == "string") < css = css.split("; "); for (var i in css) < var l = css[i].split(": "); s[l[0].toLowerCase()] = (l[1]); >> return s; > 

Передайте объект jQuery в css() , и он вернет объект, который затем можно подключить к jQuery $().css() , ex:

var style = css($("#elementToGetAllCSS")); $("#elementToPutStyleInto").css(style); 

это выглядит потрясающе, но когда я пытаюсь это сделать, оно пропускает некоторые свойства, такие как font-family.

@ Damon: Это верное предположение, учитывая, что первая строка ответа говорит . вот решение, которое извлекает как встроенное, так и внешнее оформление .

Читайте также:  Static nested classes in java

@ Damon это не пропускает определенные свойства, встроенные или нет. Я только что проверил это сам. Не могли бы вы предоставить jsfiddle или gist, показывающие, что он не работает? В остальном все работало просто отлично.

Одна из проблем с отличным решением — некоторые браузеры применяют одну и ту же политику происхождения и устанавливают для cssRules значение null .

+1, но кажется уязвимым для стилей с более высоким приоритетом, если они находятся в неправильном порядке в таблице стилей. Решение этого может быть довольно сложным и, вероятно, дорогим.

Только что попробовал использовать код, он, кажется, сорвался, выдав мне эту ошибку в chrome: Uncaught Error: синтаксическая ошибка, нераспознанное выражение: button.ui-button :: — moz-focus-inner

«button.ui» нигде не встречается в этом коде, поэтому я не уверен, как он может иметь синтаксическую ошибку на этом? Вы уверены, что это не плагин для браузера? Я не могу получить ошибку, чтобы это произошло. Есть JSFiddle?

Предоставление патча / исправления или jsFiddle, которое точно указывает, где именно происходит ваша ошибка (если таковая имеется), будет высоко цениться — для поддержки вашего заявления и предоставления информации для других. Спасибо!

Примечание: getMatchedCSSRules в настоящее время реализовано только в браузерах Webkit ( таблица совместимости ), поэтому использование этого в Firefox или IE вызовет проблемы. Вам понадобится полифилл для обработки этого кода.

Примечание: Модераторы изменили мой оригинальный код, я не даю никаких гарантий, что все будет работать.

Обратите внимание, что это не возвращает стили браузера по умолчанию, а только стили, которые были применены таблицами стилей или встроенными.

Не работает для меня, я тестировал в Chrome консоли. это не работает. Когда я ставлю «var style = css (jQuery (‘# main input’));» после выполнения функции css () я получил следующую ошибку «Uncaught Syntax error, нераспознанное выражение: hover»

CORS начинает меня раздражать со всей своей отсталостью: вы получите Error: The operation is insecure. если CSS с удаленного сайта .

вот скрипка моей версии, которая очень похожа, но не подавляет псевдо-селекторы. также есть демо: jsfiddle.net/a2f0phg5/1

Я обнаружил, что это решение не подходит, если вы используете @import, каким-то образом, кроме, конечно, не использования @import?

Присоединяясь @Mike Хочу напомнить, что приведенные выше решения не копируют состояния наведения, активных и т. Д. Выбранных элементов. : — /

@bencergazda Я не пробовал, но если вам нужно: hover, вы можете вызвать наведение мыши. Не уверен, что вы могли бы стать активными. Может быть, вызывает муссоун? Попробуйте.

Этот код теперь вызывает Error: The operation is insecure в Firefox Error: The operation is insecure (chrome все еще работает). Это связано с .cssRules в var rules = sheets[i].rules || sheets[i].cssRules; , Вам нужно будет попробовать / поймать эту строку, чтобы защитить Firefox.

Два года спустя, но у меня есть решение, которое вы ищете. Не намереваясь взять кредит у оригинального автора, здесь плагин, который я нашел, работает исключительно хорошо для того, что вам нужно, но получает все возможные стили во всех браузерах, даже IE.

Предупреждение: Этот код генерирует много результатов и должен использоваться экономно. Он не только копирует все стандартные свойства CSS, но и все свойства CSS для этого браузера.

/* * getStyleObject Plugin for jQuery JavaScript Library * From: http://upshots.org/?p=112 */ (function($)< $.fn.getStyleObject = function()< var dom = this.get(0); var style; var returns = <>; if(window.getComputedStyle)< var camelize = function(a,b)< return b.toUpperCase(); >; style = window.getComputedStyle(dom, null); for(var i = 0, l = style.length; i < l; i++)< var prop = style[i]; var camel = prop.replace(/\-([a-z])/g, camelize); var val = style.getPropertyValue(prop); returns[camel] = val; >; return returns; >; if(style = dom.currentStyle)< for(var prop in style)< returns[prop] = style[prop]; >; return returns; >; return this.css(); > >)(jQuery); 

Основное использование довольно простое, но он также написал для этого функцию:

$.fn.copyCSS = function(source)

Источник

Получение и установка CSS-свойств элементам в jQuery

jQuery - Работа со стилями элемента

В jQuery работа со стилями HTML элементов осуществляется через метод css . Данный метод используется как получения значения стилей, так и для их добавления, изменения и удаления.

Как получить стиль элемента в jQuery

Первый вариант метода css — это получение окончательного значения CSS-свойства непосредственно применяемого к элементу.

// Вариант 1 (получение окончательного одного CSS свойства) .css( propertyName ) // propertyName (тип: Строка) – имя CSS-свойства, значение которого нужно получить .css( propertyNames ) // propertyName (тип: Массив) – массив, состоящий из одного или нескольких CSS-свойств, значения которых нужно получить

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

Пример, в котором получим цвет фона непосредственно применённого к элементу #header :

var bgHeader = $('#header').css('background-color');

В jQuery названия CSS-свойств можно указывать как в CSS, так и как это принято в JavaScript. Т.е. убирать дефисы и заменять буквы, следующие за каждым дефисом на прописные.

// можно и так var bgHeader = $('#header').css('backgroundColor');

Если необходимо получить значения указанного CSS свойства или набора этих свойств у всех элементов текущего набора, то в этом случае необходимо использовать, например, метод each.

Например, определим значение свойства display у всех выбранных элементов и выведем их в консоль:

// переберём все элементы .container $('.container').each(function(index){ // значение css-свойства display текущего элемента набора var display = $(this).css('display'); // выведем результат в консоль (индекс элемента в наборе и его значение css-свойства display) console.log(index + '. display = '+ display); });

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

Например, при нажатии на HTML элемент div выведим его ширину и высоту:

 .  

Как изменить или добавить стиль к элементу в jQuery

Установить стиль элементу осуществляется тоже с помощью метода css, но в этом случае используется следующий синтаксис:

// 1 вариант (для установки одного стиля элементу) .css( propertyName, value ) // 2 вариант (установка значения стиля с помощью функции) css( propertyName, function ) // 3 вариант (для установки несколько стилей элементу) css( properties ) // Описание параметров: // propertyName (тип: String) – имя CSS-свойства // value (тип: String или Number) – значение, которое нужно установить CSS-свойству // function – функция, результат выполнения которой будет установлен в качестве значения CSS-свойству // Синтаксис функции: // Function( Integer index, String value ) => String или Number // В качестве аргументов функция получает индекс элемента (index) и текущее окончательное значение CSS-свойства (value) // properties (тип: объект JavaScript, содержащий ноль или более пар ключ-значение) – объект, состоящий из пар DOM-свойство-значение, которые нужно установить элементу.

При установлении стилей с помощью метода css , они задаются ко всем элементам текущего набора.

Например, добавим ко всем элементам .info серый цвет фона (background):

Если необходимо применить к каждому элементу текущего набора сразу несколько CSS свойств, то в качестве параметра этого метода необходимо использовать объект JavaScript, содержащий пары ‘имяСвойства’ : значение.

.css({'имяСвойства1':значение, 'имяСвойства2':значение. })

Пример, в котором показано как можно задать несколько CSS-свойств к элементам .success :

$('.success').css({ 'color':'green', 'font-size':'16px' });

В качестве значения строки также можно использовать относительные значения, которые начинаются с += или -= . Первое выражение используется для увеличения текущего значения CSS свойства, а второе — для уменьшения.

Например, увеличим отступ слева и справа у элементов .container на 10px :

$('.container').css({ "padding-left": "+=10", "padding-right":"+=10" });

Ещё один способ использования метода css — это применение в качестве 2 параметра функции.

.css('имяСвойства',функция) // функция: Function( Integer index, String value ) => String или Number

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

Например, установим всем элементам .text , у которых цвет шрифта не равен чёрному, CSS свойство color , равное red .

$('.text').css('color',function(index,value){ if (value!=='rgb(0, 0, 0)') { return 'red'; } });

Например, поменяем значение CSS свойства width у всех элементов img на странице, находящихся #content :

Как удалить определённый стиль у элемента

Для того чтобы в jQuery убрать определённый стиль у элемента, ему необходимо присвоить просто пустую строку.

Например, уберём у всех изображений на странице CSS свойство height :

Источник

JavaScript jQuery CSS Стили

jQuery был создан в 2006 году Джоном Ресигом. Он был разработан для обработки несовместимости браузеров и упрощения манипулирования HTML DOM, обработки событий, анимации и Ajax. Уже более 10 лет jQuery является самой популярной библиотекой JavaScript в мире.

Однако после версии 5 версии JavaScript 5 (2009 г.) большинство утилит jQuery можно решить с помощью нескольких строк стандартного JavaScript:

Скрытие HTML элементов

jQuery

JavaScript

Отображение элементов HTML

jQuery

JavaScript

Стилизация HTML элементов

Измените размер шрифта HTML элемента:

jQuery

JavaScript

Мы только что запустили
SchoolsW3 видео

ВЫБОР ЦВЕТА

colorpicker

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:

Ваше предложение:

Спасибо Вам за то, что помогаете!

Ваше сообщение было отправлено в SchoolsW3.

ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат

SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.

Источник

Оцените статью