Как скрыть показать текст

Задача заключается в том, чтобы нажав на ссылку/кнопку, появлялся/скрывался элемент (изображение, таблица, блок и т.д.). Для чего достаточно добавить небольшой CSS, скрипт не нужен.

исчезающий текст
<style>
.del { display: none; }
.del:not(:checked) + label + * { display: none; } /* фактически нужна только одна строка */

/* вид CSS кнопки */
.del:not(:checked) + label,
.del:checked + label {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 2px;
  color: #fff;
  background: #4e6473;
  cursor: pointer;
}
.del:checked + label {
  background: #e36443;
}
</style>

<input type="checkbox" id="raz" class="del" checked="checked"/><label for="raz" class="del">нажать</label><div>исчезающий текст</div>
  1. количество элементов на странице с class="del" может быть сколь угодно велико
  2. id — идентификационный номер. Должен быть индивидуальным на html странице
  3. for должен совпадать с id
  4. если первоначально нужен невидимый элемент, который в последствии появляется, нужно убирать checked="checked"

Кнопка, нажав на которую появляются/прячутся комментарии Blogger

Все действия производим на вкладке "Шаблон".

Шаг 1. Два вхождения кода

<h4><data:post.commentLabelFull/>:</h4>
заменяем на
<input checked='checked' class='nocomments' id='checkboxcomments' type='checkbox'/><label for='checkboxcomments'><data:post.commentLabelFull/></label>

Шаг 2. Выделенные участки кода

.comments h4  { /* возможны вариации, ищем (Ctrl+F) "h4" */
  margin: 1em 0 0;
  font: $(post.title.font);
}
заменяем на
.comments h4, .nocomments + label  {
  margin: 1em 0 0;
  font: $(post.title.font);
}

.nocomments + label + div, .nocomments { display: none; } 
.nocomments:checked + label + div { display: block; }

Можно ещё попробовать одновременное использование с формой отзывов социальных сетей.

Показать/скрыть содержимое гаджета Blogspot

Результат можно посмотреть в Приложении 1.

Тренироваться будем на гаджете "Архив блога". Активизируем вкладку "Шаблон".

Шаг 1. Код

<b:widget id='BlogArchive1' locked='false' title='Архив блога' type='BlogArchive'>
<b:includable id='main'>
  <b:if cond='data:title'>
    <h2><data:title/></h2>
  </b:if>
заменяем на
<b:widget id='BlogArchive1' locked='false' title='Архив блога' type='BlogArchive'>
<b:includable id='main'>
  <b:if cond='data:title'>
    <input class='no' id='checkboxArchive' type='checkbox'/><label for='checkboxArchive'><data:title/></label>
  </b:if>

Шаг 2. Выделенные участки кода

h2 { 
  font: $(widget.title.font);
  text-transform: $(widget.title.text.transform);
  color: $(widget.title.text.color);
  margin: .5em 0;
}
заменяем на
h2, .no + label {
  font: $(widget.title.font);
  text-transform: $(widget.title.text.transform);
  color: $(widget.title.text.color);
  margin: .5em 0;
}

.no + label + div, .no { display: none; } 
.no:checked + label + div { display: block; }

.no + label:after {content: " \25bc";} /* стрелочка вверх */
.no:checked + label:after {content: " \25b2";} /* стрелочка вниз */
в f t
наверх ↑

65 комментариев:

PANIC
Спасибо! Очень полезная вещь!
Правда, у Вас написано в самом начале: "добавив ПЕРЕД: < /head> личный код", а дальше пишите, что ПОСЛЕ. В ходе испытаний разобрались. Сначала было не понятно, что для каждого одинакового по сути эффекта надо свое имя придумывать.
Еще раз спасибо) давно что-то подобное требовалось :)
NMitra
Благодарю! Очень ценное замечание. Опечатки исправила. Побольше бы таких сознательных читателей!!!
PANIC
а теперь я запуталась - надо все-таки перед или после? я вставила код после и все работает...
NMitra
Перед. А то получится между небом (head) и землёй (body).

