2015-03-17 2 views
0

У меня есть следующие CSS (идея от blog post из Zachary Хармани):Могу ли я использовать содержимое div: раньше в качестве привязки для переключения видимости остальной части div?

.proof{ 
    display: block; 
    content: "Proof:"; 
} 
.proof:before { 
    content: inherit; 
    font-style: italic; 
} 

Тогда HTML

<div class="proof"> This is trivial. </div> 

производит что-то вроде:

Доказательство:

Это тривиально.

Я хотел бы использовать «Доказательство» («Это тривиально» здесь предложение) ключевое слово, чтобы переключить видимость доказательства OnClick.

Можно ли использовать содержимое .proof: раньше как якорь для переключения видимости остальной части содержимого.

+0

Насколько я знаю, вы не можете прикреплять обработчики событий специально к псевдоэлементам. Но в случае, если вы делаете только псевдоэлемент видимым и скрываете остальную часть содержимого divs, событие click для самого div должно срабатывать при щелчке псевдоэлемента. – CBroe

+0

@CBroe: focus/active и указатели-события могут помочь, запустите код в моем ответе и нажмите на псевдо-контент :) –

+0

@GCyrillus: Я имел в виду обработчики событий JS, о которых он, казалось, специально спрашивал. – CBroe

ответ

1

Ответ утвердительный:

возможно height и pointer-events может помочь, чтобы показать вам, что это возможно:

.proof{ 
 
    height:1.2em; 
 
    overflow:hidden; 
 
    pointer-events:auto; 
 

 
} 
 
.proof:before { 
 
    content: "Proof: onclick toggles show/hide real content"; 
 
    display:block; 
 
    font-style: italic; 
 
    cursor:pointer; 
 
} 
 
.proof:active , .proof:focus { 
 
    height:auto; 
 
    pointer-events:none; 
 
    outline:none; 
 
    }
<div class="proof" tabindex="0"> This is trivial. you see me or not onclick :) </div>

Так что вам нужно, чтобы поймать OnClick от самого элемента. Если вы наведете или щелкните псевдоэлементы, вы тем временем нажмете или наведете элемент.

+0

Нет, это именно то, чего я хотел достичь - спасибо! Два наблюдения: без tabindex = 0, div отображается только при нажатии «Proof». Можно ли интегрировать эту необходимую спецификацию в css? Кроме того, если показано, доказательство отображается как «выбрано»: в Firefox и Chrome отображается рамка вокруг div. Есть ли способ избавиться от этого? –

+1

@FelixHoffmann для атрибута tabindex вам нужно это в HTML, чтобы дать фокус, только ссылки и элементы формы имеют это поведение defaut. Для «выбранного» визуального изображения вы можете удалить его с помощью: outline: none; –

0

Вы можете использовать РОМ атрибуты, как псевдопользователей детей

<div class="proof" state="proof"> This is trivial. </div> 

.proof:before{content: attr(state) ": ";} 

Если теперь целевой РОМ атрибутов элементов, вы могли бы быть на один шаг ближе к разгадке вещи

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