Показать сообщение отдельно
  #1 (permalink)  
Старый 06.02.2019, 11:14
Интересующийся
Отправить личное сообщение для Wic_ Посмотреть профиль Найти все сообщения от Wic_
 
Регистрация: 25.01.2019
Сообщений: 16

Показ всплывающей подсказки в div
Использую готовый скрипт для подсказок. В таблице без проблем работает вот в таком виде:

Но мне нужно это все на дивах сверстать. Пробую так:
Но при нажатии на кнопку, span'a справки не видно, т.к. он внутри div'a. z-index прописан в CSS. Помогите поправить верстку!
Как реализована справка (где то скачал):
<style type="text/css">
.helptip {
    float:right;
    padding: 1px 7px;
    margin: 0px;
    background: #eee;
    border: 1px solid #ddd;
    cursor: pointer;
    border-radius: 5px;
    position: relative; /* Важно!
    Размещать абсолютное позиционирование внутри
    относительно данного тега */
    width: auto;
}
.helptip:hover {
    background: #fff;
}
.helptip div{
    padding: 8px;
    margin: 5px;
    background: #FBFBF9;
    border-radius: 5px;
    border: 1px solid #CBCBBD;
    position: absolute; /* Важно!
    Абсолютное позиционирование */
    display: none; /* Важно! Скрыть */
    left: -150px;
    bottom: 15px;
    z-index: 99; /* Важно!
    Всплывающие подсказки всегда выше
    нижеследующих элементов */
    min-width: 300px;
    box-shadow: 0 0 5px rgba(0,0,0,0.3);
    cursor: default;
}
.helptip span {
    padding: 8px;
    margin: 5px;
    background: #FBFBF9;
    border-radius: 5px;
    border: 1px solid #CBCBBD;
    position: absolute; /* Важно!
    Абсолютное позиционирование */
    display: none; /* Важно! Скрыть */
    left: -400px;
    bottom: 15px;
    z-index: 99; /* Важно!
    Всплывающие подсказки всегда выше
    нижеследующих элементов */
    min-width: 400px;
    box-shadow: 0 0 5px rgba(0,0,0,0.3);
    cursor: default;
}
.helptip div:hover,
.helptip span:hover {
    background: #fff;
}
.box {
  display: flex;
}
</style>
<script>
function helptip(t) {
    // Разрешаем закрытие подсказок
    // Создаем постоянную переменную этой функции для этих целей
    // Условимся: если ноль, то можно закрывать, а если единица, то нельзя
    helptip.v = 0;
    // Берем последний дочерний тег
    var b = t.children[(t.children.length-1)];
    // Если открыт, то закрываем
    if (b.style.display=="block") helptipx();
    else {
        // Закрываем все
        helptipx();
        // Открываем текущий
        b.style.display = "block";
        // Запрещаем закрытие подсказки вызванного последующими событиями
        helptip.v = 1;
    }
}
// Функция закрывает все подсказки
function helptipx() {
    // Если было нажатие для открытия подсказки, то закрывать нельзя
    // Поэтому проверяем:
    if (helptip.v==1) {
        // Разрешаем закрытие в будущем
        helptip.v = 0;
        // И выходим
        return;
    }
    // Выбираем все теги с классом .helptip
    var s = document.querySelectorAll(".helptip");
    // и перебираем их циклом
    for (var i=0; i < s.length; i++) {
        // Скрываем последний дочерний тег
        s[i].children[(s[i].children.length-1)].style.display = "none";
    }
}
</script>
<div>
    <div style="width: 100%;">
        <div style="float: left; width: 60%; height: 30px;">content</div>
        <div style="float: left; width: 30%; height: 30px;">content</div>
        <div style="float: right; width: 10%; height: 30px;"><div class="helptip" onclick="helptip(this)" title="Нажмите для того, чтобы получить справку" style="display: inline-block;"><strong>?</strong> <span title="Нажмите, чтобы закрыть справку">Справка.</span></div></div>
    </div>
</div> 
<p><strong>А в таблице все работает</strong></p>
<table width=100%>
  <tbody>
   	<tr>
             <td width="60%">content</td>
             <td width="30%">content</td>
             <td width="10%"><div class="helptip" onclick="helptip(this)" title="Нажмите для того, чтобы получить справку" style="display: inline-block;"><strong>?</strong> <span title="Нажмите, чтобы закрыть справку">Справка.</span></div></div></td>
        </tr>
 </tbody>
</table>

Последний раз редактировалось Wic_, 07.02.2019 в 11:20.
Ответить с цитированием