2015-08-19 8 views
0

Я не дизайнер, так что это может звучать глупо.Override css from Pseudo class

Я могу переопределить color свойство от псевдо класса, но не заполнение.

Ниже приведен пример

HTML:

<p id="pid" class="pclass"></p> 

CSS:

.pclass 
{ 
    color:red; 
    padding-left: 20px; 
} 

#pid:before 
{ 
    content:'test '; 
    color:green !important; 
    padding-left: 0px !important; 
} 

Fiddle

+0

Вы не используете селекторы id в CSS. Это плохая практика. – connexo

ответ

1

Причина

стили примененных от псевдо-класса применяются только к content. Не к фактическому элементу. Вы можете подумать, что !important изменяет цвет, но это не тот случай.

Итак, когда вы меняете color из псевдокласса, изменяется цвет содержимого, то есть test. И padding-left применяется к test только не к элементу <p>.

Demo

Осмотрите пункт и обратите внимание на отступы.

.pclass { 
 
    color: red; 
 
    padding-left: 20px; 
 
} 
 
.pclass:before { 
 
    content: 'test'; 
 
    color: green; 
 
    padding-left: 10px; 
 
}
<p id="pid" class="pclass"></p>

Решение

Чтобы решить эту проблему, вы можете установить position элемента в relative и использовать отрицательную left.

Demo

.pclass { 
 
    color: red; 
 
    padding-left: 20px; 
 
} 
 
.pclass:before { 
 
    content: 'test'; 
 
    color: green; 
 
    left: -20px; 
 
    position: relative; 
 
}
<p id="pid" class="pclass"></p>

+0

Я сегодня чему-то научился, спасибо за ответ. Не могу ли я отменить заполнение отсюда? – Imad

+0

@ImadoddinIbnAlauddin Проверьте [this] (https: // jsfiddle.сеть/tusharj/4s3eedaa/2 /) – Tushar

1

использовать это может помочь вам

#pid::before { 
    left: -20px; 
    position: relative; 
} 
+0

+ За предоставление решения – Tushar

0

Вы можете просто переопределить отступы с помощью селектора #pid: идентификаторы имеют более высокий приоритет, чем классам:

.pclass { 
    color:red; 
    padding-left: 20px; 
} 
#pid:before { 
    content: 'test'; 
    color: green; 
} 
#pid { 
    padding-left: 0; 
} 

Если вы хотите сохранить поле после добавления текста :before вы можете добавить

padding-right: 20px; 

до #pid:before.

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