SVG图像的自动宽度和高度

前端之家收集整理的这篇文章主要介绍了SVG图像的自动宽度和高度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是SVG的新手,对不起,如果这是一个noob的问题.我试图找出如何让一个图像显示与参考图像的全部宽度和高度.我正在使用D3.js来构建一个图形,我想要一个标志出现在角落里.问题是,使用 javascript设置图像href,因此被引用的图像从不是固定的宽度或高度.我想要的是在全宽和高度上显示的图像,而不是放大或缩小.我所希望的是能够根据内容自动设置图像的宽度和高度,例如将width和height属性设置为auto.这只是导致图像未显示.
d3.select("body")
  .append("svg")
  .attr('id','mySVG')
  .attr({
      "width": "100%","height": "100%"
  })
  .attr("viewBox","0 0 " + width + " " + height )
  .attr("preserveAspectRatio","none");

d3.select('#mySVG')
  .append('image')
  .attr('image-rendering','optimizeQuality')
  .attr('height','auto')     <--- This does not work
  .attr('width','auto')      <--- This does not work
  .attr('xlink:href',logoUrl)
  .attr('x','0')
  .attr('y','0');

如何指定SVG图像的宽度和高度必须根据引用的图像大小动态确定?

解决方法

我不认为’auto’是svg图像元素的’length’attr的有效值.看看规格 here.你可能想使用’100%’

您可以加载图像,然后检查宽度和高度onload.

JSFiddle:http://jsfiddle.net/WQBPC/4/

var logoUrl = 'http://placehold.it/100x50&text=logo';

//SVG Setup stuff
var svg =  d3.select("body").append("svg")
  .attr('id','mySVG')
  .attr({
      "width": '100%',"height": '100%'
  })

var svg_img=  svg.append('image')
  .attr('image-rendering','optimizeQuality')
  .attr('x','0');

//Load image and get size.
var img = new Image();
img.src = logoUrl;
img.onload = function() {
 var width = this.width;
 var height = this.height;

 svg_img .attr('height',height)
  .attr('width',width)
  .attr('xlink:href',logoUrl)

}

猜你在找的JavaScript相关文章