2013-06-18 3 views
1

у меня есть этот CSS:
CSS выберите внутри тега

.test1 { 
font-size:10pt; 
} 

.test2 { 
font-size:12pt; 
} 

и у меня есть этот HTML:

<div class='test1'>name</div> 
<div class='test2'>desc_name</div> 


<div class='test1'>family</div> 
<div class='test2'>desc_family</div> 


<div class='test1'>password</div> 
<div class='test2'>desc_pass</div> 

, что я должен сделать, это выбрать класс test1, но только теги который содержит «семью» внутри тега и дает фон


Мне нужно решение с css o nly, мне не нужно менять внутри html
это возможно? Спасибо

+0

Это не возможно с CSS, нет никакого способа, чтобы выбрать элемент, основанный на тексте, или любой другой, содержание. –

+0

Pure CSS не может помочь вам с содержимым тегов ... – acdcjunior

+0

Используйте jQuery вместо этого. –

ответ

1

Если вы используете что-нибудь ниже CSS3 -

div.test1:contains("family") { 
    background: *; 
} 

:contains() псевдо-класс осуждался в CSS3 - эрго я бы не рекомендовал его, и я не совсем положительный любой браузер полностью поддерживает его Этот ответ полностью субъективен.

Редактировать: по-видимомукласс psuedo работает в jQuery (проверен в версии 1.9).

Вы можете использовать jQuery для изменения ваших стилей. (это решение требует только CSS-решения, но если это доступно, используйте его!)

$("div.test1:contains('family')").css({ background: "whatever" }); 
+5

Вы тестировали, в каких браузерах это работает? Я помню, что псевдо-селектор ': contains()' не является кросс-браузером. –

+0

Из того, что я помню, он работал над IE7-9, FF и Chrome. Мы писали тесты Selenium 1 с этим псевдоклассом, который отлично работал. – sircapsalot

+1

Проблема в том, что она не работает ни на одном (по крайней мере, не на большинстве) современных браузерах. Это даже не поддерживается неофициально и т. Д. – bwoebi

4

Невозможно с чистым CSS. Вы не можете выбрать содержимое элементов с помощью CSS (3 и выше).

только вы можете сделать, это указать какой-то атрибут как:

<div class='test1' data-value="family">family</div> 

а затем выберите его с помощью CSS:

div.test1[data-value='family'] { /* ... */ } 
0

вы можете использовать несколько классов что-то вроде этого,

.test1 { 
font-size:10pt; 
} 
.test2 { 
font-size:12pt; 
} 
.family { 
/* style */ 
} 

и код HTML,

<div class='test1 family'>family</div> 
<div class='test2'>desc_family</div> 
0
<div class='test1 family'>family</div> 
    <div class='test2'>desc_family</div> 

Я хотел бы предложить этот в orther для предотвращения Переопределить

.test1 { 
    font-size:10pt; 
    } 
    .test2 { 
    font-size:12pt; 
    } 
    .test1.family { 
    /* style */ 
    } 
+0

также, если ур контент загружает динамически, используя JQUERY вместо –

+0

, но в моем случае у меня есть только доступ к CSS, поэтому я не могу добавить класс в HTML – user1000744

+0

Это метод css3, так как вы принимаете его, но это не перекрестный браузер –

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