Подсказка на css. Как треугольнику задать border?

169
02 ноября 2018, 12:00

Есть иконка (сделанная на html + css) и при наведении на неё курсора, выпадает подсказка.

Проблема в том, что у подсказки обязательно должен быть border, но треугольник является псевдоклассок и сделан из border'a. Как задать ему бордер? Может есть какие-нибудь альтернативные варианты сделать такую подсказку (скиньте пример)? Именно чтобы подсказка была такой формы и бордер был по всей форме.

Код элементов тут.

P.S. задача осложняется ещё тем, что подсказка должна быть анимирована.

<div class="circle circle-pink tooltip" data-title="принят в компанию">
  <span class="triangle-border"></span>
    <div class="cross"></div>
</div>
body {
  background: #000;
}
.circle {
  width: 52px;
  height: 52px;
  border: solid 3px white;
  border-radius: 50%;
  margin-left: 200px;
  margin-top: 90px;
}
.circle-pink {
  background-color: #ff256e;
}
.cross {
  background: white;
  height: 18px;
  width: 2px;
  margin-left: 25px;
  margin-top: 17px;
}
.cross::after {
  content: "";
  height: 2px;
  width: 18px;
  background: white;
  position: absolute;
  margin-left: -8px;
  margin-top: 8px;
}
.tooltip {
  position: relative;
}
.tooltip:before,
.tooltip:after {
  position: absolute;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.5s, margin 0.5s;
  margin-bottom: 15px;
}
.tooltip:before {
  content: attr(data-title);
  display: block;
  height: 25px;
  width: 150px;
  border: solid 1px blue;
  border-radius: 20px;
  background-color: white;
  // color: red;
  font-family: FuturaPTBook;
  font-size: 16px;
  font-weight: normal;
  font-style: normal;
  font-stretch: normal;
  line-height: normal;
  letter-spacing: normal;
  text-align: center;
/*   color: #2e3c3f; */
  color: #939a9c;
  box-sizing: border-box;
  left: -49px;
  bottom: 62px;
}
.tooltip::after {
  content: "";
  border-top: 9px solid white;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  left: 20px;
  bottom: 54px;
}
.tooltip:hover:before,
.tooltip:hover:after {
  visibility: visible;
  opacity: 1;
  margin-bottom: 0;
}
Answer 1

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

.tooltip::after {
   content: "";
   background-color: white;
   width: 6px;
   height: 6px;
   left: 22px;
   bottom: 59px;
   border: 1px solid blue;
   border-top-color: white;
   border-left-color: white;
   transform: rotate(45deg);
}
READ ALSO
Не работает очень простой слайдер на js

Не работает очень простой слайдер на js

У меня есть слайдер на 4 картинкиКаждая занимает 100% блока

219
Смена div&#39;в при клике по ссылке

Смена div'в при клике по ссылке

Нужна помощь! Ситуация такая, что есть боковое меню, с 4 пунктами и для каждого из них свой блокКак мне реализовать, чтобы при клике из каких-нибудь...

222
CSS Убрать лишний пиксель у border

CSS Убрать лишний пиксель у border

пишу сайт и я на этапе меню: код у каждого элемента, кроме последнего есть свойство:

182
Анимация SVG стрелки

Анимация SVG стрелки

Ниже представлен SVG

245