2016-02-23 3 views
9

Я хочу, чтобы достичь следующего эффекта с помощью CSS:Шрифт удивительный процент ширины сложены значок

enter image description here

Эта звезда значок шрифта. Я хотел бы определить ширину оранжевого фона по процентам, поэтому 50% должны быть идеальной половиной звезды.

В настоящем время, я сделал следующее:

<div class="container"> 
    <span class="star star-under fa fa-star"></span> 
    <span class="star star-over fa fa-star"></span> 
</div> 

И:

.container 
{ 
    font-size: 200px; 
    height: 300px; 
    position: relative; 
    width: 100%; 
} 

.star 
{ 
    display: inline-block; 
    left: 0; 
    position: absolute; 
    top: 0; 
} 

.star-under 
{ 
    color: #ddd; 
} 

.star-over 
{ 
    color: #f80; 
    overflow: hidden; 
    width: 30%; 
} 

Проблемы заключается в том, что мне нужно, чтобы обеспечить ширину и высоту, чтобы использовать% ширину. И если я пропускаю ширину и высоту контейнера, он ничего не отображает, поскольку содержит абсолютно позиционированные дочерние элементы.

Это значение% рассчитывается на стороне сервера, так что я предпочел бы держать его рядный, как это:

<span class="star star-over fa fa-star" style="width: 62%;"></span> 

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

+0

https://jsfiddle.net/vco9r2rt/3/ –

+0

@Moogs, что является удивительным, но мне нужно, чтобы сделать эту ширину инлайн - он вычисляется в моем сценарии сервера. Я мог бы, конечно, поместить CSS в свой HTML-файл, но я бы хотел этого избежать. –

+0

https://jsfiddle.net/vco9r2rt/4/ –

ответ

3

Вы можете установить контейнер в display:inline-block и установить только верхний значок на position:absolute.

.container { 
 
    font-size: 200px; 
 
    position: relative; 
 
    display: inline-block; 
 
} 
 
.star-under { 
 
    color: #ddd; 
 
    vertical-align: top; 
 
} 
 
.star-over { 
 
    color: #f80; 
 
    position: absolute; 
 
    left: 0; 
 
    top: 0; 
 
    width: 70%; 
 
    overflow: hidden; 
 
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> 
 
<div class="container"> 
 
    <span class="star star-under fa fa-star"></span> 
 
    <span class="star star-over fa fa-star"></span> 
 
</div>

+0

Я на самом деле пробовал аналогичный путь, но мои результаты были неравными. Текстовые позиции не совпадали, если один был помещен без «position: absolute», а второй был. Мне нужно проверить все унаследованные стили. –

+1

Я заметил, что слишком эльфийский, поэтому добавил «vertical-align» и, похоже, работает хорошо. – Stickers

+0

Ха, это идея! Я попробую это и выбери свой ответ, если он сработает! Спасибо друг. –

Смежные вопросы