看到一个关于工具提示的有趣想法。它与其他的不同之处在于箭头的侧条纹进入身体形成两条透明条纹。我不知道如何制作这些切口。
我的代码:
.tooltip {
display: inline-block;
position: relative;
padding: 10px;
background-color: #0391fd;
color: white;
border-radius: 6px;
}
.tooltip:before {
display: block;
content: '';
position: absolute;
top: 100%;
left: 50%;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-top: 6px solid #0391fd;
transform: translateX(-50%);
}
<div class="tooltip">Текст</div>
如何制作透明镂空?
说明:文本必须插入到工具提示中。在这种情况下,工具提示的主体必须是橡胶的,即 工具提示应调整大小以适应里面的文本


svg解决方案
在任何矢量编辑器中,例如:
Inkscape,绘制问题作者提出的那个tooltip我画了一张大图,以便可以看到补丁的节点:总共有 15 个:8 个是矩形的圆角,6 个是切口的轮廓,1 个是三角形的顶部。
接下来,我使用SVGOMG优化 SVG 代码
下面的代码示例
tooltip动画示例
tooltip通过平滑地动画化补丁从一种形式到另一种形式的过渡,可以实现有趣的效果。比方说从一个矩形到给定的一个。
tooltip属性的动画用于此d="M20 .."。指定起始值和结束值。最重要的是,开始和结束位置的补丁节点数量必须匹配!
Для этого снова загружаем файл в
Inkscapeи перемещаем узлы, как показано на рисунке ниже:Получаем новый патч с 15 узлами, но это уже прямоугольник
Далее добавляем команду анимации атрибута
d渐变 + 伪元素 + 1 个嵌套元素。
选项 #1(新)
我们在 DOM 中创建了一个额外的元素,因为没有它就不可能在 css 上实现它,我应用了一个免费的命名空间
选项不是很(需要最终确定)No.2
选项3(已经看过)
CSS 解决方案
这可以通过正常布局来完成。没有额外的图形,跨浏览器。
在此示例中,它用于
flex-box页脚。如果您确实需要支持 IE <= 9,您可以将其替换为经典版。Режем низ на три части и с помощью православного
calcнаводим порядок:Сорян за косо обрезанную картинку.
魔术
clip-path和 6 个嵌套元素。Первый мой ответ был опубликован до объявления конкурса и не совсем выполнял его условия. Поэтому публикую новый ответ.
Если я правильно понял задачу, то необходимо было выполнить следующие условия:
Вырезы на тултипе должны быть прозрачны
Тултип должен растягиваться по горизонтали в зависимости от длины текста в тултипе и по вертикали (желательно), если строчек больше одной.
Пример ниже полностью адаптивен: блоки, тултипы, текст.
Проверена работоспособность в
IE11,Firefox,Chrome,OperaМасштабирование тултипа осуществляется командой -
transform="scale(2.2 0.75)", где первая цифра это увеличение по горизонтали, вторая уменьшение высоты. Это пример для однострочного тултипа на второй картинке (Харьковский дельфинарий)Важный атрибут
viewBoxвыполняет сразу несколько задач:Адаптивность svg изображения
Обязательным условием для выполнения этого является,- либо отсутствие
viewportв шапке svg файла, либо задание высоты и ширины окна просмотра браузера в процентах.Если не указан
viewportто значения по умолчанию -width="100%"иheight="100%"от размеров окна браузера.Параметры
viewBox="5 0 240 240"(не путать сviewport)Первые две цифры отвечают за смещение svg изображения по осям
X,Y3,4 цифры отвечают за масштабирование изображения внутри
viewportПри изменении этих параметров необходимо помнить, что:
У viewBox всё наоборот.
Поэтому, если вправо перемещаем viewBox - min-x > 0, то изображение сдвигается влево. Подробнее тут и тут.
Если увеличиваем viewBox, то изображение уменьшается. Это всё применяется для позиционирования и масштабирования тултипа.
Клонирование тултипа
Для этого применяется команда
useКак видно в этой команде делается дополнительной позиционирование тултипа по вертикали и горизонтали.
Цифры только в процентах, иначе svg не будет масштабироваться!
要从内部或外部样式表样式化工具提示克隆,您必须应用强制继承
在
path填充本身fill中,一定要删除它!文本换行
SVG 没有像 html
那样的自动换行,所以你必须使用标签
<tspan>但我认为这并不重要,因为工具提示的放置和填充是在 Html 布局期间完成的。
我认为它是叠加在上面的白色条纹
像这样尝试,你可以通过 div 添加一个三角形,因为 before 和 after 都很忙。