Всплывающие подсказки в постах, бета-версия
Авторы: Romych, rps
для работы с подсказками нам потребуется плагин Lytebox, а так же мы будем использовать тот что установлен на нашем сервисе поумолчанию - jquery.tipsy
оба плагина, как выяснилось, поддерживают работу с html контентом внутри всплывающих подсказок, что позволяет делать невероятные вещи, которые не даёт возможности делать тот же спойлер.
пример, подсказка может всплывать при наведении на установленную вами картинку, и автоматически начнёт проигрываться музыка или воспроизводиться видео внутри подсказки, можно вставлять так же любые таблицы, наполненные любым контентом.
Всплывающие подсказки 5 видов, для удобства работы с ними создана вот такая форма:
в html-верх:
<script type="text/javascript" language="javascript" src="http://lytebox.com/lib/lytebox/lytebox.js"></script> <link rel="stylesheet" href="http://lytebox.com/lib/lytebox/lytebox.css" type="text/css" media="screen" /> .my { background-color: #FFFFFF; color: #488baa; font-size: 12px; font-family: Tahoma; line-height: 125%; border-radius: 15px; -moz-box-shadow: inset 0 0 1em #8cb9d6; -webkit-box-shadow: inset 0 0 1em #8cb9d6; box-shadow: inset 0 0 1em #8cb9d6; filter: progid:DXImageTransform.Microsoft.Shadow(color='#8cb9d6', Direction=145, Strength=3); } .post-content { overflow: visible !important; } .tipsy-inner { font-size:16px!important; max-width:450px !important; text-align: left !important; } .lytetip { position: static !important; } .lytetip span { position: absolute !important; top: inherit !important; left: inherit !important; display: inline-block !important; visibility: hidden; width: auto !important; margin-top: 0.9em; } .lytetip:hover span { display: inline-block !important; visibility: visible; } #fon { position: fixed; z-index: 2; top: 0; left: 0; height: 100%; width: 100%; background-color: #000; filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50); opacity: 0.5; } </style>
в html-низ:
<!--Подсказки--> <script language="javascript"> $('td#button-hide').before('<td id="tooltips" style=\'background-image:url("http://www.iconsearch.ru/uploads/icons/splashyicons/16x16/comments_reply.png")\' onclick="return changeVisibility(\'tipsybox\', this);"><img src="/i/blank.gif" title="Всплывающие подсказки"></td>'); $('#tooltips').click(function(){$('#tipsybox').before('<div id="fon"></div>'); }); if ((document.URL.indexOf("viewtopic.php")!=-1) || (document.URL.indexOf("post.php")!=-1)){ elm= document.getElementsByTagName("div"); for (y in elm) {if (elm[y].className == "post-content") { p = elm[y].getElementsByTagName("p"); for (z in p) {if(!p[z] || !p[z].innerHTML) continue; var post = p[z].innerHTML; if(post.indexOf("[/mytool]")!= -1) { tool = /\[mytool=(.*?)\](.*?)\|(.*?)\[\/mytool\]/gi post = post.replace(tool, "<a href='javascript:void(0)' data-lyte-options='$1' class='lytetip' data-tip='$3'>$2</a>") }; p[z].innerHTML = post;}}}} function getRadioGroupValue(radioGroupObj){for (var i=0;i<radioGroupObj.length;i++)if (radioGroupObj[i].checked) return radioGroupObj[i].value;return null;} function act2() {var tips=getRadioGroupValue(document.rf.tip);var op=document.getElementById('opis').value;var ur=document.getElementById('adr').value;insert('[mytool='+tips+']'+ur+'|'+op+'[/mytool]');changeVisibility('tipsybox');var d=document.getElementById('fon');d.parentNode.removeChild(d);} </script> <div class="my" align="center" id="tipsybox" style="display:none;width:375px;padding:8px;position:fixed;top:25%;right:35%;z-index:900;" class="container"> <strong>Варианты всплывающих подсказок</strong><br><br> <form name="rf" style="text-align:center;padding:5px;word-spacing:4px;"> <input type="radio" name="tip" value="tipStyle:info changeTipCursor:false" onclick="this.form.act.onclick=act2"><a href="#" class="lytetip" data-lyte-options="tipStyle:info" data-tip="информационная" onclick="this.form.act.onclick=act2"> info</a> <input type="radio" name="tip" value="tipStyle:help changeTipCursor:false" onclick="this.form.act.onclick=act2"><a href="#" class="lytetip" data-lyte-options="tipStyle:help" data-tip="вопрос"> help</a> <input type="radio" name="tip" value="tipStyle:warning changeTipCursor:false" onclick="this.form.act.onclick=act2"><a href="#" class="lytetip" data-lyte-options="tipStyle:warning" data-tip="предупреждение"> warning</a> <input type="radio" name="tip" value="tipStyle:error changeTipCursor:false" onclick="this.form.act.onclick=act2"><a href="#" class="lytetip" data-lyte-options="tipStyle:error" data-tip="ошибкa"> error</a> <br><br> <textarea id="adr" cols="45" rows="3" style="background:#f0f8ff; width: 100%;" placeholder="Введите слово или bb-code с изображением, при наведении на которое будет появляться всплывающая подсказка"></textarea><textarea id="opis" cols="45" rows="3" style="background:#f0f8ff; width: 100%;" placeholder="Введите текст с применением любых bb-cod'ов, этот текст будет виден в подсказке при наведении курсора"></textarea> <button type=button name=act>Создать подсказку</button> <button type="reset" onclick="changeVisibility('tipsybox');var d=document.getElementById('fon');d.parentNode.removeChild(d);">Отмена</button></form></div>