Мне нужно отобразить всплывающие подсказки для определенных c терминов в div с несколькими столбцами, и мне нужно, чтобы они работали в нескольких браузерах. Я начал с примера w3schools CSS Tooltip , который прекрасно работает в обычном (с одним столбцом) контейнере. Но с несколькими столбцами Chrome имеет некоторые серьезные (возможно, не разрушающие сделки) проблемы с форматированием, и Safari терпит неудачу, обрезая всплывающую подсказку в столбце, в котором она должна отображаться. Firefox работает правильно.
Firefox:
Chrome:
Safari:
Я подумал, что, возможно, Safari рассматривает переполнение, как если бы оно было скрыто, но если так, я не мог найти способ изменить его поведение. И я не смог найти ни одного существующего вопроса, касающегося проблем с форматированием всплывающей подсказки в многостолбцовых макетах.
Теперь я волнуюсь, что мне, возможно, придется прикусить пулю и написать пользовательский javascript, чтобы обнаружить зависание, взять текст всплывающей подсказки, вставить текст в div, который всплывает над содержимым моего странице, покажите элемент div, правильно расположенный по отношению к ссылке, и снова скройте его, когда мышь уходит с ссылки Очевидно, было бы намного проще, если бы я мог заставить код подсказки w3schools работать с несколькими столбцами. (Использование таблицы или сетки вместо нескольких столбцов не подходит для этого проекта.)
Кто-нибудь еще сталкивался (и, надеюсь, решил) эту проблему?
Вот мой код; если вы запустите фрагмент, вы увидите, что верхний div показывает обычный одностолбцовый div, который отлично работает во всех браузерах; нижний элемент div состоит из двух столбцов, из которых были получены снимки экрана выше.
/* Tooltip container */
.tooltip {
position: relative;
display: inline-block;
}
/* Tooltip text */
.tooltip .tooltiptext {
visibility: hidden;
width: 150px;
background-color: black;
color: #fff;
text-align: center;
padding: 5px;
border-radius: 6px;
/* Position the tooltip text */
position: absolute;
z-index: 1;
top: 160%;
left: 50%;
margin-left: -75px;
/* Use half of the width (150/2 = 75), to center the tooltip */
}
.tooltip .tooltiptext::after {
/* Add an arrow */
content: " ";
position: absolute;
bottom: 100%;
/* At the top of the tooltip */
left: 50%;
margin-left: -10px;
border-width: 10px;
border-style: solid;
border-color: transparent transparent black transparent;
}
/* Show the tooltip text when you mouse over the tooltip container */
.tooltip:hover .tooltiptext {
visibility: visible;
}
.contentDiv {
margin-left: 50px;
padding: 5px;
width: 100px;
border: 1px solid black;
}
.contentDiv p {
margin: 0;
}
.contentDiv.twoColumn {
width: 210px;
column-count: 2;
-moz-column-count: 2;
-webkit-column-count: 2;
column-rule: 1px solid black;
-moz-column-rule: 1px solid black;
-webkit-column-rule: 1px solid black;
}
<div class="contentDiv">
<p>
<span class="tooltip">Hover 1
<span class="tooltiptext">Tooltip text for Hover #1.</span>
</span>
</p>
<p>
<span class="tooltip">Hover 2
<span class="tooltiptext">Tooltip text for Hover #2.</span>
</span>
</p>
</div>
<div style="clear:both;"></div>
<br>
<div class="contentDiv twoColumn">
<p>
<span class="tooltip">Hover 3
<span class="tooltiptext">Tooltip text for Hover #3.</span>
</span>
</p>
<p>
<span class="tooltip">Hover 4
<span class="tooltiptext">Tooltip text for Hover #4.</span>
</span>
</p>
</div>
Ссылка на JsFiddle