【问题标题】:Resizable diagonal line in a div with css使用css在div中调整大小的对角线
【发布时间】:2021-06-10 11:55:53
【问题描述】:

我需要一个矩形 div 的帮助,它的对角线长度使用 js 增加或减少。我想在对角线中插入一条线来标记对角线长度,因为使用 +/- 按钮最小化或最大化对角线。

我希望线条自动调整大小而不会降低质量。我想保持背景颜色为绿色,图像和标签颜色为白色。为此,我想使用 css 来绘制线条而不是图像。我附上了 div 应该是什么样子的图片。

非常感谢您的支持。

Div Demo Image

function max(){
    var w = document.getElementById('resizable').clientHeight;
    var h = document.getElementById('resizable').clientWidth;

    document.getElementById('resizable').style.height = h + 5 +'px';
    document.getElementById('resizable').style.width= w + 5 +'px';

    
  }
  
  
  function min(){
    var w = document.getElementById('resizable').clientHeight;
    var h = document.getElementById('resizable').clientWidth;

    document.getElementById('resizable').style.height = h - 5 +'px';
    document.getElementById('resizable').style.width= w - 5 +'px';

    
  }
<button class="btn" id="increase" onClick="max()">Max (+)</button>
<button class="btn" id="decrease" onClick="min()">Min (-)</button>

<div id="resizable" style="border:1px solid black;background-color:green;width:100px;height:50px;">

</div>

【问题讨论】:

    标签: javascript html jquery css


    【解决方案1】:

    您可以将另一个 div 与 position:absolute 一起使用

    const dash = document.getElementById('dash')
    const div = document.getElementById('resizable')
    
    function getLength() {
      dash.textContent = Math.floor(Math.sqrt((Math.pow(div.clientHeight, 2) + Math.pow(div.clientWidth, 2))))
    }
    
    function max() {
      var h = document.getElementById('resizable').clientHeight;
      var w = document.getElementById('resizable').clientWidth;
      const angle = Math.atan(h / w) * 180 / Math.PI;
    
      document.getElementById('resizable').style.height = h + 5 + 'px';
      document.getElementById('resizable').style.width = w + 5 + 'px';
    
      dash.style.transform = `rotate(${angle}deg)`;
      getLength()
    }
    
    
    function min() {
      var h = document.getElementById('resizable').clientHeight;
      var w = document.getElementById('resizable').clientWidth;
      const angle = Math.atan(h / w) * 180 / Math.PI;
    
      document.getElementById('resizable').style.height = h - 5 + 'px';
      document.getElementById('resizable').style.width = w - 5 + 'px';
    
      dash.style.transform = `rotate(${angle}deg)`;
      getLength()
    }
    
    getLength()
    #resizable {
      border: 1px solid black;
      background-color: green;
      width: 100px;
      height: 50px;
      position: absolute;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    
    #dash {
      position: absolute;
      text-align: center;
      content: "";
      line-height: 0;
      width: 150%;
      height: 1px;
      background-color: #fff;
      transform: rotate(26.5deg);
    }
    <button class="btn" id="increase" onClick="max()">Max (+)</button>
    <button class="btn" id="decrease" onClick="min()">Min (-)</button>
    
    <div id="resizable">
      <div id="dash"></div>
    </div>

    【讨论】:

    • 非常感谢您的帮助!有效!如何在这条对角线的中心放置一个标签来显示对角线的长度。
    • 更改#dash 标签内的文本应该可以解决问题:)
    • 我已经编辑了上面的代码来动态查看对角线长度标签
    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 2014-06-14
    • 2012-05-28
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多