У меня есть таблица стилей и много стилей с тем же цветом рамки (#CCCCCC
быть точным).
Есть ли способ указать некоторую переменную и повторное использование что, таким образом, вместо ввода #CCCCCC
много раз я могу ввести:
border: 1px solid $bordercolor;
P.S. Я использую ASP.NET MVC.
Не то, чтобы я в курсе, но вы можете сгенерировать свой CSS из страницы .NET.
Затем вызовите его с помощью
. StyleSheet.aspx будет выглядеть примерно так:
<%@ Page Language="C#" %>
H1
{
background-color:<%= MyColourVariable %>;
}
EDIT: Однако сегодня я бы предложил использовать LESS или SASS
Думаю, вы имеете в виду переменные CSS . К сожалению, они плохо поддерживаются.
Некоторые разработчики создали HttpHandler, которые добавляют поддержку переменных в CSS. По сути, HttpHandler заботится о замене переменных их значениями до того, как клиент увидит CSS. Примеры включают:
Это, безусловно, сработает. Я не пробовал это ни в одном из своих приложений, поэтому не могу говорить о последствиях для производительности.
Вы можете установить стиль границы для родительского тега. Например, если каждый элемент в вашем #content использует эти свойства границы, вы можете применить желаемый стиль границы к самому #content.
Расширение стиля внутри цвета определено
LE: см. Образец из KennyTM
Элементу может быть назначено несколько классов. Таким образом, вы можете создать один стиль, который определяет цвет вашей границы, и использовать его вместе с другими классами для других атрибутов:
.bordercolor { border-color:#CCCCCC; }
<div class="bordercolor otherstyle">
.classA, .classB, .classC {
border-color: #CCC;
}
.classA {
border-width: 1px;
border-style: solid;
}
...
Но вы больше не можете использовать сокращенный синтаксис для определения границы.
Вы также можете использовать CSS «более высокого уровня». Sass и Less оба предлагают переменные. Они работают, написав на языке, который является надмножеством CSS, а затем вы компилируете его в CSS при тестировании / развертывании. Для RoR есть крючки для обоих, может быть один для asp.net.
Я тоже думал о шаблоне T4. Я думаю, это только Visual Studio, так что это не самый общий способ, но я подумал, что поделюсь им.
<#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" language="C#v3.5" debug="true" hostSpecific="true" #>
<#@ output extension=".css" #>
<# string font = " font-family: Verdana, Helvetica;\n\tfont-size: 11px;";#>
body {
<#= font #>
}
table.Bid {
background-color:red;
<#= font #>
}
Будет создан файл test.css с таким содержанием:
body {
font-family: Verdana, Helvetica;
font-size: 11px;
}
table.Bid {
background-color:red;
font-family: Verdana, Helvetica;
font-size: 11px;
}
На самом деле вы не можете определять переменные в CSS, но вы можете делать то, что вы после нескольких способов. Во-первых, вы можете применить несколько классов к своему элементу и просто сохранить цвет в своем собственном классе.
.myBorderColor { border-color: #000000; }
.myOtherClass { font-weight: bold; }
<div class="myBorderColor myOtherClass">content</div>
Другой альтернативой является каскадирование стилей таким образом, чтобы применялось более одного блока.
div.a { font-weight: bold; }
div.b { color: #cccccc; }
div.a div.b { border-color: #000000; }
Таким образом, вы по-прежнему контролируете свой цвет из одного места.
Вы можете использовать свой CSS как файл php с типом text / css. Тогда вы сможете использовать все нужные PHP-переменные. Это работает в любом браузере. Вот пример:
Помимо генерации его со страницы .NET, вы можете использовать какой-то препроцессор. Существуют универсальные, такие как m4 , или специфические для CSS, такие как LESS .