`
k1121
  • 浏览: 180191 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

纯JS实现图片预览与等比例缩放和居中

 
阅读更多

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

 <head>

  <title> ResizeImage </title>

  <meta name="Author" content="Ryan Shaw">

  <meta name="Keywords" content="Javascript,js,css,img,margin,onload,onchange">

  <meta name="Description" content="image preview and autoresize">

  <style type="text/css">

    .form-txt {

        height: 22px;

        padding-left: 3px;

        line-height: 22px;

        background-color: #FFFFFF;

        border: 1px solid #BBBBBB;

        vertical-align: middle;

        width: 200px;

        color: #666;

        font-size: 12px;

    }

    .release-hd{ background:#FFFFFF; border:1px solid #e5e5e5; padding:15px;}

    .item { margin:0 auto; padding-bottom: 10px; overflow: hidden; height:24px;}

    .item-name { float: left; font-size: 12px; padding-right: 8px; padding-top: 0px; text-align: right; width: 100px; color:#617b24; font-weight:700;}

  </style>

  <script type="text/javascript">

    // 不喜欢定义全局变量的同学可以不在这儿定义,我没有使用,用起来的话要好些个人认为

    var MAX_WIDTH = 300; // 最大宽度

    var MAX_HEIGHT = 200; // 最大高度

 

    // 预览图片

    function previewImage(file,order)  

    {

      var div = document.getElementById("preview");  

      if (file.files && file.files[0])  

      {  

        div.innerHTML = "<img id=\"imghead\">";  

        var img = document.getElementById("imghead");

        var reader = new FileReader();  

        reader.onload = function(evt){

            AutoResizeImage(300,200,img,evt.target.result);

        }  

        reader.readAsDataURL(file.files[0]);  

      }  

      else  

      {

        div.innerHTML = "<img id=\"imghead\">";  

        var img = document.getElementById("imghead");

        AutoResizeImage(300,200,img,file.value);

      }

    }

    

    // 缩放图片,imgSrc用户延迟加载图片url

    function AutoResizeImage(maxWidth,maxHeight,objImg,imgSrc){

        var img = new Image();

        img.src = imgSrc || objImg.src;

        var hRatio;

        var wRatio;

        var Ratio = 1;

        var w = img.width;

        var h = img.height;

        wRatio = maxWidth / w;

        hRatio = maxHeight / h;

        if (maxWidth ==0 && maxHeight==0){

        Ratio = 1;

        }else if (maxWidth==0){

        if (hRatio<1) Ratio = hRatio;

        }else if (maxHeight==0){

        if (wRatio<1) Ratio = wRatio;

        }else if (wRatio<1 || hRatio<1){

        Ratio = (wRatio<=hRatio?wRatio:hRatio);

        }

        if (Ratio<1){

        w = w * Ratio;

        h = h * Ratio;

        }

        objImg.style.height = Math.round(h) + "px";

        objImg.style.width = Math.round(w) + "px";

        

        if(h < maxHeight) { // 纵向有空余空间

            objImg.style.marginTop = Math.round((maxHeight - h) / 2) + "px";

        }

        if(w < maxWidth) { // 横向有空余空间

            objImg.style.marginLeft = Math.round((maxWidth - w) / 2) + "px";

        }

        if(!!!objImg.src)

            objImg.src = imgSrc;

    }

  </script>

 </head>

 

 <body>

  <div class="release-hd">

    <table>

        <tbody>

            <tr>

                <td>

                    <p class="item">

                        <label class="item-name">图片:</label>

                        <input class="form-txt" type="file" name="adPic" onchange=previewImage(this)>

                    </p>

                    <p class="item">

                        <label class="item-name">链接:</label>

                        <input class="form-txt" type="text" name="adUrl" value="">

                    </p>

                    <p class="item" style="height:72px">

                        <label class="item-name">主题:</label>

                        <textarea name="adTitle" cols=30 rows=10 style="height:66px" maxlength="250" class="form-txt"></textarea>

                    </p>

                        <span style="height:26px; font-weight:700; line-height:26px;color:#030; border:solid 1px #666;float:right; margin-right:10px;">

                            <input type="button" style="height:26px;border: 0 none;color:#006600; width:60px;" value="保存" />

                        </span>

                </td>

                <td>

                    <div id="preview">

                        <img id="imghead" width=300 height=200 border=0 src="http://su.bdimg.com/static/skin/img/logo_white.png" onload=AutoResizeImage(300,200,this)>

                    </div>

                </td>

            </tr>

        </tbody>

    </table>

  </div>

 </body>

</html>

分享到:
评论

相关推荐

    JS网页图片按比例自适应缩放实现方法

    总结来说,JS网页图片按比例自适应缩放的实现涉及到计算比例、调整尺寸以及居中定位等关键步骤。通过这个过程,我们可以确保图片在不同屏幕尺寸下都能保持其原始比例,避免了因简单缩放引起的变形问题,从而提升网页...

    JS Flash 3D图片 预览

    标题“JS Flash 3D图片预览”涉及的是在网页设计中使用JavaScript和Flash技术来实现3D图像预览的功能。这种技术结合了JavaScript的动态交互性和Flash的多媒体处理能力,为用户提供更丰富的视觉体验。JavaScript通常...

    mui.previewImg的css和js

    可能包含了一些优化图片缩放体验的算法,比如防止图片过度放大导致模糊,或者限制最小和最大缩放比例等。 总结来说,`mui.previewImg`功能的实现依赖于CSS和JS的紧密结合,通过`my.previewimage.css`定义样式,`mui...

    flex 图片预览

    总之,“flex 图片预览”项目展示了如何结合Flex布局和JavaScript实现一个高效、可定制的图片预览功能,对于Web开发者来说,这是一个很好的学习和参考案例,有助于提升项目中的用户体验设计。如果你对项目中的具体...

    关于图片按比例自适应缩放的js代码

    通过上述的知识点解析,可以了解到在Web开发中实现图片按比例自适应缩放功能涉及的主要JavaScript逻辑和CSS样式处理技巧,同时注意到了一些实际开发中需要考虑的问题,如异步加载、安全性等。这些知识点共同构成了在...

    图片预览插件.txt

    根据给定文件的信息,我们可以提炼出关于“图片预览插件”的相关...综上所述,这个图片预览插件通过HTML、CSS和JavaScript技术结合,实现了网页中图片的预览功能,提高了用户体验,并且具有一定的灵活性和可扩展性。

    JavaScript实现图片本地预览功能【不用上传至服务器】

    对于IE浏览器,由于不支持FileReader API,我们可以利用其特有的滤镜功能,如AlphaImageLoader,来实现图片预览。以下是一段针对IE的代码片段: ```javascript else { // 兼容IE var sFilter = 'filter:progid:...

    鼠标点击图片、图片放大

    除了手动编写JavaScript代码,还可以利用现有的库或框架,如jQuery的`lightbox`插件、Magnific Popup、Fancybox等,它们提供了更丰富的功能和易用的API,可以快速实现图片点击放大并带有导航、关闭按钮等功能。...

    MediumLightbox是一款支持移动端的仿medium图片放大预览js插件

    MediumLightbox是一款专为移动端设计的JavaScript插件,它的主要功能是模仿Medium网站的图片预览体验。在网页中,当用户点击一张图片时,MediumLightbox能够将图片优雅地放大并居中显示在屏幕中央,提供了一种无缝且...

    支持鼠标滚轮放大缩小的js点击弹出图片展示代码

    在IT领域,JavaScript是一种常用的前端编程语言,用于实现网页的动态效果和交互功能。在这个场景中,我们讨论的是一款利用JavaScript实现的图片展示代码,它具有鼠标滚轮放大缩小以及图片切换的功能。这个功能在网站...

    JS图库制作好看的图片

    3. **图片裁剪和居中**:使用`object-fit`属性可以使图片在容器中适应并保持比例,而`display: flex`或`grid`布局则能帮助图片居中对齐。 4. **交互反馈**:通过改变鼠标悬停时的背景色、边框或阴影,提高用户与...

    支持自动切换的Js图片展示效果.rar

    总的来说,这个资源提供了一个纯JavaScript实现的图片展示效果,涵盖了自动切换、点击放大等关键功能,对学习和理解JavaScript在网页交互设计中的应用具有很高的价值。无论是初学者还是经验丰富的开发者,都能从中...

    js 图片缩放特效代码

    `.lightbox` 类用于定义一个轻量级的图片预览容器,其具有300像素的宽度,白色背景,1像素的灰色边框,并且在页面上居中显示,距离顶部和左侧各5%。`.lightbox dt` 类则是对图片容器内的标题部分进行样式定义,背景...

    超炫JavaScript 点击放大 图片展示.zip

    `transform: scale(x,y)`可以用来缩放元素,其中x和y是缩放比例。例如,当用户点击图片时,我们可以将图片的`transform`属性设置为`scale(2,2)`,使图片放大两倍。同时,CSS3的`transition`属性可以添加平滑的过渡...

    js 实现弹出层

    例如,对于图片预览,我们可以将图片作为弹出层内容,并通过调整CSS实现图片的缩放和居中对齐: ```css .popup-content img { width: 100%; height: auto; max-width: 80%; margin: auto; } ``` 在实际项目中...

    jQuery图片拖拽缩放预览代码

    为了使图片在拖动和缩放过程中保持居中预览,可能需要使用CSS的`transform`属性,包括`translate`进行平移和`scale`进行缩放。这样,我们可以在不改变图片实际尺寸的情况下,实现其在屏幕上的动态定位和大小调整。 ...

    jquery 图片上传按比例预览插件集合

    通过比较容器宽高与图片原始尺寸的比例,计算出合适的缩放率,然后调整图片大小和位置,使得图片居中显示。 在图片文件选择后,插件会检查文件的后缀名是否在支持的格式列表内。如果不在,会弹出警告提示用户。对于...

    精美的图片放大js

    3. **CSS转换**:为了实现平滑的放大效果,js可能会利用CSS3的transform属性,通过scale()函数改变元素的缩放比例,同时可能用translate()调整元素的位置,确保放大后的图片居中。 4. **过渡效果**:为了增加视觉...

    javascript(仿QQ相册的特效)

    JavaScript结合CSS3的过渡(transition)和动画(animation)属性,可以创建出平滑的缩放、淡入淡出等效果。例如,使用`transform`属性改变元素的大小和位置,使用`opacity`控制透明度变化,配合`...

Global site tag (gtag.js) - Google Analytics