Как отобразить текст в SVG без наведения курсора с помощью JS и CSS?
Здесь описано решение, как вывести текст на SVG с помощью JS и CSS: https://ru.stackoverflow.com/questions/1275925/как-при-наведении-на-svg-добиться-появления-текста/
Возможно ли похожим способом вывести разный текст для разных элементов одного SCG?
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<g><circle cx="1" cy="1" r=".4"/><title>Circle 1</title></g>
<g><circle cx="1" cy="2" r=".4"/><title>Circle 2</title></g>
<g><circle cx="2" cy="1" r=".4"/><title>Circle 3</title></g>
<g><circle cx="2" cy="2" r=".4"/><title>Circle 4</title></g>
</svg>
Этот код работает на ПК, но не работает на мобильном телефоне, так как наводить нечего. А нужно, чтобы работал и на мобильных устройствах.
Ответы (1 шт):
Автор решения: Evgeny
→ Ссылка
Решение найдено с помощью этого урока: https://www.petercollingridge.co.uk/tutorials/svg/interactive/tooltip/
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 20" id="tooltip-svg-4">
<style>
#tooltip {
font-size: 1px;
dominant-baseline: hanging;
}
</style>
<g><circle cx="1" cy="1" r=".4" class="tooltip-trigger" data-tooltip-text="Circle 1"/></g>
<g><circle cx="1" cy="2" r=".4" class="tooltip-trigger" data-tooltip-text="Circle 2"/></g>
<g><circle cx="2" cy="1" r=".4" class="tooltip-trigger" data-tooltip-text="Circle 3"/></g>
<g><circle cx="2" cy="2" r=".4" class="tooltip-trigger" data-tooltip-text="Circle 4"/></g>
<text id="tooltip" x="0" y="0" visibility="hidden" >Tooltip</text>
<script type="text/ecmascript"><![CDATA[
(function() {
var svg = document.getElementById('tooltip-svg-4');
var tooltip = svg.getElementById('tooltip');
var triggers = svg.getElementsByClassName('tooltip-trigger');
for (var i = 0; i < triggers.length; i++) {
triggers[i].addEventListener('mousemove', showTooltip);
triggers[i].addEventListener('mouseout', hideTooltip);
}
function showTooltip(evt) {
var CTM = svg.getScreenCTM();
var mouseX = (evt.clientX - CTM.e) / CTM.a;
var mouseY = (evt.clientY - CTM.f) / CTM.d;
tooltip.setAttributeNS(null, "x", mouseX + 6 / CTM.a);
tooltip.setAttributeNS(null, "y", mouseY + 20 / CTM.d);
tooltip.setAttributeNS(null, "visibility", "visible");
tooltip.firstChild.data = evt.target.getAttributeNS(null, "data-tooltip-text");
}
function hideTooltip(evt) {
tooltip.setAttributeNS(null, "visibility", "hidden");
}
})()
]]></script>
</svg>