原生js实现图片预览,旋转,放大,缩小,拖拽

  • 时间:2020-04-24 19:50 作者:dream_3cdc 来源: 阅读:811
  • 扫一扫,手机访问
摘要:效果图.pngHTML代码 !DOCTYPE html html lang="zh" head meta charset="UTF 8" meta name="viewport" content="width=device width, initial scale=1.0
效果图.png

HTML代码

  <!DOCTYPE html><html lang="zh"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title></title>    <link rel="stylesheet" type="text/css" href="upload.css"/>    <script type="text/javascript" src="upload.js"></script></head><body>        <img src="壁纸1.jpg" onclick="imgSee(this)" >        <div class="imgSee" style="z-index: 999;">            <div id="imgbox">                <img  id="imgSeeimg">            </div>            <!--功能区-->            <div class="function">                <i class="imgEnlarge" onclick="enlarge()"></i>                <i class="imgNarrowe" onclick="narrowe()"></i>                <i class="imgIcon" onclick="imgRotate()"></i>                <a onclick="imgDisappea(this)"></a>            </div>        </div>        </body></html>

CSS代码(有几个功能背景图,在最下面)

#prompt3 { width: 100px; height: 100px; /*z-index: 999;*/ float: left; /*border: 1px solid black;*/ text-align: center; position: relative;}#imgSpan { position: absolute; /*top: 25px;*/ /*left:15px;*/    /*background-color: #52a7f8;*/    color: #ffffff;    border-radius: 5px;    width: 100px;    height: 100px;    /*padding-top: 36px;*/}#imgSpan:hover{    background-color: #1879d4;}.filepath { width: 100%; height: 100%; opacity: 0;}#previewImg{    float: left;}#previewImg p{    width: 100px;    height: 100px;    margin-right: 5px;    float: left;    position: relative;    padding-bottom:17px ;}#previewImg img{    width: 100px;    height: 100px;    border: 1px solid #d4d4d4;    padding: 5px;}#previewImg span{    cursor:pointer;    position: absolute;    bottom:-10px;    display: none;    background: #999999;    border-radius: 5px;    color: #fff;    padding: 2px 5px;    left: 30px;}#previewImg p:hover .delSpan{    display: inline-block;}.imgSee{    width: 100%;    height: 100%;    position: fixed;    background-color: rgba(0,0,0,0.1);    top: 0;    left: 0;    display: none;}#imgbox{    width: 800px;    height: 800px;    position: absolute;    top: 50%;    left: 50%;    margin-top: -400px;    margin-left: -400px;    text-align: center;}#imgSeeimg{    display: inline-block;}.function a{    display: block;    width: 32px;    height: 32px;    background-image: url(x.png);    text-decoration: none;    color: #000000;    background-size: 100%;}.function{    width: 150px;    background-color: #FFFFFF;    position: absolute;    display: flex;    justify-content: space-between;    right: 6%;    top: 50px;}.imgIcon{    display: block;    width: 32px;    height: 32px;    background-image: url(xuanzhuan.png);    background-size: 100%;}.imgEnlarge{    display: block;    width: 32px;    height: 32px;    background-image: url(./fangda.png);    background-size: 100%;}.imgNarrowe{    display: block;    width: 32px;    height: 32px;    background-image: url(./suoxiao.png);    background-size: 100%;}

JS代码

