如何使用 jQuery 或 JavaScript 将内联 SVG 设置为使用 CSS 进行拉伸
How to set inline SVG to stretch with CSS using jQuery or JavaScript
我通常使用:
<style>
svg
{
height: 100%;
width: 100%;
}
</style>
要设置内联 svg,例如:
<svg>
Content ...
</svg>
拉伸并覆盖屏幕。我正在使用转换来缩小图像,类似于浏览器缩放。当我将图像弄脏时,就会出现问题,因为它不再位于中心或拉伸。这是因为我使用:
var documentX = $(document).width();
var documentY = $(document).height();
offsetX = (documentX / 2) - window.x;
offsetY = (documentY / 2) - window.y;
$("svg").offset({top:offsetY,left:offsetX});
移动图像,然后根据用户在图像上单击的位置进行放大。如前所述,一旦我缩小,我需要图像恢复到最初的样子。我希望这是有道理的...
我更喜欢jQuery解决方案,但是如果没有这样的jQuery解决方案,JavaScript解决方案也可以。我试过:
$("svg").css({"height":"100%","width":"100%"});
没有成功。这是我的HTML头:
<head>
<title>Main</title>
<style>
svg
{
height: 100%;
width: 100%;
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<script type="text/javascript">
$(document).mousemove(function(e) {
window.x = e.pageX;
window.y = e.pageY;
});
</script>
<script>
function init()
{
window.zoom = 1;
window.isZoomed = 0;
window.zoomScale = 3;
}
function scale()
{
if (window.isZoomed == 0)
{
var documentX = $(document).width();
var documentY = $(document).height();
offsetX = (documentX / 2) - window.x;
offsetY = (documentY / 2) - window.y;
$("svg").offset({top:offsetY,left:offsetX})
document.body.style.msTransform = "scale(" + (window.zoom * window.zoomScale) + ")";
window.zoom = window.zoom * window.zoomScale;
window.isZoomed = 1;
}
else
{
document.body.style.msTransform = "scale(" + (window.zoom / window.zoomScale) + ")";
window.zoom = window.zoom / window.zoomScale;
window.isZoomed = 0;
<!-- Need to stretch to fit window here -->
}
}
</script>
</head>
我基本上需要这样做
svg
{
height: 100%;
width: 100%;
}
但在JavaScript/jQuery???
你不需要
使用 JavaScript,只要你的 SVG 有 viewbox
属性,你就可以使用 CSS。正如您在以下示例中看到的,有一个 200 x 200 的viewbox
,但它填充了一个div 它 400px/400px。
例:
.wrap {
width: 400px;
height: 400px;
border: 2px solid grey;
}
.wrap svg {
width: 100%;
height: 100%;
display: block;
}
<div class="wrap">
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 200 200">
<rect x="0" y="0" width="150" height="150" rx="20" style="fill:#ff0000;" />
<rect x="50" y="50" width="150" height="150" rx="40" style="fill:#0000ff; fill-opacity:0.7;" />
</svg>
</div>
如果需要,你可以像这样在jQuery中设置viewbox
(根据需要替换维度(。
$('svg')[0].setAttribute('viewBox', '0 0 200 200');
别担心,我解决了。刚决定使用
location.reload()
这对我有用...
相关文章:
- 如何使用CSS设置所选选项的样式,而不设置所有其他选项的样式
- 使用CSS设置HTML5自动对焦属性
- 使用jQuery/CSS设置的鼠标光标在鼠标移动之前不会更改
- 在jquery中使用css设置背景大小
- 将所有访问过的网站颜色重置为所有最新浏览器和所有doctype(xhtml,html,html5)的默认颜色css设置
- IE11 style.maxHeight未从css设置
- 使用css设置背景的宽度和高度
- slideDown() 在 css 设置为 display:none 时不起作用
- 通过在运行时使用 CSS 设置其高度/宽度来拉伸 img 会产生奇怪的渐变
- 如何调整从其他用户加载的图像的大小,以便保持尺寸,同时使用 css 设置最大宽度和高度?(HTML/JS/CSS)
- 你能用CSS设置一个断开的链接的样式吗?
- 如何使用 CSS 设置表单样式
- 如何直接从 CSS 设置自定义元素的样式
- CSS-设置固定(或绝对)位置时转换宽度中断
- 为什么我们可以't使用css设置画布的宽度和高度
- 如何在jsviews中将css设置为自定义标记(日期选择器)
- 如何在页面加载前使用CSS设置响应滑块的高度
- 使用CSS设置表格样式
- RaphaelJS/CSS-设置文本/数字动画
- 当javascript事件的大小通过css设置时,我如何在其上放大图像