最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

如何在div内部实现图片旋转、放大、缩小、拖拽

来源:懂视网 责编:小采 时间:2020-11-27 18:50:06
文档

如何在div内部实现图片旋转、放大、缩小、拖拽

如何在div内部实现图片旋转、放大、缩小、拖拽:药药,切克闹,一人我编码累,累把那bug写成堆。秋高气爽空气干燥你一定dei多喝水,过完了这周我就要回去、趁还有几天、你尽情的来跟我怼~~~新的一年,很久没更博客了,眼看十一要来了,听说过了十一就等过年了,但是感觉刚过完年一样,心里黯然神伤,更博一
推荐度:
导读如何在div内部实现图片旋转、放大、缩小、拖拽:药药,切克闹,一人我编码累,累把那bug写成堆。秋高气爽空气干燥你一定dei多喝水,过完了这周我就要回去、趁还有几天、你尽情的来跟我怼~~~新的一年,很久没更博客了,眼看十一要来了,听说过了十一就等过年了,但是感觉刚过完年一样,心里黯然神伤,更博一
药药,切克闹,一人我编码累,累把那bug写成堆。秋高气爽空气干燥你一定dei多喝水,过完了这周我就要回去、趁还有几天、你尽情的来跟我怼~~~

新的一年,很久没更博客了,眼看十一要来了,听说过了十一就等过年了,但是感觉刚过完年一样,心里黯然神伤,更博一篇以表对小白驹过隙之神速聊以慰藉下……

在开发中这样一个场景,web应用程序某处功能会接收来自各个户上传的图片,后台有个图片查看功能,实际生产过程中的结果出现了用户上传的图片是倒转的或者图片因为远距离拍摄上传的比较模糊的情况。

1、解决图片角度的问题

大概原理很简单,切换HTML元素对象(图片)的class。如下CSS代码:

.rot1 {
 transform:rotate(90deg);
 filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
}
.rot2 {
 transform:rotate(180deg);
 filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
}
.rot3 {
 transform:rotate(270deg);
 filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}

再添加简单的JavaScript代码——根据是向左转还是向右转动态改变class的名称就行了。再次提示下,IE8浏览器是使用的是-ms-filter直接filter没有效果。
这里使用的是CSS3+filter滤镜的方法,所以低版本的Firefox以目前版本的Opera浏览器下式没有效果的。但绝对适用于90%以上的互联网用户了。

2、图片放大缩小

即为调整图片的宽和高。如下核心代码

 //放大缩小图片 function imgToSize(size) {
 var img = $("#rotImg");
 var oWidth = img.width();
 //取得图片的实际宽度 var oHeight = img.height();
 //取得图片的实际高度 img.width(oWidth + size);
 img.height(oHeight + size / oWidth * oHeight);
}

3、区域内拖动图片

图片放大超过父级容器时,支持图片在容器内拖动,在mousedown的条件下绑定mousemove,计算拖拽区域大小,核心代码如下:

 $(document).bind('mousemove.imgview', function (event) {
 if ($img.data('mousedown')) {
 var dx = event.pageX - settings['pageX'];
 var dy = event.pageY - settings['pageY'];
 if ((dx == 0) && (dy == 0)) {
 return false;
}
var newX = parseInt($img.css('left')) + dx;
 if (newX > 0) newX = 0;
 if (newX < settings['width'] - $img.width()) newX = settings['width'] - $img.width() + 1;
 var newY = parseInt($img.css('top')) + dy;
 if (newY > 0) newY = 0;
 if (newY < settings['height'] - $img.height()) newY = settings['height'] - $img.height() + 1;
 if (settings['width'] >= $img.width()) {
 newX = settings['width'] / 2 - $img.width() / 2;
}
if (settings['height'] >= $img.height()) {
 newY = settings['height'] / 2 - $img.height() / 2;
}
$img.css('left', newX + 'px');
 $img.css('top', newY + 'px');
 settings['pageX'] = event.pageX;
 settings['pageY'] = event.pageY;
 $img.data('cannot_minimize', true);
}
return false;
}
);

4、综合功能实现代码如下,运行请底部下载demo

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> .rot1 {
 -moz-transform: rotate(90deg);
 -webkit-transform: rotate(90deg);
 transform: rotate(90deg);
 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
 -ms-filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
}
.rot2 {
 -moz-transform: rotate(180deg);
 -webkit-transform: rotate(180deg);
 transform: rotate(180deg);
 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
 -ms-filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
}
.rot3 {
 -moz-transform: rotate(270deg);
 -webkit-transform: rotate(270deg);
 transform: rotate(270deg);
 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
 -ms-filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
#imageView_container {
 border: 2px solid #000000;
}
</style> <script src="js/jquery-1.10.2.js"></script> <script src="js/jquery-browser.js"></script> <script src="js/jquery.imageView.js"></script></head><body><p id="imageView_container" style="overflow: hidden;
 position: relative;
 width: 800px;
 height: 500px;
 "> <img src="images/1.jpg" id="rotImg" style="cursor: move;
 visibility: visible;
 position: absolute;
 width: 800px;
 height: 500px;
 " /></p><p style="padding-top:5px;
 "> <input type="button" value="放大" onclick="imgToSize(100)"> <input type="button" value="缩小" onclick="imgToSize(-100);
 "> <input type="button" value="向右旋转" id="rotRight"> <input type="button" value="向左旋转" id="rotLeft"></p><script type="text/javascript"> $(function () {
 var param = {
 right: document.getElementById("rotRight"), left: document.getElementById("rotLeft"), img: document.getElementById("rotImg"), rot: 0
}
;
 var fun = {
 right: function () {
 param.rot += 1;
 param.img.className = "rot" + param.rot;
 if (param.rot === 3) {
 param.rot = -1;
}
}, left: function () {
 param.rot -= 1;
 if (param.rot === -1) {
 param.rot = 3;
}
param.img.className = "rot" + param.rot;
}
};
 param.right.onclick = function () {
 fun.right();
 return false;
}
;
 param.left.onclick = function () {
 fun.left();
 return false;
}
;
 $('#imageView_container').imageView( {
 width: 800, height: 500
}
);
}
);
 var size = 0;
 //放大缩小图片 function imgToSize(size) {
 var img = $("#rotImg");
 var oWidth = img.width();
 //取得图片的实际宽度 var oHeight = img.height();
 //取得图片的实际高度 img.width(oWidth + size);
 img.height(oHeight + size / oWidth * oHeight);
}
</script></body></html>

5、最终效果如下图所示:

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

如何在div内部实现图片旋转、放大、缩小、拖拽

如何在div内部实现图片旋转、放大、缩小、拖拽:药药,切克闹,一人我编码累,累把那bug写成堆。秋高气爽空气干燥你一定dei多喝水,过完了这周我就要回去、趁还有几天、你尽情的来跟我怼~~~新的一年,很久没更博客了,眼看十一要来了,听说过了十一就等过年了,但是感觉刚过完年一样,心里黯然神伤,更博一
推荐度:
标签: 图片 旋转 如何
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top