svg图案可以随着div层缩小放大?

weiguang1000 2015-05-30 06:11:49
[code=javascript<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>可以拖拽鼠标来改变DIV层的大小
http://www.51xuediannao.com</title>
<head>
<style>
{box-sizing: border-box;
moz-box-sizing: border-box;
}
#testDiv{
background-color: buttonface;
background-repeat: repeat;
background-attachment: scroll;
color: #3969A5;
height: 300px;
left: 30px;
overflow: hidden;
width: 500;
z-index: 2;
border: 2px outset white;
margin: 0px; padding: 2px;
background-position: 0% 50% }
body{ font-family: Verdana;
font-size: 9pt }
#innerNice{
background-color: white;
background-repeat: repeat;
background-attachment: scroll;
color: #3969A5;
height: 100%;
overflow: auto;
width: 100%;
border: 2px inset white;
padding: 8px;
background-position: 0% 50% }
</style>

<SCRIPT language=javascript>

var theobject = null; //This gets a value as soon as a resize start

function resizeObject() {
this.el = null; //pointer to the object
this.dir = ""; //type of current resize (n, s, e, w, ne, nw, se, sw)
this.grabx = null; //Some useful values
this.graby = null;
this.width = null;
this.height = null;
this.left = null;
this.top = null;
}


//Find out what kind of resize! Return a string inlcluding the directions
function getDirection(el) {
var xPos, yPos, offset, dir;
dir = "";

xPos = window.event.offsetX;
yPos = window.event.offsetY;

offset = 8; //The distance from the edge in pixels

if (yPos<offset) dir += "n";
else if (yPos > el.offsetHeight-offset) dir += "s";
if (xPos<offset) dir += "w";
else if (xPos > el.offsetWidth-offset) dir += "e";

return dir;
}

function doDown() {
var el = getReal(event.srcElement, "className", "resizeMe");

if (el == null) {
theobject = null;
return;
}

dir = getDirection(el);
if (dir == "") return;

theobject = new resizeObject();

theobject.el = el;
theobject.dir = dir;

theobject.grabx = window.event.clientX;
theobject.graby = window.event.clientY;
theobject.width = el.offsetWidth;
theobject.height = el.offsetHeight;
theobject.left = el.offsetLeft;
theobject.top = el.offsetTop;

window.event.returnValue = false;
window.event.cancelBubble = true;
}

function doUp() {
if (theobject != null) {
theobject = null;
}
}

function doMove() {
var el, xPos, yPos, str, xMin, yMin;
xMin = 8; //The smallest width possible
yMin = 8; // height

el = getReal(event.srcElement, "className", "resizeMe");

if (el.className == "resizeMe") {
str = getDirection(el);
//Fix the cursor
if (str == "") str = "default";
else str += "-resize";
el.style.cursor = str;
}

//Dragging starts here
if(theobject != null) {
if (dir.indexOf("e") != -1)
theobject.el.style.width = Math.max(xMin, theobject.width +

window.event.clientX - theobject.grabx) + "px";

if (dir.indexOf("s") != -1)
theobject.el.style.height = Math.max(yMin, theobject.height +

window.event.clientY - theobject.graby) + "px";

if (dir.indexOf("w") != -1) {
theobject.el.style.left = Math.min(theobject.left +

window.event.clientX - theobject.grabx, theobject.left + theobject.width - xMin) +

"px";
theobject.el.style.width = Math.max(xMin, theobject.width -

window.event.clientX + theobject.grabx) + "px";
}
if (dir.indexOf("n") != -1) {
theobject.el.style.top = Math.min(theobject.top +

window.event.clientY - theobject.graby, theobject.top + theobject.height - yMin) +

"px";
theobject.el.style.height = Math.max(yMin, theobject.height -

window.event.clientY + theobject.graby) + "px";
}

window.event.returnValue = false;
window.event.cancelBubble = true;
}
}


function getReal(el, type, value) {
temp = el;
while ((temp != null) && (temp.tagName != "BODY")) {
if (eval("temp." + type) == value) {
el = temp;
return el;
}
temp = temp.parentElement;
}
return el;
}

document.onmousedown = doDown;
document.onmouseup = doUp;
document.onmousemove = doMove;
</SCRIPT>
</head>

<body>




<div class="resizeMe" id="testDiv">
<div id="innerNice">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"width:100%; height="100%">
<polygon points="100,10 40,180 190,60 10,60 160,180"
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg> </div>
</div>



</body>
][/code]
...全文
521 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
香蕉猪 2015-06-01
  • 打赏
  • 举报
回复 1
好长的代码,,,我也没仔细看,,不过设置div的width与height确实能放大缩小svg。。。 至于楼主说的预览,可以通过jq动态将内容加载到页面的某个div下就行了。。
Waitforsniping 2015-05-31
  • 打赏
  • 举报
回复
好长的代码,没仔细看,算是帮顶! 不过,可以改变SVG图片的viewport和viewbox来改变svg图片大小吧
weiguang1000 2015-05-30
  • 打赏
  • 举报
回复
这个论坛怎么发布带预览的帖子 [code=html<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>可以拖拽鼠标来改变DIV层的大小 http://www.51xuediannao.com</title> <head> <style> {box-sizing: border-box; moz-box-sizing: border-box; } #testDiv{ background-color: buttonface; background-repeat: repeat; background-attachment: scroll; color: #3969A5; height: 300px; left: 30px; overflow: hidden; width: 500; z-index: 2; border: 2px outset white; margin: 0px; padding: 2px; background-position: 0% 50% } body{ font-family: Verdana; font-size: 9pt } #innerNice{ background-color: white; background-repeat: repeat; background-attachment: scroll; color: #3969A5; height: 100%; overflow: auto; width: 100%; border: 2px inset white; padding: 8px; background-position: 0% 50% } </style> <SCRIPT language=javascript> var theobject = null; //This gets a value as soon as a resize start function resizeObject() { this.el = null; //pointer to the object this.dir = ""; //type of current resize (n, s, e, w, ne, nw, se, sw) this.grabx = null; //Some useful values this.graby = null; this.width = null; this.height = null; this.left = null; this.top = null; } //Find out what kind of resize! Return a string inlcluding the directions function getDirection(el) { var xPos, yPos, offset, dir; dir = ""; xPos = window.event.offsetX; yPos = window.event.offsetY; offset = 8; //The distance from the edge in pixels if (yPos<offset) dir += "n"; else if (yPos > el.offsetHeight-offset) dir += "s"; if (xPos<offset) dir += "w"; else if (xPos > el.offsetWidth-offset) dir += "e"; return dir; } function doDown() { var el = getReal(event.srcElement, "className", "resizeMe"); if (el == null) { theobject = null; return; } dir = getDirection(el); if (dir == "") return; theobject = new resizeObject(); theobject.el = el; theobject.dir = dir; theobject.grabx = window.event.clientX; theobject.graby = window.event.clientY; theobject.width = el.offsetWidth; theobject.height = el.offsetHeight; theobject.left = el.offsetLeft; theobject.top = el.offsetTop; window.event.returnValue = false; window.event.cancelBubble = true; } function doUp() { if (theobject != null) { theobject = null; } } function doMove() { var el, xPos, yPos, str, xMin, yMin; xMin = 8; //The smallest width possible yMin = 8; // height el = getReal(event.srcElement, "className", "resizeMe"); if (el.className == "resizeMe") { str = getDirection(el); //Fix the cursor if (str == "") str = "default"; else str += "-resize"; el.style.cursor = str; } //Dragging starts here if(theobject != null) { if (dir.indexOf("e") != -1) theobject.el.style.width = Math.max(xMin, theobject.width + window.event.clientX - theobject.grabx) + "px"; if (dir.indexOf("s") != -1) theobject.el.style.height = Math.max(yMin, theobject.height + window.event.clientY - theobject.graby) + "px"; if (dir.indexOf("w") != -1) { theobject.el.style.left = Math.min(theobject.left + window.event.clientX - theobject.grabx, theobject.left + theobject.width - xMin) + "px"; theobject.el.style.width = Math.max(xMin, theobject.width - window.event.clientX + theobject.grabx) + "px"; } if (dir.indexOf("n") != -1) { theobject.el.style.top = Math.min(theobject.top + window.event.clientY - theobject.graby, theobject.top + theobject.height - yMin) + "px"; theobject.el.style.height = Math.max(yMin, theobject.height - window.event.clientY + theobject.graby) + "px"; } window.event.returnValue = false; window.event.cancelBubble = true; } } function getReal(el, type, value) { temp = el; while ((temp != null) && (temp.tagName != "BODY")) { if (eval("temp." + type) == value) { el = temp; return el; } temp = temp.parentElement; } return el; } document.onmousedown = doDown; document.onmouseup = doUp; document.onmousemove = doMove; </SCRIPT> </head> <body> <div class="resizeMe" id="testDiv"> <div id="innerNice"> <svg xmlns="http://www.w3.org/2000/svg" version="1.1"width:100%; height="100%"> <polygon points="100,10 40,180 190,60 10,60 160,180" style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" /> </svg> </div> </div> </body> ][/code]

87,984

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