javascript - 如何定位 svg 图像的一部分

标签 javascript html css

svg example

所以我有这个类似的 svg 图像。白色透明,带有黑点。我必须用这种图案覆盖整个背景,然后瞄准一个 5x5 方形的点区域来改变它们的颜色。

实现此目的的最简单方法或常用方法是什么?

最佳答案

如果 SVG 图像直接嵌入到 HTML 代码中,您可以访问它的元素。您甚至可以使用 JavaScript 创建整个 SVG。这是一个例子: https://jsfiddle.net/da_mkay/eyskzpsc/7/

<!DOCTYPE html>
<html>
<head>
<title>SVG dots</title>
</head>
<body>
</body>

<script>
var makeSVGElement = function (tag, attrs) {
  var element = document.createElementNS('http://www.w3.org/2000/svg', tag)
  for (var k in attrs) {
    element.setAttribute(k, attrs[k])
  }
  return element
}


var makeDotSVG = function (width, height, dotRadius) {
  var svg = makeSVGElement('svg', { width: width, height: height, 'class': 'dot-svg' })
    , dotDiameter = dotRadius*2
    , dotsX = Math.floor(width / dotDiameter)
    , dotsY = Math.floor(height / dotDiameter)

  // Fill complete SVG canvas with dots
  for (var x = 0; x < dotsX; x++) {
    for (var y = 0; y < dotsY; y++) {
      var dot = makeSVGElement('circle', {
        id: 'dot-'+x+'-'+y,
        cx: dotRadius + x*dotDiameter,
        cy: dotRadius + y*dotDiameter,
        r: dotRadius,
        fill: '#B3E3A3'
      })
      svg.appendChild(dot)
    }
  }

  // Highlight the hovered dots by changing its fill-color
  var curMouseOver = function (event) {
    var dotX = Math.floor(event.offsetX / dotDiameter)
      , dotY = Math.floor(event.offsetY / dotDiameter)
      , dot = svg.getElementById('dot-'+dotX+'-'+dotY)
    if (dot !== null) {
      dot.setAttribute('fill', '#73B85C')
    }
  }

  svg.addEventListener('mouseover', curMouseOver)

  return svg
}

// Create SVG and add to body
var myDotSVG = makeDotSVG(500, 500, 5)
console.log(document.body)
document.body.appendChild(myDotSVG)
</script>
</html>

关于javascript - 如何定位 svg 图像的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35802152/

相关文章:

html - CSS 表单样式帮助内联 dt/dd 元素

jquery - 如何最好地使用 jQuery : with HTML or CSS for formatting

javascript - HTML5 Canvas 获取 div 的屏幕截图不起作用

javascript - 自定义 jQuery 选择器

javascript - 检查数据库中是否存在搜索的元素 - PHP 不会输出任何内容,但仍会将元素添加到数据库中

HTML/CSS - 将图像放在 img 之上?

asp.net - 响应式 CSS 更改在浏览器调整大小时不更新

javascript - 在 Facebook 上分享 Canvas

javascript - Redux-Saga 连接多个生成器存储

javascript - 尝试用时间间隔更新幻灯片