CSS Классы и SubClasses

Подтвердить @MooingDuck и @Casey

template
decltype(auto) if_else_impl(std::true_type, FN1 &&fn1, FN2 &&, Args&&... args)
{
    return fn1(std::forward(args)...);
}

template
decltype(auto) if_else_impl(std::false_type, FN1 &&, FN2 &&fn2, Args&&... args)
{
    return fn2(std::forward(args)...);
}

#define static_if(...) if_else_impl(__VA_ARGS__, *this)

И так же просто:

static_if(do_it,
    [&](auto& self){ return 1; },
    [&](auto& self){ return self.sum(2); }
);

Работает как static if - компилятор go только для «истинной» ветви.


PS Вы должны иметь self = *this и делать из него вызовы членов, из-за ошибки gcc . Если у вас есть вложенные лямбда-вызовы, вы не можете использовать this-> вместо self.

96
задан Ryan Abbott 17 February 2009 в 21:07
поделиться

9 ответов

Просто потребность добавить пространство:

.area2 .item
{
    ...
}
176
ответ дан Chad Birch 5 November 2019 в 12:38
поделиться

К вашему сведению, когда Вы определяете правило как Вы, сделал выше, с двумя селекторами, объединенными в цепочку вместе:

.area1.item
{
    color:red;
}

Это означает:

Применяют этот стиль к любому элементу, который имеет и класс "area1" и "объект".

, такие как:

<div class="area1 item">

Печально это не работает в IE6, но это - то, что это означает.

71
ответ дан Matt Howell 5 November 2019 в 12:38
поделиться

Ваша проблема, кажется, недостающее пространство между Вашими двумя классами в CSS:

.area1.item
{
    color:red;
}

Должен быть

.area1 .item
{
    color:red;
}
26
ответ дан Parrots 5 November 2019 в 12:38
поделиться

Вы хотите вынудить только детей быть выбранными? http://css.maxdesign.com.au/selectutorial/selectors_child.htm

.area1
{
        border:1px solid black;
}
.area1>.item
{
    color:red;
}
.area2
{
    border:1px solid blue;
}
.area2>.item
{
    color:blue;
}
14
ответ дан MrChrister 5 November 2019 в 12:38
поделиться

Просто поместите пространство между .area1 и .item, например:

.area1 .item
{
    color:red;
}

этот стиль относится к элементам с объектом класса в элементе с классом area1.

10
ответ дан M4N 5 November 2019 в 12:38
поделиться

Просто поместите пространство между своими классами

.area1 .item
{
    ...
}

, Вот очень хорошая ссылка для Селекторы CSS .

8
ответ дан mbillard 5 November 2019 в 12:38
поделиться

у Вас может также быть два класса в элементе как это

<div class = "item1 item2 item3"></div>

, каждый объект в классе является своим собственным классом

.item1 {
  background-color:black;
}

.item2 {
  background-color:green;
}

.item3 {
  background-color:orange;
}
1
ответ дан kR105 5 November 2019 в 12:38
поделиться

Это - магистраль CSS, "каскада" в Расположение каскадом Таблицы стилей.

, Если Вы пишете свои правила CSS в одной строке, она помогает видеть структуру:

.area1 .item { color:red; }
.area2 .item { color:blue; }
.area2 .item span { font-weight:bold; }

Используя несколько классов также хорошее промежуточное/усовершенствованное использование CSS, к сожалению, существует известная ошибка IE6, которая ограничивает это использование при написании перекрестного кода браузера:

<div class="area1 larger"> .... </div>

.area1 { width:200px; }
.area1.larger { width:300px; }

IE6 ИГНОРИРУЕТ первый селектор в правиле мультикласса, таким образом, IE6 на самом деле применяет правило .area1.larger как

/*.area1*/.larger { ... }

Значение, что это будет влиять на ВСЕ .larger элементы.

Это - очень противная и неудачная ошибка (один из многих) в IE6, который вынуждает Вас к в значительной степени, никогда не используют ту функцию CSS, если Вы хотите один чистый перекрестный браузер файл CSS.

решение затем состоит в том, чтобы использовать префиксы имени класса CSS, чтобы не сталкиваться с универсальными именами классов:

.area1 { ... }
.area1.area1Larger { ... }

.area2.area2Larger { ... }

May также использует всего один класс, но тот способ, которым можно сохранить CSS в логике, которую Вы предназначили при знании, что .area1Larger только влияет на .area1, и т.д.

3
ответ дан 5 November 2019 в 12:38
поделиться

Класс, который вы применяете к div, можно использовать как точку отсчета для стилизации элементов с этим div, например.

<div class="area1">
    <table>
        <tr>
                <td class="item">Text Text Text</td>
                <td class="item">Text Text Text</td>
        </tr>
    </table>
</div>


.area1 { border:1px solid black; }

.area1 td { color:red; } /* This will effect any TD within .area1 */

Чтобы быть суперсемантичным, вам следует перенести класс в таблицу.

    <table class="area1">
        <tr>
                <td>Text Text Text</td>
                <td>Text Text Text</td>
        </tr>
    </table>
1
ответ дан 24 November 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: