• CSS中图片旋转超出父元素解决办法


    下面的两种解决办法都会导致图片缩小,可以给图片进行初始化的宽高设置

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            html,body {
                margin: 0;
                padding: 0;
            }
            #box {
                box-sizing: border-box;
                width: 100%;
                height: 240px;
                background: pink;
            }
            #image {
                transform: rotate(0);
                object-fit: contain;
            }
            #btn {
                margin-top: 100px;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <img id="image" src="https://www.runoob.com/images/pulpit.jpg" alt="">
            <!-- <img id="image" src="https://pics0.baidu.com/feed/c2cec3fdfc039245259830d9727ca5c77c1e2521.jpeg@f_auto?token=b910f4287521294b9469788c77a3ac93&s=A12326BEC5137FDECCBC8DC1030060BB" alt=""> -->
        </div>
        <button id="btn">旋转</button>
    </body>
    <script>
        window.onload = () => {
            let btn = document.getElementById('btn')
            let image = document.getElementById('image')
            let box = document.getElementById('box')
            let childRawWidth = image.offsetWidth // 原始的图片宽
            let childRawHeight = image.offsetHeight  // 原始的图片高
            let deg = 0 
            btn.onclick = function() {
                if (deg > 360) {
                    deg = 0
                } else {
                    deg += 90
                }
                // 方法一:使用 scale -- 父元素的高度不固定
                // let childWidth = image.offsetWidth
                // let childHeight = image.offsetHeight
                // let scalePix = 1
                // if (childWidth > childHeight) {
                //     scalePix = childHeight / childWidth
                // } else {
                //     scalePix = childWidth / childHeight
                // }
                // image.style.transform = `rotate(${deg}deg) scale(${scalePix}, 1)`
                // 方法二:将图片重新设置宽高 -- 父元素的高度固定
                let parentWidth = box.offsetWidth
                let parentHeight = box.offsetHeight
                if (childRawWidth > childRawHeight) {
                    image.style.width = childRawHeight + 'px'
                }
                image.style.transform = `rotate(${deg}deg)`
            }
        }
    </script>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    原始图片:
    在这里插入图片描述

    超出的效果图:
    在这里插入图片描述

    解决之后的效果图:
    在这里插入图片描述

  • 相关阅读:
    Oracle创建dblink
    Vue中使用Switch开关用来控制商品的上架与下架情况、同时根据数据库商品的状态反应到前台、前台修改商品状态保存到数据库
    凌特杯,第二届,数字音频传输。simulink matlab
    图像阈值分割(一)
    【状语从句练习题】复习:分词从句
    【学习心得】爬虫JS逆向通解思路
    【Springboot】SpringBoot-Admin 服务监控+告警通知
    beamManagement(一)idle初始接入过程
    数据结构--第七天
    联邦学习:联邦场景下的多源知识图谱嵌入
  • 原文地址:https://blog.csdn.net/Y1914960928/article/details/132690703