【问题标题】:How to preserve top left position when resizing div after rotation transform?旋转变换后调整div大小时如何保留左上角位置?
【发布时间】:2018-12-06 00:24:59
【问题描述】:

我有一个绝对定位的 div,并且具有 45 度的旋转变换。它具有固定的高度,但可以动态更改宽度。

当我动态增加宽度时,整个元素会向右和向上漂移。

如何防止这种移动以使左边缘保持原位?

let box = document.getElementById('box')
let range = document.getElementById('range')

box.style.width = range.value + "px"; 

range.oninput = function() {
    box.style.width = range.value + "px"; 
}
#box {
  height: 100px;
  top: 100px;
  left: 100px;
  position: absolute;
  border: 1px solid black;
  transform: rotate(45deg)
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Resize box</title>
</head>
<body>
<div class="slidecontainer">
  <input type="range" min="50" max="300" value="50" class="slider" id="range">
</div>
  
<div id="box"></div>
</body>
</html>

【问题讨论】:

    标签: javascript geometry transform


    【解决方案1】:

    设置transform-origin:

    let box = document.getElementById('box')
    let range = document.getElementById('range')
    
    box.style.width = range.value + "px"; 
    
    range.oninput = function() {
        box.style.width = range.value + "px"; 
    }
    #box {
      height: 100px;
      top: 100px;
      left: 100px;
      position: absolute;
      border: 1px solid black;
      transform-origin:0 0;
      transform: rotate(45deg)
    }
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width">
      <title>Resize box</title>
    </head>
    <body>
    <div class="slidecontainer">
      <input type="range" min="50" max="300" value="50" class="slider" id="range">
    </div>
      
    <div id="box"></div>
    </body>
    </html>

    【讨论】:

    • 嗯,这很简单!!
    • @spinners,绝对!
    猜你喜欢
    • 2017-08-09
    • 2018-04-12
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多