2014-10-29 5 views
0

Мне нужно изменить элемент a, пока я в элементе b. Могу ли я это сделать, используя только CSS/HTML, это мой вопрос?Могу ли я ввести тег в тег с помощью css

li:active{ 
    img{ 
     border:1px solid black; 
    } 
} 
+0

Я не уверен, правильно ли вы поняли, ищете ли вы что-то вроде 'li: active + img {border: 1px solid black;}'? – Nick

+1

http://css-tricks.com/child-and-sibling-selectors/ –

+0

Эй @ Ник спасибо за ваш нисходящий я просто удалил, но я не ошибся. В следующий раз прочитайте ссылку перед тем, как спустить вниз. Ты даже не понял вопроса. – JGallardo

ответ

0

Нет, что вы можете сделать, однако, быть немного более конкретными с селектором - попробуйте следующее:

li:active img{ 
    border:1px solid black; 
} 

Bon Voyage!

2

Вы будете хотеть ...

li:active img { 
    border:1px solid black; 
} 

это будет стиль всеimg элементы в li:active. Если вы хотите, чтобы стиль немедленные потомков последнего, вам нужно:

li:active > img { 
    border:1px solid black; 
} 

Я предлагаю вам прочитать на статью Криса Coyier в «Child and Sibling Selectors», чтобы узнать о более сложных CSS. Кроме того, существуют более сложные селектора CSS на основе позиционных отношений, таких как li:active + img и li:active ~ img, но это выходит за рамки этого ответа.

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

0

Вы можете сделать это следующим образом:

li:active img{ 
    border:1px solid black; 
} 
0

вы можете использовать селектор потомков: li:active img {boder:1px solid black;} или селектор ребенка li:active > img {boder:1px solid black;} если img является прямым потомком li

0

CSS3 позволяет Embeded селекторов где есть условие. Пример допустимых вложенных спецификаций CSS3 CSS, используя это:

@media screen and (max-width:800px) { 
    ul { 
     float: none; 
     max-width: auto; 
     width: auto; 
    } 
    div:first-of-type { 
     display: none; 
    } 
} 

условия установлено здесь, чтобы установить такие стили, вложенные когда media типа screen (так называемый рабочий стол), и не больше, чем 800px (max-width: 800px).

0

Вы можете сделать следующее вместо:

li:active img{ 
    border:1px solid black; 
} 

Синтаксис вы имеете в виду похож на nested rules в CSS пре-процессоры, такие как LESS. Этот синтаксис не поддерживается изначально браузерами и должен быть скомпилирован в допустимый синтаксис CSS.

#header { 
    color: black; 
    .navigation { 
    font-size: 12px; 
    } 
    .logo { 
    width: 300px; 
    } 
} 

становится:

#header { 
    color: black; 
} 
#header .navigation { 
    font-size: 12px; 
} 
#header .logo { 
    width: 300px; 
} 

http://lesscss.org/features/#features-overview-feature-nested-rules

+0

Проблема с 'less' заключается в хорошем определении переменных и, таким образом, ограничении повторения и упрощении изменения, однако это не естественный язык, который интерпретируется непосредственно браузерами, поскольку он должен быть« скомпилирован »для css для во время выполнения. Однако вы правы в сходстве. –

+0

@SanuelJackson Это правильно. Я бы никогда не предлагал обработку на стороне клиента, но я вижу огромные преимущества для предварительного компиляции предварительных процессоров на стороне сервера, таких как LESS/SASS. «dotless», например, это то, что мы используем. http://www.dotlesscss.org/ – Curt

+1

Я не слишком глубоко вырыл слишком малое/маленькое отверстие кролика (время), однако я вижу, что язык определенно полезен , Он бросает Curveball для тех, кто работает со стандартным CSS, но если OP имеет время, это определенно стоит изучить - я сам включил. –

0
li:active img{ 
border: 1px solid black; 
} 

Это правильный ответ, если вы хотите использовать 2 класса или любой другой в 1 пункте вы поместите их в начале , ПРИМЕЧАНИЕ: чтобы объединить 2 элемента, вы делаете это с помощью пробела. Надеюсь, это помогло.

Смежные вопросы