Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Плагин jQuery Background Gradient (https://javascript.ru/forum/project/11674-plagin-jquery-background-gradient.html)

FINoM 07.09.2010 01:03

Плагин jQuery Background Gradient
 
Вложений: 1
По мотивам известных хаков сделал очень простой плагин дабы облегчить себе жизнь и, возможно, другим верстальщикам. Были использованы в куче такие некроссбраузерные CSS свойства, как, например, -moz-linear-gradient для мозиллы, свойство filter для ИЕ выше 5.5 версии, бекграундовый SVG для оперы (то есть плагин совместим с большинством современных браузеров, в том числе и internet explorer). Несомненным плюсом скрипта является то, что при его выполнении не создается дополнительных блоков, то есть, по идее, не должно возникнуть несовместимости с другими скриптами, так как градиент ведет себя как обычная фоновая картинка. Так же, очевидно, градиент растягивается в зависимости от размеров блока.
Плагин инициализируется следующим образом:
$(<селектор>).backgroundGradient({startPos ition: <"top" либо "left" в зависимости от того, с какой стороны градиент должен начинаться, то есть top - вертикальный градиент, left - горизонтальный >, startColor:<цвет>, stopColor:<цвет>});
Например:
$("div#gradient").backgroundGradient({startPosition:"top", startColor:"red", stopColor:"green"});

Пример его работы в действии можно посмотреть во вложении.
Как ни крути, скрипт пока еще сырой и требует дальнейших доработок.
Просьба к комьюнити: подскажите, как избежать добавление плагином стилей в атрибут style, если это возможно.

B~Vladi 07.09.2010 10:36

Цитата:

Сообщение от FINoM
как избежать добавление плагином стилей в атрибут style

Создать свою таблицу стилей и пихать все туда, а на элемент вешать класс.
Не кажется, что лучше все-таки для каждого браузера использовать свой код?

FINoM 07.09.2010 14:29

Цитата:

Сообщение от B~Vladi
Создать свою таблицу стилей и пихать все туда, а на элемент вешать класс.

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

Сообщение от B~Vladi
Не кажется, что лучше все-таки для каждого браузера использовать свой код?

Будет куча кода.

B~Vladi 07.09.2010 15:01

Цитата:

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

Нужно будет создавать только разные классы для разных градиентов. К примеру, у тебя 100 элементов с одинаковым градиентом. Сейчас имеешь 100 засраных атрибутов style. Будешь иметь 1 класс для 100 элементов и 1 блок стилей в таблице. Навесить 100 классов намного проще.
Если у тебя 100 элементов с разным градиентом - имеем 100 классов и 100 блоков стилей в таблице. Чем это отличается от 100 засраных атрибутов?

И ещё. В этом плагине не обязательно юзать each.

FINoM 07.09.2010 15:46

Цитата:

Сообщение от B~Vladi
Нужно будет создавать только разные классы для разных градиентов. К примеру, у тебя 100 элементов с одинаковым градиентом. Сейчас имеешь 100 засраных атрибутов style. Будешь иметь 1 класс для 100 элементов и 1 блок стилей в таблице. Навесить 100 классов намного проще.
Если у тебя 100 элементов с разным градиентом - имеем 100 классов и 100 блоков стилей в таблице. Чем это отличается от 100 засраных атрибутов?

Дело говорите. Как это сделать? Вписать <style> не будет говнокодом?
Цитата:

Сообщение от B~Vladi
В этом плагине не обязательно юзать each.

Each - это применение для каждого объекта, определенного селектором, или я не так понимаю?

Mikle 07.09.2010 17:15

Всё таки лучше (если уж на то пошло) для каждого браузера отдельный стиль приклеивать... слишком много ошибок. Опера, например может забанить..

B~Vladi 07.09.2010 17:48

Цитата:

Сообщение от FINoM
Each - это применение для каждого объекта, определенного селектором, или я не так понимаю?

Да, но jQuery сам это сделает. Все равно, что писать:
$('div').each(function(){
  $(this).css({
    color: 'black'
  });
});

вместо:
$('div').css({
  color: 'black'
});

Правда, бред?:)
Цитата:

Сообщение от FINoM
Вписать <style> не будет говнокодом?

Ну во-первых, для доступа к CSS-файлам есть определённые интерфейсы. Т.е. это все делается на уровне DOM, а не регулярками.
Во вторых, jQuery не способен на такое. Поэтому работу с CSS придется реализовывать ручками. До кучи: есть расхождения ишака с браузерами, но не большое.

Если ещё осталось желание, почитай про работу с CSS тут и тут.

FINoM 04.12.2011 06:28

Ахаха, когда-то казалось, что я сделал круто :D

devote 04.12.2011 10:34

Цитата:

Сообщение от FINoM (Сообщение 140633)
Ахаха, когда-то казалось, что я сделал круто :D

Дауж =))) В ИЕ например градиент с круглыми углами не прокатит=))) Там уже VML нужен.

Pavel M. 04.12.2011 11:42

я такой штукой пользуюсь http://css3pie.com/
когда нужны некоторые новые css для старых IE использовать

а чтобы меньше писать -moz- -o- -ms- и т.д.
и вообще удобно, пользуюсь http://sass-lang.com/


Часовой пояс GMT +3, время: 10:44.