Комментарии 19
зачем все эти пляски с бубном, если стили задаются через яваскрипт, а не css?
мне больше импонирует такой подход: nin-jin.github.com/web-components/lib-wc-css3/lib-wc-css3/lib-wc-css3.doc.xml
мне больше импонирует такой подход: nin-jin.github.com/web-components/lib-wc-css3/lib-wc-css3/lib-wc-css3.doc.xml
+7
Основная мысль статьи заключается в выводе. В случае использования jQuery, нет смысла создавать плагины, если можно расширить поддержку свойств в методе .css()
0
Это конечно хорошо, но без тестов на производительность, актуально только для небольших just-for-fun проектов, где, в принципе, можно обойтись набором известных хаков. В этом случае описанный метод теряет смысл, т.к. он очевидно был призван ускорить и упростить процесс разработки в больших проектах.
Да, и это все далеко от парадигмы пуленепробиваемого кода.
Да, и это все далеко от парадигмы пуленепробиваемого кода.
-1
Вы бы поаккуратнее с Чаком.
+8
Скажите, пожалуйста, подхватывает ли этот метод стили, переданные через css-файл?
0
Вы сами определяете, что и как подхватывать.
0
Судя по проверке в jsFiddle: jsfiddle.net/Eliah/etKvD/ ответ на мой вопрос отрицательный. То есть, $.cssHooks не подхватывает данные из css-файлов, к сожалению.
Это существенно снижает его ценность. В отрыве от css файлов функция css() не слишком полезна.
Это существенно снижает его ценность. В отрыве от css файлов функция css() не слишком полезна.
+1
Не поленюсь еще раз повторить. Вы сами определяете что и как подхватывать. Хотите, берите из CSS (getComputedStyle), хотите берите из атрибута.
0
> Хотите, берите из CSS (getComputedStyle)
Буду очень признателен, если приведете пример кода, как из CSS подхватить мое свойство «my» в примере выше.
Буду очень признателен, если приведете пример кода, как из CSS подхватить мое свойство «my» в примере выше.
0
Познавательно, но имхо не оправдано. .css() очень не желательно использовать вообще как setter, особенно с экзотическими свйоствами, которые для каждого браузера имеют свой префикс. Стили должны быть отделены от скриптов. Поэтому лучше юзать toggle/add/remove Class. А для смены видимости .hide(), .show(), toggle() и прочее.
+1
По ссылке на альтернативную документацию как раз и рассматривается случай, когда вы хотите определить «экзотические» свойства.
То есть по сути идет перехват геттера и сеттера и установка новых.
А отделение стилей от скриптов не всегда оправданы.
(function($){
if ( !$.cssHooks ){
alert("jQuery 1.4.3+ is needed for this plugin to work");
return;
}
var div = document.createElement( "div" );
$.support.borderRadius =
div.style.WebkitBorderRadius === ''? 'WebkitBorderRadius' :
(div.style.MozBorderRadius === ''? 'MozBorderRadius' :
(div.style.borderRadius === ''? 'borderRadius' : false));
//only set cssHooks for browsers that don't support "borderRadius" natively
if ( $.support.borderRadius && $.support.borderRadius !== "borderRadius" ){
$.cssHook.borderRadius = {
get: function( elem, computed, extra ){
return $.css( elem, $.support.borderRadius );
},
set: function( elem, value){
elem.style[$.support.borderRadius] = value;
}
};
}
})(jQuery);
$("#element").css("border-radius", "20px");
То есть по сути идет перехват геттера и сеттера и установка новых.
А отделение стилей от скриптов не всегда оправданы.
0
Мне за приличное время верстки различные интерфейсов еще ни разу не понадобилось юзать css() как сеттер. В приведенном ваами примере 4 лишние проверки, которых можно избежать просто используя класс. Ну и прочие каноничное правило, о том, что ксс удобнее менять и видеть в ксс-файле, вдруг после вас будет будет работать верстальщик, который не знает скриптов да и просто с классами быстрее разобраться, что-то изменить.
Хоть и в 99,99% случаев не оправдано — очень познавательно, плюс посту я поставил. Это было б ключевой техникой, если б понадобилось написать что-то вроде PIE.htc на джеквери.
Хоть и в 99,99% случаев не оправдано — очень познавательно, плюс посту я поставил. Это было б ключевой техникой, если б понадобилось написать что-то вроде PIE.htc на джеквери.
0
блин, ночью голова плохо соображает, понаписал, как китаец…
-1
Следуя вашей логике css() вредно юзать и как геттер.
0
Нет, иногда как геттер нужно. Например, недавно писал свои нестандартные селекты для 1го проекта. В макете в одной из форм их было очень много и разной ширины. Соответственно, проще и правильнее было начальным настоящим селектам проставлять style width, нежели плодить тучу классов. И соответственно при замене тру селекта на стандартный приходилось вначале делать проверку, вернет ли что-то геттер css('width'), чтоб новый селект стал такой же ширины. Кстати, можно было б использовать width(), но css('width') в данном случае было надежней ибо по дефолту размер селектов в разных браузеров разный.
0
У вас эти свойства анимироваться не будут :) надо ещё сделать $.fx.step['background-alpha']
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
cssHooks — расширяем множество CSS свойств