Запрещение элемента абсолютной позиции выходить за пределы экрана

Я пытаюсь сделать всплывающую подсказку только с Tailwind, я смог добраться сюда:

<script src = "https://cdn.tailwindcss.com"></script>


<br><br>

<div class = "shrink-0 cursor-pointer px-3">
    <div class = "relative flex group">
        <p>hover</p>
        <div class = "absolute bottom-0 flex flex-col items-center hidden mb-6 group-hover:flex">
            <span class = "relative z-10 p-2 text-xs text-gray-500 whitespace-no-wrap bg-white drop-shadow w-36">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </span>
        </div>
    </div>
</div>

Как видите, проблема в том, что если элемент находится слишком близко к любому краю области просмотра, он обрезается. Как я могу предотвратить это? Я предполагаю, что это потому, что элемент абсолютно позиционирован.

каков ваш ожидаемый результат? так как всплывающая подсказка могла располагаться в разных областях экрана

Alvin 23.11.2022 03:13

Я бы оптимально хотел, чтобы всплывающая подсказка не уходила за пределы экрана, но в то же время оставалась как можно ближе к зависшему элементу.

tony 23.11.2022 03:17

Раньше я использовал плагин всплывающей подсказки, который определяет, не слишком ли близко он к краю области просмотра, а затем устанавливает его как внешний предел.

Nathaniel Flick 23.11.2022 03:21

@NathanielFlick - о да, есть много плагинов, но я действительно пытаюсь сделать это только с помощью CSS, используя Tailwind. Я надеюсь, что у кого-то есть хорошее решение.

tony 23.11.2022 03:59

@tony единственная вещь в CSS, которая, как мне кажется, может быть близка, - это контейнерные запросы или, более конкретно, ваше абсолютное позиционирование.

Nathaniel Flick 23.11.2022 20:21
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
5
129
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы инкапсулируете группу в относительный элемент, это должно помочь, высота элемента не имеет значения. и добавление ограничения на ширину вашего диапазона / всплывающей подсказки должно всегда держать его на экране.

.tooltip_span {
  max-width: 75vw;
}
<script src = "https://cdn.tailwindcss.com"></script>


<div class = "shrink-0 cursor-pointer px-3">
    <div class = "relative flex group">
    
      <div class = "relative">
        <p>hover <br/> with more lines</p>
        <div class = "absolute flex flex-col items-center hidden mb-6 group-hover:flex">
          <span class = "relative z-10 p-2 text-xs text-gray-500 whitespace-no-wrap bg-white drop-shadow w-36 tooltip_span">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
            eiusmod tempor incididunt ut labore et dolore magna aliqua.
          </span>
        </div>
      </div>

    </div>
  </div>

Другие вопросы по теме