夕浮 發表於 2026-5-3 22:16:55

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

<blockquote><p>下面的两种解决办法都会导致图片缩小,可以给图片进行初始化的宽高设置</p></blockquote>
<div class="jb51code"><pre class="brush:xhtml;">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;title&gt;Document&lt;/title&gt;
    &lt;style&gt;
      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;
      }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="box"&gt;
      &lt;img id="image" src="https://www.runoob.com/images/pulpit.jpg" alt=""&gt;
      &lt;!-- &lt;img id="image" src="https://pics0.baidu.com/feed/c2cec3fdfc039245259830d9727ca5c77c1e2521.jpeg@f_auto?token=b910f4287521294b9469788c77a3ac93&amp;s=A12326BEC5137FDECCBC8DC1030060BB" alt=""&gt; --&gt;
    &lt;/div&gt;
    &lt;button id="btn"&gt;旋转&lt;/button&gt;
&lt;/body&gt;
&lt;script&gt;
    window.onload = () =&gt; {
      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 &gt; 360) {
                deg = 0
            } else {
                deg += 90
            }
            // 方法一:使用 scale -- 父元素的高度不固定
            // let childWidth = image.offsetWidth
            // let childHeight = image.offsetHeight
            // let scalePix = 1
            // if (childWidth &gt; 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 &gt; childRawHeight) {
                image.style.width = childRawHeight + 'px'
            }
            image.style.transform = `rotate(${deg}deg)`
      }
    }
&lt;/script&gt;
&lt;/html&gt;</pre></div>
<p>原始图片:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202309/2023090616254648.png" /></p>
<p>超出的效果图:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202309/2023090616254649.png" /></p>
<p>解决之后的效果图:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202309/2023090616254650.png" /></p>
頁: [1]
查看完整版本: CSS中图片旋转超出父元素解决办法