繁体   English   中英

使用Javascript,如何缩放相对于视口中心的元素?

[英]Using Javascript, how can I scale an element relative to the center of a viewport?

我实质上是在尝试制作一个非常简单的Google Maps克隆。

我的div上的布局相当复杂,我想对其进行缩放和拖动。 我正在使用Pep库进行拖放,并使用CSS transform: scale()进行缩放。

我的问题是, transform-origin应始终位于视口的中心。 比例尺默认设置为1很好,但是如果有所不同,它似乎就不起作用了。

在codepen中有一个简化的测试用例,我在其中设置了一个小盒子来直观地表示transform-origin起点。 理想情况下,这应该始终保持在视口的中间。

如果这仍然是未解决的问题:您必须计算从视口点到左上角的平移,缩放和向后平移,或者换句话说,也要缩放视口。 否则,您是从旧视口或从原点缩放。 如果您愿意,我可以在没有视口的情况下重写它。

如何自动使底部居中<div>在视口上?</div><div id="text_translate"><p> 我正在创建一种仅基于纯文本、没有图像或其他任何内容的网站/实验,它仅包含一个&lt;div&gt;包含几个&lt;span&gt;和&lt;a&gt;元素,这些元素在使用 JS 点击时打开,显示堆叠的文本在&lt;div&gt;的底部。</p><p> 当屏幕上覆盖的文本过多时,问题就出现了,并且用户不断点击——因此,显示更多文本——这些新行一直堆叠在底部,不会自动可见:用户必须开始滚动到继续阅读。</p><p> 有没有办法可以自动将&lt;div&gt;的底部放在屏幕<em>的</em>中心,所以它不需要滚动? 当文本填满整个屏幕时,您是否有更好的解决方法来避免手动滚动?</p><p> 谢谢!</p><p> 编辑:我添加了一段代码,以便更好地理解我所做的。 </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-html lang-html prettyprint-override"> &lt;div id="container"&gt; &lt;p class="fade-in"&gt; &lt;a data-opens="1" href="#"&gt;Hello&lt;/a&gt;.&lt;span data-openedby="1" class="fade-in"&gt; How are &lt;a data-opens="2" href="#"&gt;you&lt;/a&gt;? &lt;/span&gt;&lt;span class="fade-in" data-openedby="2"&gt;&lt;a data-opens="3" href="#"&gt;Welcome&lt;/a&gt; to my website.&lt;/span&gt; &lt;/p&gt; &lt;/div&gt;</pre></div></div><p></p><p> 基本上,这段代码,但不是只有三个&lt;a&gt; ,到目前为止,它有 300 个带有各自的&lt;span&gt; 。</p></div>

[英]How can I automatically center the bottom of a <div> on the viewport?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何获取元素相对于broswer视口的位置 Javascript:如何判断元素在视口中? 如何创建可拖动的滚动条,以使用javascript操作视口? 如何在`transform:scale()`之前获取元素的位置(相对于其容器)? 使用svg.js和svg-pan-zoom如何获取当前的“视口”中心点? 如何自动使底部居中<div>在视口上?</div><div id="text_translate"><p> 我正在创建一种仅基于纯文本、没有图像或其他任何内容的网站/实验,它仅包含一个&lt;div&gt;包含几个&lt;span&gt;和&lt;a&gt;元素,这些元素在使用 JS 点击时打开,显示堆叠的文本在&lt;div&gt;的底部。</p><p> 当屏幕上覆盖的文本过多时,问题就出现了,并且用户不断点击——因此,显示更多文本——这些新行一直堆叠在底部,不会自动可见:用户必须开始滚动到继续阅读。</p><p> 有没有办法可以自动将&lt;div&gt;的底部放在屏幕<em>的</em>中心,所以它不需要滚动? 当文本填满整个屏幕时,您是否有更好的解决方法来避免手动滚动?</p><p> 谢谢!</p><p> 编辑:我添加了一段代码,以便更好地理解我所做的。 </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-html lang-html prettyprint-override"> &lt;div id="container"&gt; &lt;p class="fade-in"&gt; &lt;a data-opens="1" href="#"&gt;Hello&lt;/a&gt;.&lt;span data-openedby="1" class="fade-in"&gt; How are &lt;a data-opens="2" href="#"&gt;you&lt;/a&gt;? &lt;/span&gt;&lt;span class="fade-in" data-openedby="2"&gt;&lt;a data-opens="3" href="#"&gt;Welcome&lt;/a&gt; to my website.&lt;/span&gt; &lt;/p&gt; &lt;/div&gt;</pre></div></div><p></p><p> 基本上,这段代码,但不是只有三个&lt;a&gt; ,到目前为止,它有 300 个带有各自的&lt;span&gt; 。</p></div> 如何获得内部SVG元素相对于外部SVG元素视口的位置? 我如何水平居中一个元素和 position 其他元素相对于它? 如何使用Javascript和JQuery缩放此HTML 如何使用in-view.js检测元素何时滚动到视口中
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM