草庐IT

javascript - 带有 viewBox 和宽度的 SVG 在 IE 中无法正确缩放高度

我正在尝试构建具有viewBox属性但没有显式宽度或高度属性的内联SVG。我使用CSS将SVG的宽度设置为100%。这应该让SVG缩放到它的包装容器,保持由viewBox设置的纵横比。在Chrome和Firefox中,这非常有效!这是我所谈论内容的一个最小代码笔示例:http://codepen.io/pcorey/pen/amkGlHTML:helloCSS:div{width:400px;}svg{width:100%;max-height:100%;outline:1pxsolidtomato;}text{font-size:10px;}viewBox是100x10。外部div设

html5 Canvas 元素和 svg

为什么我们需要html5canvas元素,同样可以通过嵌入式svg实现? 最佳答案 SVG和Canvas并不是真正可以互换的技术。SVG是一种保留模式图形,其中所有内容都来自一个相当抽象的模型(SVG文档)。另一方面,Canvas是一种即时模式图形,其中没有模型,客户端(JavaScript)必须负责重绘、动画等。 关于html5Canvas元素和svg,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

javascript - d3.js - 鼠标悬停事件在 svg 组上无法正常工作

我有一个图表,鼠标光标位于该图表内的任何地方都需要一条引用线。这条引用线将跟随图表内的鼠标移动。但这似乎并不能很好地工作。它仅适用于轴和轴的刻度(.axis线)。在调试时,我发现鼠标事件在应用于SVG时工作正常,但在组上却没有,为什么这样?这是我的代码:测试.html.g_main{cursor:pointer;}.axispath,.axisline{stroke:#DBDBDB;/*shape-rendering:crispEdges;*/}.yg:first-childtext{display:none;}.yg:first-childline{stroke:#989898;st

html - svg 元素上的虚假边距

我有一个非常简单的文档(另见JSFiddle):html,body,svg,div{margin:0;padding:0;border:0;}出于某种原因,svg元素的底部边距为3px或4px(即,body元素的高度为1007px、1008px甚至1009px;svg使用浏览器调试工具检查时,边距本身为0。)如果我用div替换svg,虚假边距就会消失。该行为在Opera12、Chrome33、Firefox26和InternetExplorer11中是一致的,因此我相信该行为是设计使然且符合标准,我只是不明白。。p> 最佳答案 这是

javascript - 动态呈现的 SVG 未显示

我有以下svg对象,如果我在不使用代码(静态)的情况下直接放入html页面,它会正确呈现。但是如果我使用JavaScript将相同的svg内容插入我的html页面,它不会显示,如果我在firebug中打开它并检查svg并尝试编辑svg标签,它会显示。可能是什么问题我正在使用下面的代码动态添加svg,这里的容器将是我的div,它位于body下方viewPort=document.createElementNS('http://www.w3.org/2000/svg','svg');viewPort.setAttribute('height',100);viewPort.setAttrib

html - 如何在 SVG 中获取滚动条?

我有一个SVG元素,里面有很多元素。SVG元素有一个View框,所以你可以按缩放按钮,元素会变大或变小。效果很好。现在的问题是,当元素溢出父SVG元素时,不会出现滚动条。示例:...S...//hereIsettheviewboxafterclickingthezoomOut-Buttonfloatwidth=svg.getViewBox().getBaseVal().getWidth();floatheight=svg.getViewBox().getBaseVal().getHeight();svg.getViewBox().getBaseVal().setHeight((floa

asp.net - 具有 PNG 后备功能的浏览器中用于图像的 SVG

我想在网站上使用公司Logo的SVG版本。目前,主流浏览器(IE、Safari、Chrome、Firefox、Opera)的所有当前版本都支持SVG,所以这看起来并不疯狂。但是,旧浏览器仍然存在,所以我需要退回到PNG支持。显而易见的解决方案是像这样将SVG内容放在object标记中(请原谅内联样式...):如果可能,理论上应该渲染object,否则渲染img。然而,Chrome不喜欢这样并将height样式应用于对象本身而不是SVG,所以我最终得到一个带有滚动条的类似iframe的小框,显示一个巨大的Logo。另一种解决方案是使用PNG作为img源,然后在渲染时使用javascrip

html - 在调整窗口大小时自动缩放嵌入在 HTML 中的 SVG

我想在HTML页面中嵌入一些SVG,以便在调整页面大小时自动调整大小(使用SVG、CSS或JS),同时仍保留原始纵横比。例如,使用W3School的示例:是否可以将SVG宽度设置为窗口宽度的5%,并按比例缩放高度?我尝试了一些东西,包括preserveAspectRatio="xMinYMinmeet"并在内将尺寸设置为100%容器,但还没有让它工作。有什么建议吗? 最佳答案 您的SVG根元素需要一个viewBox属性,它将定义SVG图像的整体大小:现在您可以通过CSS设置图像的宽度或高度,它会完美缩放。

javascript - 如何获取相对于持有 onclick 监听器的 SVG 元素的点击坐标?

我无法计算相对于触发事件的元素的点击坐标(x和y)。我还没有在网上找到一个简单的例子。我在HTML页面中有一个简单的svg(左边距为100px)。它包含一个group(翻译为30px30px),它附加了一个onclick监听器。在那个group中,我有一个宽度和高度为50px的rect。在我点击group元素的任何部分后,我得到一个事件对象,其坐标相对于HTML页面(evt.clientX和evt.clientY)。我需要知道的是用户在group元素(包含onclick监听器的元素)中单击的确切位置。如何将clientX和clientY坐标转换为group元素坐标。也就是说,如果我点击

html - 如何判断 DOM 元素是 HTML 还是 SVG?

我正在编写一个需要以不同方式应用于HTML元素和SVG元素的基础架构。给定一个DOM节点,我如何判断它是SVG还是HTML元素? 最佳答案 您可以尝试以下操作:if(document.getElementById("el")instanceofSVGElement){console.log("It'sanSVGelement");}ThisisabasicSVGdocument!请注意元素本身实际上是一个HTML元素包含SVG元素-这意味着,也许令人惊讶的是,HTML元素不是SVG元素,因此:console.log(document