Javascript 窗口大小更改时保持viewBox的比率
我希望在浏览器窗口更改时保持该比率,以便viewBox始终具有屏幕大小,但当我尝试下面的代码时,它会缩小viewBox。有人能进一步帮助我吗Javascript 窗口大小更改时保持viewBox的比率,javascript,svg,Javascript,Svg,我希望在浏览器窗口更改时保持该比率,以便viewBox始终具有屏幕大小,但当我尝试下面的代码时,它会缩小viewBox。有人能进一步帮助我吗 viewPort.setAttribute("width", screen.width); viewPort.setAttribute("height", screen.height); viewPort.setAttribute("viewBox","0 0 "+(screen.width-(screen.width+window.innerWidth)
viewPort.setAttribute("width", screen.width);
viewPort.setAttribute("height", screen.height);
viewPort.setAttribute("viewBox","0 0 "+(screen.width-(screen.width+window.innerWidth))+" "+(screen.height-(screen.height+window.innerHeight)));
你的要求不清楚。我想您可能会对术语和viewBox的实际功能感到困惑 Viewport是指页面上元素的大小。有时被称为画布。其大小由“宽度”和“高度”属性设置 viewBox描述SVG内容的边界。它的目的是告诉渲染器所有内容的位置。渲染器使用这些尺寸确定如何缩放内容以适应视口 您是否只希望SVG与浏览器窗口的大小完全相同?如果是这样,那么您需要做的就是:
viewPort.setAttribute("width", window.innerWidth);
viewPort.setAttribute("height", window.innerHeight);
您根本不需要视图框。SVG不会缩放,但它将匹配浏览器窗口的大小
但是,如果您确实希望SVG能够缩放以适应窗口,那么您确实需要一个viewBox。但是viewBox必须设置为SVG内容的大小,而不是SVG画布/视口的大小
通常,viewBox将保持不变。当浏览器调整大小时,不会对其进行更改
在下面的示例中,我将viewBox设置为与椭圆元素的位置和大小相匹配。我添加了一个紫色矩形来表示实际的viewBox尺寸。请注意,视框区域会根据需要放大或缩小,以适合窗口和视口。默认情况下,它被缩放以完全适合视口内部。但您可以使用preserveSpectratio属性更改该行为
var viewPort=document.getElementByIdmysvg;
函数setViewportSize{
viewPort.setAttributewidth,window.innerWidth;
viewPort.setAttributeheight,window.innerHeight;
}
//调整浏览器大小时更新SVG大小
window.addEventListenerresize,setViewportSize;
//设置初始SVG大小
设置视口大小;
html,正文{
保证金:0;
溢出:隐藏;
}
svg{
背景色:亚麻布;
}
你的要求不清楚。我想您可能会对术语和viewBox的实际功能感到困惑 Viewport是指页面上元素的大小。有时被称为画布。其大小由“宽度”和“高度”属性设置 viewBox描述SVG内容的边界。它的目的是告诉渲染器所有内容的位置。渲染器使用这些尺寸确定如何缩放内容以适应视口 您是否只希望SVG与浏览器窗口的大小完全相同?如果是这样,那么您需要做的就是:
viewPort.setAttribute("width", window.innerWidth);
viewPort.setAttribute("height", window.innerHeight);
您根本不需要视图框。SVG不会缩放,但它将匹配浏览器窗口的大小
但是,如果您确实希望SVG能够缩放以适应窗口,那么您确实需要一个viewBox。但是viewBox必须设置为SVG内容的大小,而不是SVG画布/视口的大小
通常,viewBox将保持不变。当浏览器调整大小时,不会对其进行更改
在下面的示例中,我将viewBox设置为与椭圆元素的位置和大小相匹配。我添加了一个紫色矩形来表示实际的viewBox尺寸。请注意,视框区域会根据需要放大或缩小,以适合窗口和视口。默认情况下,它被缩放以完全适合视口内部。但您可以使用preserveSpectratio属性更改该行为
var viewPort=document.getElementByIdmysvg;
函数setViewportSize{
viewPort.setAttributewidth,window.innerWidth;
viewPort.setAttributeheight,window.innerHeight;
}
//调整浏览器大小时更新SVG大小
window.addEventListenerresize,setViewportSize;
//设置初始SVG大小
设置视口大小;
html,正文{
保证金:0;
溢出:隐藏;
}
svg{
背景色:亚麻布;
}
看起来您正在将viewbox设置为负大小。这会使viewbox无效。好的,我尝试使用Math.abs,但它也会缩小viewbox。如果我们调用screen.height sh和window.innerHeight wh,那么你的方程是sh sh+wh,它等于sh sh wh,它等于-wh。取它的绝对值和使用wh是一样的。那么正确的方法是什么呢请提供一份报告。我想我们都对您试图实现的目标感到困惑。看起来您正在将viewbox设置为负大小。这会使viewbox无效。好的,我尝试使用Math.abs,但它也会缩小viewbox。如果我们调用screen.height sh和window.innerHeight wh,那么你的方程是sh sh+wh,它等于sh sh wh,它等于-wh。取它的绝对值和使用wh是一样的。那么正确的方法是什么呢请提供一份报告。我想我们都对你想要达到的目标感到困惑。谢谢你,保罗。我想将视口和viewBox设置为屏幕大小,这样它就可以保持成本不变。所以当浏览器大小改变时,我不想
缩放视图框。我需要查看框,因为我使用滑块缩放内容。例如,我的屏幕大小是1600x900。视口和视口框设置为此大小。例如,现在当我将浏览器大小更改为一半时,viewBox将缩小,这是我不希望看到的。例如,viewBox应该缩放到1600x900,然后您可能只需要将viewBox的宽度和高度设置为与SVG的宽度和高度相同的值。A仍然是个好主意。谢谢你,保罗。它工作正常,我使用了其他一些影响缩放的代码。谢谢保罗。我想将视口和viewBox设置为屏幕大小,这样它就可以保持成本不变。因此,当浏览器大小更改时,我不想缩放视口。我需要查看框,因为我使用滑块缩放内容。例如,我的屏幕大小是1600x900。视口和视口框设置为此大小。例如,现在当我将浏览器大小更改为一半时,viewBox将缩小,这是我不希望看到的。例如,viewBox应该缩放到1600x900,然后您可能只需要将viewBox的宽度和高度设置为与SVG的宽度和高度相同的值。A仍然是个好主意。谢谢你,保罗。它工作正常,我使用了其他一些影响缩放的代码。