javascript - 我如何为 HTML5 svg 的内部上下文实现水平滚动?

标签 javascript jquery html css svg

我在 svg 中有一系列矩形框,超出了 SVG 标签的宽度同样我想用外部按钮实现滚动到它的内部物质,这样它就会从内容的初始宽度滚动到它的最大内部宽度. 我在这里重新引用 Canvas 代码中的逻辑: http://jsfiddle.net/CQPeU/ 来自这段代码:

window.onmousemove = function (e) {
    var evt = e || event;
    if (dragging) {
        var delta = evt.offsetX - lastX;
        translated += delta;
        ctx.translate(delta, 0); // translate the context.
        lastX = evt.offsetX;
        draw(); // redraw
    }
}

我尝试通过改变属性 transoform:translate(x,0) 来改变水平滚动的 x 值。但找不到确切的实现。

最佳答案

SVG 的行为就像它自己的小 html 文档,并且有一个名为 viewBox 的时髦属性可以帮助您。

假设您有一个 svg 元素,其中包含一些尺寸为 200x200 的元素。如果您使用这些 viewBox 属性渲染它,它将按照您的预期显示。

<svg width="200" height="200" viewBox="0,0,200,200"></svg>

属性值是指:

minx, miny, width, height

其中 minx 是渲染区域左侧 svg 文档中的 x 位置,miny 是渲染区域顶部 svg 文档的 y 位置。

如果将宽度和高度保持在 200,更改这些 minx 和 miny 值实质上会移动所有 svg 内容中 200x200 可 window 口的左上角位置。

修改宽度和高度使您能够放大或缩小 svg 的一部分,尽管这可能不适用于您的示例。知道起来还是很方便的:)

对于您的示例,请尝试根据您在事件监听器中获得的鼠标拖动移动来增加或减少 viewBox 属性中的 minx 和 miny 值。

关于javascript - 我如何为 HTML5 svg 的内部上下文实现水平滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20473034/

相关文章:

javascript - 如何在 React Slick 的 Slider 点中添加 slick-active 类

javascript - 改变html5中范围栏的位置

html - 显示单元格宽度 : table

javascript - 添加动态字段以创建特定的 JSON 格式

javascript - Azure 文本转语音 - 不使用 Node.js 写入 MP3 文件

javascript - 更改下拉列表中选定的选项值

javascript - 在满足条件之前无法使用计时器调用嵌套函数?

html - 可以从 http 进行 https 重定向吗?

javascript - 是否可以在 JavaScript 或 TypeScript 的自定义类中实现索引器?

jquery - 内容不适合 bpopup