gpt4 book ai didi

html - 使用 CSS3 变换 scale() 缩放/缩放 DOM 元素及其占用的空间

转载 作者:技术小花猫 更新时间:2023-10-29 11:39:03 44 4
gpt4 key购买 nike

在我的页面中间,我有一个 div 元素,其中包含一些内容(其他 div、图像等)。

<div>
before
</div>
<div id="content-to-scale">
<div>something inside</div>
<div>another something</div>
</div>
<div>
after
</div>

我想缩放该元素(按内容缩放)及其所有子元素。似乎是 CSS3 转换缩放操作的工作。然而,问题是这只是对该元素层次结构的可视化的转换,它不会改变页面上元素的空间量(或位置)。换句话说,将该元素缩放得更大会导致它与“之前”和“之后”文本重叠。

是否有一种简单/可靠的方法不仅可以缩放视觉表示,还可以缩放占用的空间量?

没有 Javascript 的纯 CSS 加分。对于使用其他转换功能(如旋转和倾斜)做正确的事情的解决方案,还有更多要点。这不一定要使用 CSS3 转换,但它确实需要在所有最新的支持 HTML5 的浏览器中得到支持。

最佳答案

HTML(感谢 Rory)

<!DOCTYPE html>
<html>
<head>
<meta name="description" content="Sandbox for Stack Overflow question http://stackoverflow.com/q/10627306/578288" />
<meta charset=utf-8 />
<title>Sandbox for SO question about scaling an element both visually and dimensionally</title>
</head>
<body>

<div id="wrapper">
<div class="surrounding-content">
before
</div>

<div id="content-to-scale">
<div>something inside</div>
<div><img src="http://placekitten.com/g/150/100"></div>
<div>another something</div>
</div>

<div class="surrounding-content">
after
</div>
</div>

</body>
</html>

CSS(仍然从 Rory 的基础开始)

body {
font-size: 13px;
background-color: #fff;
}
#wrapper {
width: 50%;
margin-left: auto;
margin-right: auto;
border: 0.07692307692307693em solid #888;
padding: 1.1538461538461537em;
}
.surrounding-content {
border: 0.07692307692307693em solid #eee;
}
#content-to-scale {
border: 0.07692307692307693em solid #bbb;
width: 10em;
}
#content-to-scale {
font-size: 1.1em;
}
#content-to-scale img {
width: auto;
height: auto;
min-width: 100%;
max-width: 100%;
}

解释:

我使用字体大小和 em 来“缩放”子元素的尺寸。

Em 是相对于当前上下文的字体大小的尺寸单位。

因此,如果我说我的字体大小为 13px,边框为 1(所需的边框宽度,以像素为单位)divded乘以 13(当前上下文的字体大小也以像素为单位)= 0.07692307692307693em 浏览器应该呈现 1px 的边框

为了模拟 15 像素的填充,我使用相同的公式,(所需像素)/(当前上下文的字体大小,以像素为单位)= 所需的 ems。15/13 = 1.1538461538461537em

为了驯服图像的缩放比例,我使用了我的旧最爱:自然比例保持比例尺,让我解释一下:

图像具有自然的高度和宽度以及它们之间的比例。如果宽度和高度都设置为自动,大多数浏览器将保留此比例。然后,您可以使用 min-width 和 max-width 控制所需的宽度,在这种情况下,使其始终缩放到父元素的整个宽度,即使它会缩放超出其自然宽度。

(您还可以使用 max-width 和 max-height 100% 来防止图像超出父元素的边界,但绝不会超出其自然尺寸)

您现在可以通过调整#content-to-scale 上的字体大小来控制缩放。 1.1em 大致等于 scale(1.1)

这确实有一些缺点:递归应用 em 中的嵌套字体大小调整。意思是如果你有:

<style type="text/css">
div{
font-size: 16px;
}
span{
font-size: 0.5em;
}
</style>
<div>
<span>
<span>
Text
</span>
</span>
</div>

您最终会以 4 像素而不是您可能期望的 8 像素渲染“文本”。

关于html - 使用 CSS3 变换 scale() 缩放/缩放 DOM 元素及其占用的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10627306/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com