2015-09-01 2 views
0

Учитывая стиль:Изменение CSS атрибут содержание определенного элемента

ol.progtrckr li.progtrckr-todo:before { 
    content: "\039F"; 
    color: silver; 
    background-color: white; 
    font-size: 1.5em; 
    bottom: -1.6em; 
} 

и объекты:

<ol class="progtrckr" data-progtrckr-steps="5"> 
    <li class="progtrckr-todo">One</li> 
    <li class="progtrckr-todo">Two</li> 
    <li class="progtrckr-todo">Three</li> 
</ol> 

Как я могу изменить свойство содержимого только второго объекта, от

content: "\039F"; 

до

content: "\2716";?

Я пробовал:

<li class="progtrckr-todo" style="content: '\2716'">Two</li> 

Но это не работает.

Любая идея, как сделать эту работу?

+1

'content' работает только на элементах псевдо (': before' ': after'). Вы не можете перезаписать его встроенным стилем, поскольку встроенный стиль всегда применяется к элементу, в котором он включен. – connexo

+0

Вы должны выбрать * лучший * ответ, а не самый быстрый. – connexo

ответ

2

Вы можете использовать nth-child переопределить свойства

ol.progtrckr :nth-child(2):before { 
    content: "\2716"; 
} 
+0

'li.progtrckr-todo' в вашем селекторе вводит в заблуждение, поскольку ни тип элемента, ни класс не учитываются в: nth-child'. – connexo

+0

@connexo Спасибо за информацию! – Tushar

+1

Единственное, что ': nth-child' does is ask *** one *** question: ** Я ли n-й дочерний элемент моего родителя? ** – connexo

1

Должно быть что-то вроде этого:

ol.progtrckr :nth-child(2):before { 
content: "\2716"; 
} 

вы можете refeer к этому, если его не то, что вам нужно

http://www.w3schools.com/cssref/sel_nth-child.asp

+1

Вы пропустили пробел между' ol.progtrckr' и ': п-й ребенок (2): before'. – connexo

1

content:'' свойство является свойством css псевдоэлемента :before, а не элементом li.

Если вы хотите изменить программный код content, вам стоит просто добавить класс в элемент li и переопределить li.yourClass:before{content:'...'} в вашем css.

3

content Недвижимость доступна только на псевдоэлементах (:before, :after). Вы не можете перезаписать его встроенным стилем, поскольку встроенный стиль всегда применяется к элементу, в котором он включен, а псевдоэлементы не являются частью разметки, которую вы можете редактировать.

Используйте либо селектор :nth-of-type или :nth-child псевдо:

ol.progtrckr :nth-child(2):before { 
    content: "\2716"; 
} 
1

Вы проблема заключается в том, что в вас CSS стили она работает с «: до того». Поэтому вам нужно вставить содержимое перед элементом. Вы можете использовать п-го ребенка W3C

Или просто добавить определенный класс к элементу втор:

secelementclass:before { 
     content: "\2716"; 
    } 

<ol class="progtrckr" data-progtrckr-steps="5"> 
<li class="progtrckr-todo">One</li> 
<li class="progtrckr-todo secelementclass">Two</li> 
<li class="progtrckr-todo">Three</li> 

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