Для этого вам нужно указать font-weight:900
(или любое значение, большее 600
, bold
или bolder
).
.myClass {
visibility: hidden;
}
.myClass::after {
font-family: 'Font Awesome 5 Free';
content: "\f008";
visibility: visible;
font-weight: 900;
}
Movies
Поскольку regular
является PRO и вам нужен solid
один:
https://fontawesome.com/icons/film?style= solid
Почему работает другая иконка?
Поскольку \f007
- это значок: https://fontawesome.com/icons/user?style=regular , и, как вы можете видеть, regular
не PRO, поэтому вам не нужно указывать font-weight
. Вам нужно указать его только тогда, когда вы хотите показать solid
.
.myClass::after {
font-family: 'Font Awesome 5 Free';
content: "\f007";
visibility: visible;
font-weight: 900;
}
.myClass-1::after {
font-family: 'Font Awesome 5 Free';
content: "\f007";
visibility: visible;
}
Solid
Regular
В качестве побочного примечания , все версии light
являются PRO, поэтому для них в свободном пакете нет font-weight
.
Вы можете проверить документацию для более подробной информации: https://fontawesome.com/how-to-use/on-the-web/advanced/css-pseudo-elements
Нет, вы не можете использовать строчную интерполяцию с чем-то отличным от строкового литерала, так как компилятор создает строку «обычного» формата даже при использовании интерполяции строк.
Поскольку это:
string name = "bar";
string result = $"{name}";
скомпилировано в это:
string name = "bar";
string result = string.Format("{0}", name);
строка во время выполнения должна быть «обычной» строкой формата, а не Строковый интерполяционный эквивалент.
Вместо этого вы можете использовать простой старый String.Format
.
Больше идеи, противоположной ответу.
В примере, показанном в вопросе, вы можете сделать следующее.
var format = "URL: ";
...
var url = "http://google.com";
...
var result= $"{format} {url}";
У меня есть реальный проект, где Я должен сделать что-то подобное:
var label = "Some Label";
var value = "SomeValue";
//both label & value are results of some logic
var result = $"{label}: {value}";
Надеюсь, это кому-то поможет.
Кажется, что вы можете сделать это следующим образом:
var googleUrl = "http://google.com";
var url = $"URL: {googleUrl}";
System.Console.WriteLine(url);
Вы можете проверить более подробную информацию в https://msdn.microsoft.com/en-us/library/dn961160 .aspx
Интерполяция строк - это компилятор, а не библиотека.
Отверстия не являются именами, а выражениями:
var r = new Rectangle(5, 4);
var s = $"area: {r.Width + r.Heigh}":
Как вы это сделаете для локализации, так как вы намерены?
Даже r
существует только во время компиляции. В IL это просто позиция в стеке переменных метода.
Я сделал то, что вы намереваетесь сделать для ресурсов и файлов конфигурации.
Поскольку вы можете иметь только конечный набор «переменные» для замены, то, что я сделал, был массив (или словарь, если вы предпочитаете), и используйте регулярное выражение для замены имен в отверстиях индексом. То, что я даже допустил для спецификаторов формата.
Один подход к работе вокруг этого заключается в использовании лямбда, содержащей интерполированную строку. Что-то вроде:
Func<string, string> formatter = url => $"URL: {url}";
...
var googleUrl = "http://google.com";
...
var log = formatter(googleUrl);
В C # 7.0 вы можете использовать локальную функцию вместо лямбда, чтобы сделать код немного более простым и эффективным:
string formatter(string url) => $"URL: {url}";
...
var googleUrl = "http://google.com";
...
var log = formatter(googleUrl);