Добавляем в блог спойлеры (только CSS)
Monday, July 26, 2010 9:01:50 PM
Сейчас речь пойдет о спойлерах.
После этого вверху списка этих тем появится ссылка customize your design.
Заходим туда и выбираем вкладку Advanced.
В этой вкладке появится поле, в которое и нужно вставлять свой CSS-код. Profit
Итак, первый спойлер:
Контент появляется при наведении курсора на заголовок, при этом заголовок не исчезает.
В стиле пишем этот CSS-код:
div.spoiler {
background:#888;
height:auto;
text-align:center;
border:2px solid #666;
}
div.spoilerCont {
display:none;
padding:2px;
text-align:left;
}
div.spoiler:hover div.spoilerCont {
display:block;
}
В блоге пишем этот HTML-код:<div class="spoiler">
Заголовок спойлера
<div class="spoilerCont">
Содержимое спойлера<br>
Содержимое спойлера
</div>
</div>
div class="spoiler" - это слой, в котором будет находится заголовок спойлера и слой с его содержимым.div class="spoilerCont" - это слой, в котором будет находится содержимое спойлера. Он должен находится внутри div.spoiler.
Результат:
Содержимое спойлера
Второй спойлер:
Контент появляется при наведении курсора на заголовок, при этом заголовок исчезает.
В стиле пишем этот CSS-код:
div.spoiler {
background:#888;
position:relative;
overflow-x:hidden;
overflow-y:hidden;
z-index:1;
border:2px solid #666;
}
div.spoilerTitle {
position:relative;
display:block;
z-index:2;
text-align:center;
}
div.spoilerCont {
background:#888;
position:relative;
display:none;
z-index:3;
padding:2px;
}
div.spoilerTitle:hover + div.spoilerCont, div.spoilerCont:hover {
display:block;
margin-top:-20px;
}
В блоге пишем этот HTML-код:
<div class="spoiler">
<div class="spoilerTitle">
Заголовок спойлера
</div>
<div class="spoilerCont">
Содержимое спойлера<br>
Содержимое спойлера
</div>
</div>
div class="spoiler" - это слой, в котором будет находится слой с заголовком спойлера и слой с его содержимым.div class="spoilerTitle" - это слой, в котором будет находится заголовок спойлера. Он должен находится внутри div.spoiler.
div class="spoilerCont" - это слой, в котором будет находится содержимое спойлера. Он должен находится внутри div.spoiler.
Результат:
Содержимое спойлера
Третий спойлер:
Контент появляется после нажатия курсором на заголовок, при этом заголовок исчезает.
В стиле пишем этот CSS-код:
div.spoiler {
background:#888;
position:relative;
overflow-x:hidden;
overflow-y:hidden;
z-index:1;
border:2px solid #666;
}
div.spoilerTitle {
position:relative;
display:block;
z-index:2;
text-align:center;
}
div.spoilerCont {
background:#888;
position:relative;
display:none;
z-index:3;
padding:2px;
}
div.spoilerTitle:active + div.spoilerCont, div.spoilerCont:hover {
display:block;
margin-top:-20px;
}
В блоге пишем такой же код, как и в предыдущем примере:
<div class="spoiler">
<div class="spoilerTitle">
Заголовок спойлера
</div>
<div class="spoilerCont">
Содержимое спойлера<br>
Содержимое спойлера
</div>
</div>
Результат:Содержимое спойлера
Особенность третьего примера в том, что после того, как мы убрали курсор с содержимого спойлера - он обратно сворачивается
На этой страничке показано два примера выпадающих меню на CSS. Во втором примере (меню вылазит после нажатия) меню не сворачивается, если убрать с него курсор. После этого примера мне и захотелось сделать спойлеры для MyOpera, но так как я не вкурил принцип работы второго примера (даже после 100 грамм
) - пришлось изобретать свои велосипеды со своими недостатками
Четвертый спойлер от AntonDiaz:
Контент появляется при нажатии на заголовок, заголовок не исчезает. Контент прячется после нажатия за пределами спойлера.
В стиле пишем этот CSS-код:
a.spoilerTitle {
text-align:center;
display:block;
width:100%;
}
.spoilerCont {
background:#222;
border:2px solid #222;
text-align:left;
padding:0px 2px;
margin:0 2px 2px 2px;
display:none;
}
.spoilerTitle:focus .spoilerCont {
display:block;
}
В блоге пишем этот HTML-код:
<a class="spoilerTitle" href="#1">
Заголовок спойлера
<div class="spoilerCont">
Содержимое спойлера<br>
Содержимое спойлера
</div>
</a>
a class="spoilerTitle" - это блок, в котором будет находится заголовок спойлера и блок с контентом.div class="spoilerCont" - это слой, в котором будет находится содержимое спойлера. Он должен находится внутри a.spoilerTitle.
Результат:














