var firstInt = myInts[0];
var query = (from d in db.MYTABLE
where d.RELID.Equals(firstInt)
select d.ID).Distinct();
List<int?> urunidleri = query.ToList();
Существуют такие инструменты, как LESS , которые позволяют вам составлять CSS на более высоком уровне абстракции, подобном тому, что вы описываете.
Less называет эти «миксины»
Вместо
/* CSS */
#header {
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius: 8px;
}
#footer {
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius: 8px;
}
вы могли бы сказать
/* LESS */
.rounded_corners {
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius: 8px;
}
#header {
.rounded_corners;
}
#footer {
.rounded_corners;
}
Взгляните на CSS , сочиняют : https://bambielli.com/til/2017-08-11-css-modules-composes /
согласно им:
.serif-font {
font-family: Georgia, serif;
}
.display {
composes: serif-font;
font-size: 30px;
line-height: 35px;
}
я использую его в моем реагировать проект.
Не думайте о CSS классы как объектно-ориентированные классы, думайте о них как просто инструмент среди других селекторов для определения, которым классы атрибута разрабатывается элемент HTML. Думайте обо всем между фигурными скобками как класс атрибута, и селекторы на левой стороне говорят элементам, что они выбирают к [1 117], наследовались атрибуты класс атрибута. Пример:
.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}
, Когда элементу дают атрибут class="foo"
, полезно думать о нем не как о наследовавшихся атрибутах от класса .foo
, но от [1 119] класс A атрибута и класс B атрибута . Т.е. график наследования является одним уровнем глубоко с элементами, происходящими от [1 121] классы атрибута , и селекторы, указывающие, куда края идут, и определение приоритета, когда там конкурируют атрибуты (подобный порядку разрешения метода).
практическая импликация для программирования является этим. Скажите, что Вам дали таблицу стилей выше и хотите добавить новый класс .baz
, где она должна иметь тот же font-size
как .foo
. Наивное решение было бы этим:
.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}
.baz { font-size : 2em; /* attribute class C, hidden dependency! */}
Любое время я должен ввести что-то дважды, что я становлюсь настолько безумным! Мало того, что я должен записать это дважды, теперь у меня нет способа программно указания, которое .foo
и .baz
должно иметь тот же font-size
, и я создал скрытая зависимость! Мой выше парадигмы предложил бы, чтобы я абстрагировал эти font-size
атрибут от [1 123] класс A атрибута :
.foo, .bar, .baz { font-size : 2em; /* attribute base class for A */}
.foo, .bar { font-weight : bold; /* attribute class A */}
.foo { color : green; /* attribute class B */}
основная жалоба здесь - то, что теперь я должен перепечатать каждый селектор от [1 124] класс A атрибута снова, чтобы указать, что элементы, которые они должны выбрать, должны также наследовать атрибуты от [1 125] базовый класс A атрибута. Однако, альтернативам придется не забыть редактировать каждый класс атрибута, где существуют скрытые зависимости каждый раз, когда что-то изменяется, или использовать сторонний инструмент. Первая опция заставляет бога смеяться, второе заставляет меня хотеть уничтожить меня.
CSS на самом деле не выполняет то, что вы просите. Если вы хотите писать правила с учетом этой составной идеи, вы можете попробовать compass .
На самом деле то, о чем вы просите, существует, однако это сделано в виде дополнительных модулей. Посмотрите этот вопрос на Лучший CSS в .NET для примеров.
Ознакомьтесь с ответом Ларсенала об использовании LESS , чтобы получить представление о том, что делают эти надстройки.
Это невозможно в CSS.
Единственное, что поддерживается в CSS, - это быть более конкретным, чем другое правило:
span { display:inline }
span.myclass { background: red }
Диапазон с классом "myclass" будет иметь оба свойства.
Другой способ - указать два класса:
<div class="something else">...</div>
Стиль " else "переопределит (или добавит) стиль" чего-то "
К сожалению, CSS не обеспечивает «наследование» в отличие от языков программирования, таких как C ++, C # или Java. Вы не можете объявить класс CSS, а затем расширить его другим классом CSS.
Однако вы можете применить более одного класса к тегу в вашей разметке ... в этом случае существует сложный набор правил, которые определить, какие именно стили будут применяться браузером.
<span class="styleA styleB"> ... </span>
CSS будет искать все стили, которые могут быть применены в зависимости от вашей разметки, и объединять стили CSS из этих нескольких правил вместе.
Как правило, стили объединяются, но когда возникают конфликты, позже объявленный стиль обычно выигрывает (если только атрибут! important не указан в одном из стилей, и в этом случае он выигрывает). Также,
Идеальное время : я перешел от этого вопроса к своему электронному письму, чтобы найти статью о Less , библиотеке Ruby, которая, среди прочего, делает следующее:
Поскольку super
выглядит так же, как нижний колонтитул
, но с другим шрифтом, я воспользуюсь техникой включения классов Лесса (они называют это миксином), чтобы сообщить ему, чтобы он также включил эти объявления:
#super {
#footer;
font-family: cursive;
}
Как говорили другие, вы можете добавить несколько классов к элементу.
Но дело не в этом. Я понимаю ваш вопрос о наследстве. На самом деле наследование в CSS осуществляется не через классы, а через иерархии элементов. Таким образом, для моделирования унаследованных признаков вам необходимо применить их к различным уровням элементов в модели DOM.
Вы можете применить более одного класса CSS к элементу примерно так: class = "something else"
В файле Css:
p.Title
{
font-family: Arial;
font-size: 16px;
}
p.SubTitle p.Title
{
font-size: 12px;
}
Не забудьте:
div.something.else {
// will only style a div with both, not just one or the other
}
Элемент может принимать несколько классов:
.classOne { font-weight: bold; }
.classTwo { font-famiy: verdana; }
<div class="classOne classTwo">
<p>I'm bold and verdana.</p>
</div>
И, к сожалению, это почти все, что вам нужно. Я бы хотел когда-нибудь увидеть эту функцию вместе с псевдонимами классов.
Нет, вы не можете сделать что-то вроде
.composite
{
.something;
.else
}
Это не имена "классов" в объектно-ориентированном смысле. .something
и .else
- это просто селекторы, не более того.
Но вы можете указать два класса в элементе
<div class="something else">...</div>
, или вы можете изучить другую форму наследования
.foo {
background-color: white;
color: black;
}
.bar {
background-color: inherit;
color: inherit;
font-weight: normal;
}
<div class="foo">
<p class="bar">Hello, world</p>
</div>
Где фоновый цвет и цвет абзацев наследуются от настроек во включающем блоке div, который имеет стиль .foo
. Возможно, вам придется проверить точную спецификацию W3C. Наследование
в любом случае используется по умолчанию для большинства свойств, но не для всех.
Вы можете добавить несколько классов к одному элементу DOM, например
<div class="firstClass secondClass thirdclass fourthclass"></div>
Наследование не является частью стандарта CSS.
Yes, but not exactly with that syntax.
.composite,
.something { display:inline }
.composite,
.else { background:red }