网页怎么增加文字的面积呢?

发布于 2022-09-12 13:46:50 字数 1756 浏览 13 评论 0

原因

想要给文字添加点击效果,但是和图里的一样,"-"的'受力面积'太小了,导致只能对准点击才有效,不太友好

目标

点击圆框内任何地方都能触发文字的点击事件

前提

所有线条都是通过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);
},

图片.png

图片.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

像你 2022-09-19 13:46:51

直接用css的after伪元素就可以,一般封装一个mixin

@mixin extend-click() {
  //扩展点击区域
  position: relative;
  &:before {
    content: "";
    position: absolute;
    top: -6px;
    left: -6px;
    right: -6px;
    bottom: -6px;
  }
}
南街九尾狐 2022-09-19 13:46:51

变成 block。然后宽高100%。

当然这个问题难道不应该考虑把事件绑定在外面的盒子上吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文