Абсолютное положение элемента по центру, пока он умещается на экране - PullRequest
1 голос
/ 08 июля 2020

Я создаю систему всплывающих подсказок, используя только CSS, которая отображает всплывающие подсказки с абсолютным центром под элементом, на который вы можете навести курсор, чтобы увидеть всплывающую подсказку. Подсказки должны иметь минимальную ширину. В моем примере ниже вы увидите, что это отлично работает со вторым элементом. В первом случае всплывающая подсказка не помещается на экране и будет обрезана. В этом сценарии (всплывающая подсказка не помещается на экране с левой стороны) ее нужно просто выровнять по левому краю. Если бы он находился в правой части экрана, он должен выровняться по правому краю. Я мог бы раздвигать границы CSS, но может быть решение CSS?

Edit: , как указывали другие, это невозможно сделать только в CSS. JavaScript можно использовать с Element.getBoundingClientRect () . Конечно, есть и готовые решения, такие как Поппер JS.

[data-tooltip] {
  padding: 3px 6px;
  color: white;
  background: red;
  position: relative;
  margin: 3px;
}

[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  margin: 2em auto;
  opacity: 0;
  pointer-events: none;
  transition: all 0.4s ease-in-out;
  padding: 10px;
  color: #fff;
  background: darkgray;
  min-width: 100px;
  box-shadow: 2px 2px 1px silver;
}

[data-tooltip]:hover::after {
  opacity: 1;
}
<div style="padding: 10px 0px">
  <span data-tooltip="This text (or element) will be cut off somewhat on the left side">Hover me
  </span>
  <span data-tooltip="This tooltip will be completely shown because it is not near any edge">Second one
  </span>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...