Извините, что не по теме, тяжело блог в Яндексе индексируется? Обратите внимание, что на всех страницах указан nofollow. Несмотря на noindex, в Google много страниц вида: http://mackapad.blogspot.com/search/label/audio?&max-results=10. Их надо удалять из поиска как дубликаты. Может быть из-за путаницы с мета тегами. http://shpargalkablog.ru/2010/07/kontent.html - вот здесь посмотрите. Мне помогло.
PANIC
признаться, я индексацией вообще мало занимаюсь. мне не очень всё это понятно...
PANIC
а можно данный скрипт указывать не в head? иначе у меня другой скрипт (не менее для меня полезный) не работает
NMitra
Я поняла что за скрипт. Протестирую, если не получится, предложу другой вариант. 1-2 дня.
NMitra
Здесь показано, как сделать меню вкладками http://shpargalkablog.ru/2011/01/menu-vkladkami.html. Если не ошибаюсь, данного эффекта нужно было добиться. Совместимость с возможностью скрывать/показывать текст проверила.
PANIC
мне нужны вкладки в теле сообщения. решение на http://amateurblogger.ru/2011/01/kak-sdelat-menu-vkladki-tab-menu.html - оно работает, но из-за него не работает скрывающийся текст, потому что оба стоят перед < /head>. т.е. работает тот, который стоит там последним. поэтому я и интересуюсь, можно ли Ваш код для скрытия/показа текста поставить не в head.
NMitra
Катерина - умница и профессионал. Но данный скрипт мне не очень нравится, поскольку совместно с IFRAME или тем же видео YuoTube, он не работает в браузере Internet Explorer и не позволяет отображать данные вкладки. Нужно его делать легче. Я подумаю как можно использовать только CSS в моём случае.
NMitra
Приношу свои извинения. На моём браузере не был установлен проигрыватель. Хочу уточнить один момент: вы хотите ролики YouTube добавлять во вкладки? Тогда возможно этот вариант будет интереснее - http://shpargalkablog.ru/2011/01/youtube.html?
PANIC
да вообще-то Катин вариант иногда и в chrome косо смотрится (видео в бок съезжают).
что я хочу написано в письме, послужившем причиной написания того сообщения.
да, я пытаюсь сэкономить место, но видео не всегда с YouTube вставляю. там вообще можно что угодно вставить (например, видео + описание).
посмотрела сейчас предложенные Вами варианты - мне не нравится, что при переключении видео сразу начинает воспроизводиться.
k___k
Мне легче такую вот конструкцию использовать http://pastebin.com/8dp6LjrH сразу в тело поста, без редактирования шаблона.
NMitra
Спасибо за ссылку - хорошее работоспособное решение.

Можно также в сообщение добавить:

<script type='text/JavaScript'>
     function verocultar(cual) {
          var c=cual.nextSibling;
          if(c.style.display=='none') {
               c.style.display='block';
          } else {
               c.style.display='none';
          }
          return false;
     }
</script><a onclick="return verocultar(this);"
     href="javascript:void(0);">текст/изо</a><div style="display: none;">
....... содержание .......
</div>

Скрипт <script type='text/JavaScript'>...</script> пишем один раз, в том случае, когда скрытых блогов несколько.
Woodman
Подскажите Пожалуйста!!!
Возможно ли открытие текста(видео ролика) только после клика по ссылке wmlink.ru или tak.ru
Как это делают в Юкозе.
Заранее Спасибо.
NMitra
Приведите, пожалуйста, URL с примером. С Юкозе не работала, нужно посмотреть.
NMitra
Нащёлкалась от души.))) Пусть скажут спасибо)) Там показан код tak.ru, её и возьмём в качестве примера. На вкладке "Изменить HTML" при написании/редактировании сообщения добавляем код:

<script type="text/javascript" charset="UTF-8" src="http://z630.takru.com/in.php?id=000000"></script>

<div style="display: none;" id="hidden" align="center">
<a title="Вход" href="http://адрес"><img src="http://адрес_изо" /></a></div>

<script>
function payForFiles(){
var hid,tak,elems,num,pat,j,i;
hid = document.getElementById("hidden");
tak = new Array();
elems = document.getElementsByTagName('A');
num = elems.length;
pat = new RegExp("(^|&#92;&#92;b)(takru)(&#92;&#92;b|$)");
j = 0;
for (i=0;i<num;i++){
if(pat.test(elems[i].className)){
elems[i].setAttribute('target','_blank');
if (elems[i].addEventListener)
elems[i].addEventListener("click", function(){hid.style.display = ""}, false);
else if (elems[i].attachEvent)
elems[i].attachEvent("onclick", function(){hid.style.display = ""});
else elems[i].onclick = function(){hid.style.display = ""};
j++;}
}
};
payForFiles();
</script>

