网页怎么增加文字的面积呢?
原因
想要给文字添加点击效果,但是和图里的一样,"-"的'受力面积'太小了,导致只能对准点击才有效,不太友好
目标
点击圆框内任何地方都能触发文字的点击事件
前提
所有线条都是通过svg画的, 文字'-'是text标签.
只给text标签绑定,不绑给circle.
有啥办法吗
drawCircle: function (startY, container, tag, hasChild) {
const self = this;
const tagMap = self.options.tagMap;
let svgContainer = container.firstChild;
if (!hasChild) {
let newPath = document.createElementNS("http://www.w3.org/2000/svg", "path");
newPath.setAttribute('stroke', 'black');
newPath.setAttribute('fill', 'transparent');
newPath.setAttribute('stroke-width', '1px');
newPath.setAttribute('d', `M 0 ${startY - container.offsetTop} h 50`)
svgContainer.appendChild(newPath);
}
let circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
circle.setAttribute('stroke', 'black');
circle.setAttribute('fill', 'white');
circle.setAttribute('stroke-width', '1px');
circle.setAttribute('cx', 50);
circle.setAttribute('cy', startY - container.offsetTop);
circle.setAttribute('r', '10px');
let text = document.createElementNS("http://www.w3.org/2000/svg", "text");
text.setAttribute('x', 50);
text.setAttribute('y', startY - container.offsetTop + 5);
text.setAttribute('text-anchor', 'middle');
text.setAttribute('fill', 'black');
text.setAttribute('class', 'black');
text.innerHTML = hasChild ? '-' : tagMap.get(tag).length
text.addEventListener("click", self.controlVisibilityOfChildren.bind(self, tag))
svgContainer.appendChild(circle);
svgContainer.appendChild(text);
},
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
直接用css的after伪元素就可以,一般封装一个mixin
变成 block。然后宽高100%。
当然这个问题难道不应该考虑把事件绑定在外面的盒子上吗?