CSS стиль цвет неэффективен на символе звезды ( ★ ) на Samsung с Android 4.4 KitKat


На моем специализированном мобильном веб-сайте я использую символ звезды html ★ и применяю CSS на нем, особенно color.

<span class="orange">★ ★ ★</span>
<span class="grey">★ ★</span>

.orange {
    color: orange:
}

.grey {
    color: grey;
}

Все хорошо работает в большинстве браузеров и ОС, например:

Введите описание изображения здесь

Но на устройствах Samsung с Android 4.4 kitkat (Galaxy S4, S5...) , звезды изначально стилизованы touchwiz (я полагаю), и свойство color больше не влияет на стоковый браузер и Chrome, но не Firefox ! И это хорошо работает на других kitkat (LG G2, Nexus 7) или Samsung с Jelly Bean.

Введите описание изображения здесь

Я попробовал webkit определенного стиля, как -webkit-text-fill-color, без всякого эффекта .

Я искал весь стиль webkit, но ничего не соответствует, кроме -webkit-text-fill-color.

Я знаю другие способы создания звезд, таких как изображения, пользовательские шрифты или даже CSS-формы, но проще было бы лучше.

Итак, вы когда-нибудь видели это и нашли волшебный стиль, который работает ?

Спасибо.

2 11

2 ответа:

Я нашел в чем была проблема. Он находится внутри шрифтов системы, в этом файле точно:

/system/fonts/NotoColorEmoji.ttf

Изменяя этот шрифт (Samsung emoji) на другой с родным Android emoji, звезды появляются нормально. Я нашел метод здесь: XDA - [MOD] Emoji iOS / Google на Samsung S4 Kit Kat .

Таким образом, невозможно настроить Samsung stars напрямую.

Поскольку у меня есть несколько цветов и размеров звезд, работа в адаптивном дизайне и необходимость управлять retina и другими HD дисплеи, изображения были слишком обременительны для реализации.

Я попробовал CSS shapes, но поскольку я играю с разными размерами в адаптивном дизайне (изменение размера корневого шрифта в em изменяет всю страницу), что-то точное в одном размере, не было в другом.

Поэтому я использовал font-face.
На Icomoon я выбрал звезду и сделал пользовательский шрифт. Я поставил правильный стиль и все ! Я могу применить css, как я хочу.

Код выглядит так:

HTML:

<span class="icon-star"></span>

CSS :

@font-face {
    font-family: 'icomoon';
    src:url('fonts/icomoon.eot?4n7iw5');
    src:url('fonts/icomoon.eot?#iefix4n7iw5') format('embedded-opentype'),
        url('fonts/icomoon.woff?4n7iw5') format('woff'),
        url('fonts/icomoon.ttf?4n7iw5') format('truetype'),
        url('fonts/icomoon.svg?4n7iw5#icomoon') format('svg');
    font-weight: normal;
    font-style: normal;
}

[class^="icon-"], [class*=" icon-"] {
    font-family: 'icomoon';
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;

    /* Better Font Rendering =========== */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.icon-star:before {
    content: "\e600";
}

Я знаю, что этот вопрос был задан 3 года назад, но недавно я столкнулся с тем же вопросом. Один из способов-использовать CSS shadow hack Кредит идет Тиграну для оригинального решения:

.orange {
  color: transparent;  
  text-shadow: 0 0 0 orange;
}