2013-08-20 1 views
1

мне было интересно, если бы можно было изменить селектор цвета шрифта удивительного значокЦвет шрифта удивительного селектора

Я знаю, что его можно изменить все, кроме шрифта удивительного, используя этот код

::selection{ 
    background: #ffb7b7 !important; /* Safari */ 
} 
::-moz-selection { 
    background: #ffb7b7; /* Firefox */ 
} 

example

Я также протестировал следующее:

.icon-2x::selection { 
    background: #ffb7b7 !important; 
    } 
i::selection { 
    background: #ffb7b7 !important; 
    } 

ответ

3

Проблема, кажется, что шрифт-устрашающий CSS впрыскивает иконку с помощью ::before псевдо-элемент, и браузеры, кажется, не в состоянии правильно выбрать это. Обратите внимание, что если перед значком есть разрыв строки, и вы также выбираете предыдущую строку, она работает (вроде).

Обходным путем является добавление персонажа непосредственно на разметку (в данном случае это ). Demo.

Если этот курс будет работать только с элементами с font-family: FontAwesome (шрифт awesome CSS добавляет его ко всем элементам с классом icon-[something]).

+0

+1 Это делает мою работу похожей на дерьмо, потому что моя намного длиннее, хаха –

+0

@ Zeaklous Оказывается, вы были с самого начала: это всего лишь шрифт. – bfavaretto

1

Это шрифт, так что вы просто использовать color

i::selection { 
    background: #ffb7b7; 
    color:red; 
} 

EDIT

Here is the closes you can get without adding any HTML. Вы не можете выбрать шрифт удивительные иконы, только материал внутри

EDIT 2

Если вы готовы использовать капельку Javascript вы можете сделать это с помощью окружающих DIV like this version. Вы можете сделать это именно так, как вы хотите, настроив кол. Дайте мне знать, если у вас есть еще вопросы.

Код

<div class='selectable'><i id='newSelect0' class="icon-cog"></i>.</div> 

// CSS 
i { 
    background: transparent; 
    color:black; 
} 
.selectable { 
    color:transparent; 
} 
.selectable::selection { 
    color:transparent; 
} 

// Javascript 
setInterval(function() { 
    if (window.getSelection) { 
     var text = window.getSelection().toString(); 
    } 
    var selectable = document.getElementsByClassName('selectable'); 
    for(var t = 0; t < selectable.length; t++) 
    { 
     var elem = document.getElementById('newSelect' + t); 
     if (text != '' && window.getSelection().anchorNode.parentNode == selectable[t]) { 
      elem.style.background = '#ffb7b7'; 
      elem.style.color = 'green'; 
     } else { 
      elem.style.background = 'white'; 
      elem.style.color = 'black'; 
     } 
    } 
}, 20); 
+0

Тогда вы меняете цвет шрифта, а не цвет селектора также его даже не меняет цвет значка – Ivo

+0

Попробуйте изменить пожалуйста –

+0

Что мне нужно изменить? – Ivo