Я строю диаграммы с помощью Raphael.js, к которым привязаны всевозможные стили, включая различные стили при наведении курсора. В браузерах работает следующее:
var bar = paper.rect(x, y, width, height)
.attr({"stroke-width": 0, fill: #baeadd; "fill-opacity": 0.3})
Пытаясь полностью отделить внешний вид от функциональности, я пытаюсь нацелить свои элементы Raphael с помощью CSS и добавить оттуда все стили.
Я использовал метод, описанный здесь, чтобы иметь возможность настроить таргетинг на мои фигуры во всех браузерах, используя уникальные идентификаторы:
bar.node.id = "bar-" + id;
-
*[id^="bar"] {
// Attributes listed here seem to work in modern browsers
// http://raphaeljs.com/reference.html#Element.attr
fill: #baeadd;
fill-opacity: 0.3;
}
*[id^="bar"]:hover {
fill-opacity: 0.5;
}
Вышеприведенное не работает в IE8, где Raphael вместо этого вводит элементы формы vml. Я могу указать стандартные свойства CSS, такие как background-color
, и элемент формы получит стиль, но я хотел бы знать, как применять такие атрибуты, как fill-opacity
, stroke-width
и им подобные.
Можно ли с помощью CSS задать цвета и прозрачность заливки и обводки для путей VML? объясняет роль behavior: url(#default#VML)
. Я вижу, что Raphael уже добавляет класс .rvml
ко всем элементам формы, которые он создает, и применяет это свойство поведения, но, похоже, оно не вступает в силу, как только я перестаю применять атрибуты через JS и начинаю указывать их в CSS.