Выделенное жирным замените на своё.
Woodman
Огромное Спасибо За Ваши Труды!!!
Скрипт на tak.ru РАБОТАЕТ!!! А вот wmlink.ru немогу заставить работать...
NMitra
Не успела посмотреть, вы изменили страницу.
NMitra
wmlink.ru прикрыл лавочку.
NMitra
Не стала писать новую статью. Ещё один вариант:

<style>
  #MVM {
    position: fixed;
    left: 40%;
    top: 40%;
    visibility: hidden;
    z-index: 10000;
    padding: 30px;
    background: #eee;
    color: #000;
  }
</style>

<script>
function toggleMVM() {
  var MVM = document.getElementById("MVM");
  if(MVM.style.visibility == "visible") {
    MVM.style.visibility = "hidden";
  } else {
    MVM.style.visibility = "visible";
  }
}
</script>

<a href="javascript:toggleMVM()"> КНОПКА </a>
<div id='MVM'>
СКРЫТЫЙ ТЕКСТ ПО СЕРЕДИНЕ МОНИТОРА </div>
Pavas
Спасибо, очень помогло! А как можно сделать, чтобы ссылка, по которой кликаешь, чтобы показать скрытый текст, после его появления исчезала?
NMitra
Попробуйте как-то так:

<a href='#' onclick='this.style.display = "none"; new Effect.toggle(&quot;pryach&quot;,&quot;blind&quot;); return false' type='submit'>Пример</a>
Pavas
Спасибо, то что нужно!
Космо Мизраил Горыныч
NMitra, скрипт в сообщении №14 плохо работает. Мазилка.

Думал тут найти красивый спойлер без доп. библиотек <_<
Воть, самый простейший спойлер без наворотов и излишеств :) Лень было самому писать, поэтому подфиксил имеющийся :)

код http://snipt.org/uhhm5
NMitra
У меня она же. В вашем примере добавлен идентификатор MVM, а так код тот же. С помощью ID вы показываете какой именно div нужно скрывать/показывать.

Да, я тоже предпочитаю не пользоваться библиотеками. С помощью стилей можно добиться необходимого эффекта. http://shpargalkablog.ru/2011/07/transformaciya-css.html
NMitra
Предыдущий вариант статьи http://prilozhenie1.blogspot.com/2012/08/blog-post.html
Uok
Может мне поможете? Я добавил два гаджета (Подписка и Ярлыки) но они не появились на блоге .В чем проблема непойму! посмотреть можно здесь
http://uok-newsblog.blogspot.ru/
NMitra
У вас после Top100 Рамблера что-то непонятное в коде твориться. Почитайте тут http://shpargalkablog.ru/2012/03/shablon-blogger-polomalsya.html
Наталка Михайлівна Зуб
Спасибо ОГРОМНОЕ!!!Долго искала как скрыть(показать) текст, и нашла у Вас. Еще раз спасибо.Мне это очень было нужно..
Анонимный
Ребята как здесь изменить черный цвет выпадающего текста на белый??
в скрипте с кнопкой нажать.


NMitra
Добавить к стилям CSS
#skryt {color: #fff;}
Анонимный
Спасибо огромное, а чтобы кнопка отображалась, изменив курсор
Анонимный
как кнопка.
NMitra
Посмотрите здесь http://shpargalkablog.ru/2012/04/css-knopki.html

label[for="raz"]:hover {background: green;}
Mails
здорово, спасибо. А если у меня не 1 кнопка с скрытым текстом, а 4 штуки. И они должны идти последовательно вроде этого:
Описание:
выплывающий текст
Рекомендации:
выплывающий текст
Важная информация:
выплывающий текст
Ингридиенты:
выплывающий текст

Как сделать так, чтобы например принажатии на 1 кнопку, оставшиеся 3 остальные кнопки спускались вниз вконец открывающегося текста 1 кнопки. ????
NMitra
На ваш выбор:

http://shpargalkablog.ru/2011/07/accordion-css.html
http://shpargalkablog.ru/2012/03/css-tabs.html
Анонимный
Good article! We will be linking to this particularly great content
on our site. Keep up the good writing.
NMitra
Благодарю вас! Приятно слышать.
Анонимный
Way cool! Some extremely valid points! I appreciate you penning this article and
also the rest of the website is also very good.
NMitra
Спасибо за отзыв!
Павел Бреусов
Подскажите пожалуйста, а как заставить на главной странице блога весь текст скрывать и оставлять несколько предложений от статьи? А то у меня все статьи на главной странице полностью без скрытия. спасибо
NMitra
Есть иконка "разорванный листок" (или "обрезать статью") http://shpargalkablog.ru/2012/11/nastroit-blogger.html#panel
Maximilian Edelman
ДЯКУЮЮЮ
NMitra
Звертайтеся
Анонимный
Не работает кнопка на телефонах и планшетах, кто знает как поправить?
NMitra
Вероятно у них нет поддержки :checked, примените скрипт

