Как я могу повторно использовать цвет в таблице стилей? - PullRequest
33 голосов
/ 27 апреля 2010

У меня есть таблица стилей и множество стилей с одинаковым цветом рамки (точнее, #CCCCCC).

Есть ли способ указать какую-то переменную и использовать ее повторно, поэтому вместо ввода #CCCCCC снова и снова я могу набрать:

border: 1px solid $bordercolor;

P.S. Я использую ASP.NET MVC.

Ответы [ 13 ]

24 голосов
/ 27 апреля 2010
.classA, .classB, .classC {
   border-color: #CCC;
}

.classA {
   border-width: 1px;
   border-style: solid;
}

...

Но вы не можете больше использовать сокращенный синтаксис для определения границы.

11 голосов
/ 27 апреля 2010

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

.bordercolor { border-color:#CCCCCC; }

<div class="bordercolor otherstyle">
10 голосов
/ 27 апреля 2010

Не то чтобы я об этом знал, но вы можете сгенерировать свой CSS со страницы .NET.

Тогда назовите это с

И StyleSheet.aspx будет выглядеть примерно так:

<%@ Page Language="C#" %> 
H1 
{ 
  background-color:<%= MyColourVariable %>; 
}

РЕДАКТИРОВАТЬ: Однако сегодня я бы предложил использовать МЕНЬШЕ или SASS

8 голосов
/ 27 апреля 2010

Вы также можете использовать CSS более высокого уровня. Sass и Меньше обе предлагают переменные. Они работают, написав на языке, который является надмножеством CSS, а затем вы компилируете его в CSS при тестировании / развертывании. Есть крючки для RoR для обоих, может быть один для asp.net.

7 голосов
/ 27 апреля 2010

Вы не можете определить переменные в CSS, но вы можете сделать то, что вы делаете, несколькими способами.Во-первых, вы можете применить несколько классов к своему элементу и просто сохранить цвет в своем собственном классе.

.myBorderColor { border-color: #000000; }
.myOtherClass { font-weight: bold; }

<div class="myBorderColor myOtherClass">content</div>

Другая альтернатива состоит в том, чтобы на самом деле каскадировать ваши стили, чтобы было применено более 1 блока.

div.a { font-weight: bold; }
div.b { color: #cccccc; }

div.a div.b { border-color: #000000; }

Таким образом, вы по-прежнему управляете своим цветом с 1 места.

4 голосов
/ 27 апреля 2010

Я думаю, вы можете ссылаться на переменные CSS . К сожалению, они не очень хорошо поддерживаются.

3 голосов
/ 27 апреля 2010

Вы можете использовать свой CSS как php-файл с типом text / css. Таким образом, вы можете использовать все переменные PHP, которые вы хотите. Это работает в любом браузере. Вот пример:

http://mailmarkup.org/mmlorg.php

2 голосов
/ 27 апреля 2010

Несколько человек сделали HttpHandlers, которые добавляют переменную поддержку CSS. По сути, HttpHandler заботится о замене переменных их значениями до того, как клиент увидит CSS. Примеры включают в себя:

Это, безусловно, будет работать. Я не пробовал его ни в одном из своих приложений, поэтому не могу говорить о влиянии на производительность.

1 голос
/ 27 апреля 2010

Я тоже думал о шаблоне Т4. Я думаю, это только 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;
}
1 голос
/ 27 апреля 2010

Помимо генерации его из .NET-страницы, вы можете использовать своего рода препроцессор. Есть общепринятые, такие как m4 или CSS, например, LESS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...