function changepic() {           var file = document.getElementById('file')           var reads = new FileReader();           var preview = $('#file').parent().prev();           var str = ''           f = file.files[0];           // 将图片存入           reads.readAsDataURL(f);           reads.onload = function() {               str = "<p><img src='" + this.result +                   "' onclick='imgSee(this)' title='点击查看图片'/><span class='delSpan' onclick='del(this)'>删除</span></p>"               preview.append(str);           }                      if (preview.children().length >= 2) {               file.parentNode.style.cssText = 'display: none;'               return           }           file.value = null       };       // 删除写法       function del(e) {           // 兼容IE的写法                  document.getElementById('file').value = null           document.getElementById('prompt3').style.cssText = 'display: block;'                  e.parentNode.parentNode.removeChild(e.parentNode);           // e.parentNode.remove()       }       // 查看图片函数       // 先保存原始宽度       var initialWith = 0       // 显示图片       function imgSee(e) {           var imgDisplay = document.getElementsByClassName('imgSee')[0];           document.onselectstart = function(){return false;}           imgDisplay.style.cssText = 'display: block; z-index: 999'           document.getElementById('imgSeeimg').src = e.src           document.getElementById('imgSeeimg').style.cssText = "transform:rotate(0deg)"           n=0           document.getElementById('imgSeeimg').style.marginTop = (800-document.getElementById('imgSeeimg').height)/2 + 'px'       }       // 点击后图片消失       function imgDisappea(e) {           document.onselectstart = function(){return true;}           e.parentNode.parentNode.style.cssText = 'display: none;'           document.getElementById('imgSeeimg').style.cssText = ''       }       var n=0       var i=1       // 点击后图片旋转90度       function imgRotate(){           let img =  document.getElementById('imgSeeimg')           var time = setInterval(function(){               n +=5               if(n==90*i){                   i++                   clearInterval(time)               }               img.style.transform= "rotate("+n+"deg)"           },30)                  }       window.onload = function(){           var dv = document.getElementById('imgSeeimg');           var x = 0;           var y = 0;           var l = 0;           var t = 0;           var isDown = false;           //鼠标按下事件           dv.onmousedown = function(e) {               //获取x坐标和y坐标               x = e.clientX;               y = e.clientY;               e.preventDefault();               //获取左部和顶部的偏移量               l = dv.offsetLeft;               t = dv.offsetTop;               //开关打开               isDown = true;               //设置样式                 dv.style.position = 'absolute'               document.getElementById('imgSeeimg').style.marginTop = '0px'               var nx = e.clientX;               var ny = e.clientY;               var nx = e.clientX;               var ny = e.clientY;               var nl = nx - (x - l);               var nt = ny - (y - t);               dv.style.left = nl + 'px';               dv.style.top = nt + 'px';               dv.style.cursor = 'move';           }           //鼠标移动           window.onmousemove = function(e) {               if (isDown == false) {                   return;               }               document.getElementById('imgSeeimg').style.marginTop = '0px'               // dv.style.position = 'absolute'               //获取x和y               var nx = e.clientX;               var ny = e.clientY;               //计算移动后的左偏移量和顶部的偏移量               var nl = nx - (x - l);               var nt = ny - (y - t);               dv.style.left = nl + 'px';               dv.style.top = nt + 'px';           }           //鼠标抬起事件           dv.onmouseup = function() {               //开关关闭               isDown = false;               dv.style.cursor = 'default';           }       }       // 放大图片功能       function enlarge(){           var width= document.getElementById('imgSeeimg').width           var n = width           var time = setInterval(function(){               n = n+10               if(n>width*1.2){                   clearInterval(time)               }               document.getElementById('imgSeeimg').style.width = n+'px'           },30)       }       function narrowe(){           // if(initialWith!=0){           //  document.getElementById('imgSeeimg').style.width = initialWith+'px'           // }           var width = document.getElementById('imgSeeimg').width           var n = width           var time = setInterval(function(){               n = n-10               if(n<width*0.8){                   clearInterval(time)               }               document.getElementById('imgSeeimg').style.width = n+'px'           },30)       }

所用到的图片

fangda.png
suoxiao.png
x.png
xuanzhuan.png
壁纸1.jpg
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】Ubuntu 25.04 + RTX 2080(8GB)用 vLLM 部署 Qwen3:8B(2025-10-20 23:52)
【系统环境|】程序员笔记:LINUX安装NVIDIA驱动程序(2025-10-20 23:51)
【系统环境|】ollama 部署和配置(2025-10-20 23:50)
【系统环境|】docker环境运行GPU算法基础环境搭建(2025-10-20 23:50)
【系统环境|】60块钱矿卡p106重新上岗玩大模型(2025-10-20 23:49)
【系统环境|】Ubuntu 安装 NVIDIA L20 显卡驱动(2025-10-20 23:48)
【系统环境|】Ubuntu 22.04 Tesla V100s显卡驱动,CUDA,cuDNN,MiniCONDA3 环境的安装(2025-10-20 23:47)
【系统环境|】显卡驱动安装后CUDA不可用?90%的人都踩过这3个坑(2025-10-20 23:46)
【系统环境|】一夜回到解放前——掀起“NVDLA”的盖头来(Nvidia刚发布的NVDLA是何方神圣?)(2025-10-20 23:45)
【系统环境|】一键提取歌曲伴奏和人声分轨,最强伴奏与人声分离工具(2025-10-20 23:44)
手机二维码手机访问领取大礼包
返回顶部