<button type="button" onclick="document.getElementById('raz1').style.display = (document.getElementById('raz1').style.display == 'none' ? '' : 'none');">нажать</button> <div id="raz1" style="display: none;">исчезающий текст</div>
Анонимный
Спасибо!
Анонимный
Здравствуйте, а подскажите пжл. как реализовать кнопку "показать еще" при нажатии которой открывается 4 блока, затем нажимаешь ее еще раз еще 4 блока и так до бесконечности ???
NMitra
Здравствуйте. можно на JS (поддержка, начиная с IE8)

<style>
[class^="raz"] {
display: none;
}
</style>


<input type="button" value="Нажать" id="raz">
<div class="raz1">1</div>
<div class="raz1">2</div>
<div class="raz1">3</div>
<div class="raz1">4</div>
<div class="raz2">1</div>
<div class="raz2">2</div>
<div class="raz2">3</div>
<div class="raz2">4</div>
<div class="raz3">1</div>
<div class="raz3">2</div>
<div class="raz3">3</div>
<div class="raz3">4</div>

<script>
var p = 1;
document.querySelector('#raz').onclick = function() {
div = document.querySelectorAll('div.raz'+p);
for (var i = 0; i < div.length; i++) {
div[i].style.display = "block";
}
p++;
}
</script>
Анонимный
спс. получилось, а можно ли сделать что бы они плавно выезжали ??? помогите пжл.
NMitra
Извините, это требует больше времени, чем я располагаю http://shpargalkablog.ru/p/comments-blog.html
Вячеслав Соколов
Здравствуйте. Красивая у вас кнопка. Я так понял ее можно, форму и цвет, изменять под себя. А если несколько кнопок установить, они будут работать, или нужно что то менять в коде? И что менять. А то у меня уже была проблема. Спасибо.
NMitra
Здравствуйте, конечно, форма и цвет может быть любой. Несколько кнопок тоже будет работать, но у каждой должен быть свой id, а у label свой for, такой же как id рядом стоящей кнопки. Пример http://jsfiddle.net/NMitra/5uarcff5/
Nooorganic Movement
Мне больше подошла возможность http://pastebin.com/8dp6LjrH.
Но вставленный текст не переносит по словам, буквы отрывает.
Анонимный
Весьма полезная штука! спасибо! Подскажите, как можно сделать, чтобы после нажатия открывался текст, но сама кнопка пропадала?
NMitra
.del:checked + label {
background: #e36443;
}

заменить на

.del:checked + label {
display: none;
}
Анонимный
Добрый день! Подскажите пожалуйста: добавляю ваш код, всё работает, но мне нужно, чтобы кол-во таких элементов на странице было несколько и они были независимы друг от друга. А у меня получается, что добавляя этот код несколько раз он подчиняется одной ПЕРВОЙ кнопке, она как бы содержит в себе все остальные и скрывает/открывает их. Причёт они сами не работают! Как сделать несколько таких элементов независимых друг от друга?
Анонимный
.....писал про первую кнопку с скрыв./открыв. текстом...
NMitra
Добрый день, посмотрите комментарий 54
Анонимный
NMitra... спасибо! Получилось, но не совсем то! http://group-atlantis.ru/individuals/casco/hidden-text/index.php?bitrix_include_areas=N&clear_cache=Y

Когда на них нажимаешь они в одну строку почемуто встают...как сделать чтобы они совсем друг от друга не зависели?
Анонимный
help! не получается! одна вкладывается в другую! help!
если попытаться их свернуть они вообще в один ряд становятся((((
NMitra
Измените стиль кнопки, http://jsfiddle.net/NMitra/5uarcff5/1/

.del + label {
display: block;
max-width: 6em;
text-align: center;
}
Unknown
как сделать так что бы в таб можно было вставлять не только слова html css но и целуе блоки, например с картинкой ????
NMitra
Вставьте вместо текста, блоки или картинки :)