изменить CSS родного брата, когда наш элемент имеет тег <a> - PullRequest
2 голосов
/ 30 ноября 2011

Я приобрел модуль входа в систему DotNetNuke и хочу изменить внешний вид этого модуля. Когда пользователь входит на мой сайт, генерируется такой HTML-код:

<div id="Login">
<div id="HelloLogin">Hello</div>
<a href="http://localhost:6111/en-us/userprofile.aspx">mosijava</a>
</div>

Но когда он (и) выйдет из системы, HTML будет выглядеть так, как показано ниже, и тег <a> не сгенерирует:

<div id="Login">
<div id="HelloLogin">Hello</div>
guest
</div>

Я хочу назначить CSS для div с ID = "HelloLogin", ТОЛЬКО при входе пользователя в систему. это означает, что в моем html-файле есть тег <a>.

Есть ли какой-нибудь чистый способ сделать это?

Я пробовал этот селектор, но он не работал

#login a:before{
color:red;
}

1 Ответ

2 голосов
/ 30 ноября 2011

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

В этом особом случае вы можете использовать псевдоклассы CSS3 :not() и :only-child с идентификаторами, поэтомусоответствовать только тогда, когда #HelloLogin является , а не единственным дочерним элементом в #Login (встроенный текст, как и слово «гость» в вашем примере, не учитывается как дочерние элементы в CSS):

#Login #HelloLogin:not(:only-child) {
    color: red;
}

Проблема в том, что IE <9 не поддерживает <code>:not() или :only-child, но другого способа сделать это в чистом CSS нет.

...