2015-10-23 2 views
0

им с помощью стройный Library от Тима, чтобы сделать «Простой» текстовый редактор, я использую статический класс для курсив, полужирный, забастовки и Подчеркните, как:Стройный итерацию через классы GetSelection

myCss.css

.n { 
    font-weight: bold; 
} 

.i { 
font-style: italic; 
} 

.t { 
text-decoration: line-through; 
} 

.s { 
    text-decoration: underline; 
} 

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

applier = rangy.createClassApplier("n"); 
applier.toggleSelection(); 

это работает безупречно. Теперь я пытаюсь реализовать цвет переднего плана и фона, я подумал о создании класса динамического стиля под названием «передний план» и задал цвет для текста, который был выбран пользователем (из набора цветов) ИЛИ использовать классы предварительной сборки, такие как

.color1 { 
text-decortion-color: red; 
} 

.color2 { 
text-decortion-color: blue; 
} 

и перейти ..

, но в этом случае мне нужно, чтобы получить выбранные текстовые КЛАССЫ и чем итерацию и проверить, если его уже установлена, если нет, то удалить другие выставиться цвета и чем добавить новый (жесткий путь?)

Я предпочитаю использовать что-то вроде:

applier = rangy.createClassApplier("f"); 
applier.text-decoration-color: #000FFF; 

но OFC не будет работать за пределами моего ума лол ..

если итерация является «трудным путем», что бы быть хорошим/лучшим способом применить цвет для фона и переднего плана?

ответ

0

один хороший подход был найден и при условии, создателем стройного ->

https://stackoverflow.com/a/22528320/2582318

создать новый аппликатор для каждого класса цвета и чем итерация через него, чтобы проверить является его прикладным

var font16Applier = range.createCssClassApplier("font16"); 
var font17Applier = range.createCssClassApplier("font17"); 
var font18Applier = range.createCssClassApplier("font18"); 

var appliers = [font16Applier, font17Applier, font18Applier]; 

for (var i = 0, len = appliers.length; i < len; ++i) { 
    if (appliers[i].isAppliedToSelection()) { 
     if (i < len - 1) { 
      appliers[i].undoToSelection(); 
      appliers[i + 1].applyToSelection(); 
      break; 
     } 
    } 
} 
Смежные вопросы