• 图片等比例缩放方案


    图片等比例缩放方案

    Web开发时无可避免的需要将图片进行缩放,缩放时需要保证图片不变形,也就是需要等比例缩放。

    设定宽度或高度

    引入图片时,仅设置图片的width或者是height就可以使另一边自适应,从而实现等比例缩放。

    <section>
        <img id="t1" src="http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg">
        <img id="t2" src="http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg">
    </section>
    <style type="text/css">
        #t1{
             500px;
        }
        #t2{
            height: 300px;
        }
    </style>
    

    设定最大宽度或最大高度

    引入图片时,仅设置图片的max-width或者是max-height就可以使另一边自适应,从而实现等比例缩放。

    <section>
        <img id="t3" src="http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg">
        <img id="t4" src="http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg">
    </section>
    <style type="text/css">
        #t3{
            max- 500px;
        }
        #t4{
            max-height: 300px;
        }
    </style>
    

    根据父容器适应

    将图片设定为max- 100%;max-height: 100%;,就可以自适应父容器宽高进行等比缩放。

    <section>
        <div id="t5">
            <img src="http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg">
        </div>
    </section>
    <style type="text/css">
        #t5{
            height: 300px;
             600px;
            border: 1px solid #eee;
            display: flex;
            justify-content: center;
        }
        #t5 > img{
            max- 100%;
            max-height: 100%;
        }
    </style>
    

    使用Js设定宽高

    使用JavaScript预先取得图片并根据指定的高度或者是宽度计算缩放比,从而计算出另一边的长度,设定好宽高后加入文档。

    <section>
        <div id="t6"></div>
    </section>
    <script type="text/javascript">
        var img = new Image();
        var height = 300;
        img.src = "http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg";
        img.onload = function(){
            var scale = height / this.height;
            this.height = height;
            this.width = this.width * scale;
            document.getElementById("t6").appendChild(this);
        }
    </script>
    

    使用CSS背景属性

    使用CSSbackground属性进行等比缩放。

    <section>
        <div id="t7"></div>
    </section>
    <style type="text/css">
        #t7{
            height: 300px;
             600px;
            border: 1px solid #eee;
            background: url("http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg") center center no-repeat;
            background-size: contain;
        }
    </style>
    

    使用CSS转换属性

    使用CSStransform属性直接进行缩放。

    <section>
        <div id="t8">
            <img src="http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg">
        </div>
    </section>
    <style type="text/css">
        #t8{
            height: 300px;
             500px;
            overflow: hidden;
        }
        #t8 > img{
            transform: scale(0.6);
            transform-origin: 0 0;
        }
    </style>
    

    使用CSS适应属性

    使用CSSobject-fit属性直接进行图片适应缩放。

    <section>
        <div id="t9">
            <img src="http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg">
        </div>
    </section>
    <style type="text/css">
        #t9{
            height: 300px;
             600px;
            border: 1px solid #eee;
            display: flex;
            justify-content: center;
        }
        #t9 > img{
            object-fit: contain;
        }
    </style>
    

    代码示例

    <!DOCTYPE html>
    <html>
    <head>
        <title>图片等比例缩放</title>
        <style type="text/css">
            #t1{
                 500px;
            }
            #t2{
                height: 300px;
            }
    
            #t3{
                max- 500px;
            }
            #t4{
                max-height: 300px;
            }
    
            #t5{
                height: 300px;
                 600px;
                border: 1px solid #eee;
                display: flex;
                justify-content: center;
            }
            #t5 > img{
                max- 100%;
                max-height: 100%;
            }
    
            #t7{
                height: 300px;
                 600px;
                border: 1px solid #eee;
                background: url("http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg") center center no-repeat;
                background-size: contain;
            }
    
            #t8{
                height: 300px;
                 500px;
                overflow: hidden;
            }
            #t8 > img{
                transform: scale(0.6);
                transform-origin: 0 0;
            }
    
            #t9{
                height: 300px;
                 600px;
                border: 1px solid #eee;
                display: flex;
                justify-content: center;
            }
            #t9 > img{
                object-fit: contain;
            }
        </style>
    </head>
    <body>
        <section>
            <img id="t1" src="http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg">
            <img id="t2" src="http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg">
        </section>
    
        <section>
            <img id="t3" src="http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg">
            <img id="t4" src="http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg">
        </section>
    
        <section>
            <div id="t5">
                <img src="http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg">
            </div>
        </section>
    
        <section>
            <div id="t6"></div>
        </section>
    
        <section>
            <div id="t7"></div>
        </section>
    
        <section>
            <div id="t8">
                <img src="http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg">
            </div>
        </section>
    
        <section>
            <div id="t9">
                <img src="http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg">
            </div>
        </section>
    </body>
    <script type="text/javascript">
        var img = new Image();
        var height = 300;
        img.src = "http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg";
        img.onload = function(){
            var scale = height / this.height;
            this.height = height;
            this.width = this.width * scale;
            document.getElementById("t6").appendChild(this);
        }
    </script>
    </html>
    

    每日一题

    https://github.com/WindrunnerMax/EveryDay
    
  • 相关阅读:
    简单sql部分强化练习题
    JS实现鼠标经过用户头像显示资料卡的效果,可点击
    转帖:不吃早餐的危害:真的还是假的?
    转帖:有事没事别刮痧
    《城乡中国》:中国现行城乡分离的制度尤其是土地制度的由来和改革方向 五星推荐
    《只有医生知道》:协和产科大夫的诊疗故事集
    《真北》:作者有德鲁克的机会,没有德鲁克的洞察力
    《转化:提升网站流量和转化率的技巧》:结合市场营销六阶段理论,以SEM为手段,提高网站转化率的技巧
    转贴:气管切开术与噎住时的急救
    《明末农民战争史》:出版于30年前,至今仍是李自成张献忠起义的权威著作
  • 原文地址:https://www.cnblogs.com/WindrunnerMax/p/12856434.html
Copyright © 2020-2023  润新知