Anton DiazAntonDiaz # Tuesday, July 27, 2010 1:10:24 AM
<style> .spoiler-title {text-align: center;} .spoiler-content {display:none;} .spoiler-title:focus + .spoiler-content, .spoiler-content:hover {display:block;} </style> <div class="box"> <a class="spoiler-title" href="#">Заголовок</a> <div class="spoiler-content">Контент</div> </div>• Если кликнуть по заголовку спойлера, то содеражание спойлера не исчезнет даже после отвода указателя мыши • Однако если кликнуть по содержимому (например, для выделения текста) или любому другому элементу страницы, то содержимое всё-таки исчезнет после того, как уведут курсор от содержимогоAnton DiazAntonDiaz # Tuesday, July 27, 2010 1:19:54 AM
<style> .spoiler-title {text-align: center;} .spoiler-content {display:none;} .spoiler-title:visited + .spoiler-content, .spoiler-content:hover {display:block;} </style> <div class="box"> <a class="spoiler-title" href="#123">Заголовок</a> <div class="spoiler-content">Контент</div> </div>• После открытия уже никак не закрыть, даже если юзер очень захочет (закроется только через некоторое время само, после того, как «забудется» посещенная ссылка)СергейSerega124 # Tuesday, July 27, 2010 9:58:22 AM
Вроде :focus должен применятся к ссылкам, но у меня заголовок почему-то не реагирует на нажатие
Anton DiazAntonDiaz # Tuesday, July 27, 2010 5:11:55 PM
СергейSerega124 # Tuesday, July 27, 2010 6:27:53 PM
Anton DiazAntonDiaz # Tuesday, July 27, 2010 7:26:09 PM
<style> .spoiler {display:block; text-decoration:none; color:#000;} .spoiler-content {display:none;} .spoiler:focus .spoiler-content {display:block;} .spoiler-content:after {display:block; font-size:x-small; content:"Кликните мимо спойлера, чтобы свернуть его";} </style> <a class="spoiler" href="#">Заголовок <div class="spoiler-content">Содержимое спойлера. Здесь может находиться очень длинный текст, который нужно спрятать</div> </a>То же, что пятый вариант, но не закрывается если кликнуть на содержимое спойлера и отвести курсор. Закрывается только если кликнуть мимо спойлера.СергейSerega124 # Wednesday, July 28, 2010 5:37:05 PM
Originally posted by AntonDiaz:
mnmKillavad # Tuesday, August 10, 2010 12:04:01 AM
StelianLZ2SDC # Tuesday, August 10, 2010 6:18:46 PM
Tuấn Ngọcngtuanngoc # Saturday, August 14, 2010 3:24:37 AM
AndrewAndrewSpamer # Sunday, November 7, 2010 6:50:22 PM
Anton DiazAntonDiaz # Sunday, November 7, 2010 7:49:00 PM
СергейSerega124 # Sunday, November 7, 2010 7:50:28 PM
Anton DiazAntonDiaz # Sunday, November 7, 2010 10:41:47 PM
Unregistered user # Tuesday, November 9, 2010 11:24:31 AM
Unregistered user # Sunday, November 21, 2010 1:38:07 PM
Anton DiazAntonDiaz # Sunday, November 21, 2010 7:20:10 PM
Unregistered user # Monday, November 22, 2010 7:29:03 PM
Unregistered user # Tuesday, November 23, 2010 11:37:59 PM
СергейSerega124 # Tuesday, November 30, 2010 5:40:08 PM
Personal TEDvinichenko # Wednesday, December 1, 2010 2:41:03 PM
СергейSerega124 # Wednesday, December 1, 2010 2:45:18 PM
Originally posted by vinichenko:
Для Оперы или блога?
Unregistered user # Sunday, January 23, 2011 5:50:31 PM
СергейSerega124 # Sunday, January 23, 2011 6:05:00 PM
Если у вас свой сайт - реализуйте на Javascript и не парьтесь с этими костылями
Unregistered user # Thursday, February 17, 2011 7:51:45 AM
Anton DiazAntonDiaz # Thursday, February 17, 2011 10:16:55 AM
Originally posted by anonymous:
Ну и что? Если вам нужно, чтобы спойлер видели поисковики, то блок сделайте через CSS с display:block, а в JavaScript-е присвойте display:none. Если нужно, чтоб НЕ видели, то наоборот.
Gaius BaltarU-2 # Monday, February 21, 2011 9:49:21 AM
Unregistered user # Tuesday, February 22, 2011 10:55:09 AM
Unregistered user # Friday, March 25, 2011 3:15:39 PM
Abhinavdecodedthought # Saturday, July 9, 2011 1:21:04 PM
Great work
Anton DiazAntonDiaz # Sunday, July 10, 2011 1:12:22 AM
Originally posted by anonymous:
Ну вы жжете. Если вы сделаете в CSS displayblock, а через JS уберете (а также сделаете возможно раскрыть через кнопку), то все поисковые машины и пользователи смогут в любом случае увидеть содержание спойлера (кто-то после клика, а кто-то сразу). А CSS-варианты таковы, что содержание спойлеров не смогут увидеть (ВООБЩЕ не смогут): 1) все поисковые машины 2) все пользователи некоторых браузеров.
Unregistered user # Monday, July 11, 2011 9:53:33 AM
AnnyAnhenFreedom # Sunday, July 24, 2011 12:05:11 PM
Anton DiazAntonDiaz # Sunday, July 24, 2011 12:22:56 PM
Мотив использования может быть разным: спрятать сюжетную информацию, которая может испортить впечатления от чтения/просмотра («убийца — дворник!»), спрятать слишком большой блок, который нужен не всем читателям и т.д.
А название взялось от первого случая использования, так как такую сюжетную информацию и называют спойлерами
AnnyAnhenFreedom # Sunday, July 24, 2011 1:59:50 PM
Anton DiazAntonDiaz # Sunday, July 24, 2011 4:35:24 PM
AnnyAnhenFreedom # Monday, July 25, 2011 11:46:44 AM
Unregistered user # Tuesday, July 26, 2011 11:57:56 AM
Unregistered user # Sunday, August 7, 2011 2:35:31 PM
Anton DiazAntonDiaz # Wednesday, August 17, 2011 8:59:01 PM
Originally posted by anonymous:
Зависит от того, как конкретно это должно работать и в каком месте (нужны подробности). Учитывая, что сам способ создания спойлера весьма костыляв, то и гибкость его невелика.
Unregistered user # Tuesday, January 17, 2012 5:26:00 PM
Unregistered user # Monday, January 7, 2013 10:38:38 AM
Unregistered user # Monday, January 7, 2013 2:05:30 PM
Unregistered user # Monday, January 21, 2013 9:56:45 AM
Григорийnomadness # Saturday, May 18, 2013 9:20:36 AM