动态调整div的CSS缩放以适合容器的大小

dexiang

假设这样的html代码:

<editor>
    <tree></tree>
</editor>

在我的应用程序中,tree用来存储用户的输入,例如:

  • '123'
  • '1111111111111111111111111111111111111111111111111111111'

因此,如果文本太长,则可能会溢出。

我想将css的“缩放”样式应用于tree,以确保其尺寸小于editor

如何使用JavaScript计算完美变焦?

星展银行

您可以有效地逐步缩小它,直到它适合容器为止。

实际上,这是:

  • 设置元素样式,使其自然溢出
  • 一次缩小5%
  • 一旦子元素小于父元素,则停止

function calcSize() {
  
  // The elements we need to use and our current scale
  var editor = document.getElementById("editor")
  var tree = document.getElementById("tree")
  var scale = 1;
  
  // Reset the initial scale and style incase we are resizing the page
  tree.classList.add("loading");
  tree.style.transform = "scale(1)";

  // Loop until the scale is small enough to fit it's container
  while (
    (editor.getBoundingClientRect().width < 
    tree.getBoundingClientRect().width) && 
    (scale > 0) // This is just incase even at 0.05 scale it doesn't fit, at which point this would cause an infinate loop if we didn't have this check
  ) {
    // Reduce the scale
    scale -= 0.05;
    // Apply the new scale
    tree.style.transform = "scale(" + scale + ")";
  }
  // Display the final result
  tree.classList.remove("loading");
  console.log("Final scale: " + Math.round(scale * 100) / 100)
}

// Run on load and on resize
calcSize();
window.addEventListener("resize", calcSize);
#editor {
  display: block;
  max-width: 50%;
  font-size: 20px;
  border: 1px solid #000;
  overflow: visible;
}

#tree {
  display: inline-block;
  white-space: nowrap;
  /* This is important as the default scale will be relative to the overflowed size */
  transform-origin: 0 50%;
}

#tree.loading {
  opacity: 0;
}
<editor id="editor">
  <tree id="tree" class="loading">This is some overflowing text This is some overflowing text.</tree>
</editor>

(尝试以全屏方式查看代码段,并调整窗口大小以查看效果)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态调整容器大小以适合文本

来自分类Dev

调整容器div的大小以完全适合渲染的React组件

来自分类Dev

调整容器DIV的大小以适合元素高度

来自分类Dev

调整元素大小以适合容器

来自分类Dev

如何使用CSS调整图像大小以适合其容器

来自分类Dev

如何调整图像大小以使其适合CSS容器?

来自分类Dev

CSS避免容器调整大小以适合粗体文本

来自分类Dev

根据容器中的图像动态调整容器DIV的大小

来自分类Dev

调整大小以适合div的图标

来自分类Dev

调整大小以适合div的图标

来自分类Dev

如何调整比 div 容器更大的图像以完全适合其中(自动调整大小、缩小等...)

来自分类Dev

调整图标大小以适合容器元素?

来自分类Dev

CakePHP图像未调整大小,适合容器

来自分类Dev

调整Flex Spark图像大小以适合容器

来自分类Dev

动态调整“容器” UIView的大小

来自分类Dev

CSS / JS调整大小以适合图像大小

来自分类Dev

jQuery-调整图像大小以适合div

来自分类Dev

调整图像大小以适合<td>或div

来自分类Dev

按比例调整表格大小以适合div

来自分类Dev

如何调整svg的大小以适合div?

来自分类Dev

如何调整大型svg的大小以适合div

来自分类Dev

CSS使图像调整大小并适合任何屏幕

来自分类Dev

需要调整横幅大小以适合窗口CSS

来自分类Dev

jQuery动态调整div大小

来自分类Dev

动态调整div宽度的大小

来自分类Dev

如何动态调整div网格的大小以填充(但不超过)容器div的尺寸?

来自分类Dev

如何调整Java Script元素的大小以适合其容器窗口

来自分类Dev

调整HTML视频的大小以适合父容器的高度*和*宽度

来自分类Dev

自适应字体大小调整-适合容器

Related 相关文章

热门标签

归档