使用CSS缩放/矩阵不保持背景与元素对齐
Using CSS Scale/Matrix doesn't keep background aligned with elements
我有一个div的虚线背景。有一些子元素。如果我应用以下CSS:
transform:scale(x);
则元素不再与背景对齐,即使该比例设置为1(我也尝试过这个变换:矩阵(…))。
我做了一个小提琴来演示我的意思:https://jsfiddle.net/gawdhfpc/
.container {
width: 500px;
height: 500px;
background: blue;
}
.toTransform {
width: 100%;
height: 100%;
background-image: radial-gradient(black 3px, white 3px);
background-size: 100px 100px;
/* comment to see what it should look like */
transform: scale(1);
}
.child {
height: 100px;
width: 100px;
background: red;
position: absolute;
top: 258px;
left: 258px;
}
<div class="container">
<div class="toTransform">
<div class="child">
</div>
</div>
</div>
如果您删除css变换,您将看到子元素与背景上的点对齐。一旦转换应用,子对象被移动并且不再与点对齐。为什么会发生这种情况?有什么办法能解决这个问题吗?我需要让用户放大/缩小,我一直在做这个与D3和缩放/翻译。
我有一个解决方案,但我实际上不知道是什么导致了潜在的问题。
你的红色方块子节点有position:absolute
,但是它没有position:relative
的父节点,所以它的位置绝对相对于文档本身。当你应用一个变换时,不管出于什么原因,它的位置绝对相对于。totransform,在你的例子中,由于自然的边距和填充,它与文档的偏移量为~10像素。本质上,通过添加变换,它看起来就像您已经隐式地将position:relative
应用于.toTransform
一样。
如果你一开始就这么做了,添加/移除变换不会产生干扰,比如
.toTransform {
position:relative;
}
.child {
/* drop each value by ~10px */
top: 248px;
left: 248px;
}
现在无论你是否进行变换,正方形的位置都不会受到影响
可能相关:为什么position: relative"干涉"transform: scale"?
相关文章:
- 如何使用css动画/javascript使具有背景图像的元素出现
- 使用li元素的html内容更改该元素的背景
- Javascript获取元素背景图像,但消除了“;url()”;
- 如何获取元素:使用javascript和CORS悬停背景
- "隐藏/显示”;元素和更改按钮背景图像
- 绘制DOM元素:鼠标事件会被背景元素混淆
- 如何在每次页面重新加载时更改渐变背景,同时保持光标位置元素处于活动状态
- Angular Bootstrap$modal与活动背景元素
- 根据其他调整大小的html元素定位背景图像
- jQuery统计背景图像的纵横比并更改元素的填充值
- 多个元素上的连续背景图像图案
- 将第二个背景图像添加到元素中
- 使用 javascript 暂停背景滚动以允许固定元素进行幻灯片放映
- 使用带有 img 元素的 css 背景图像
- 将功能元素 IMG 更改为 DIV 背景
- 更改元素父元素的背景颜色时停止在
上闪烁鼠标悬停?jQuery/JS. - 使用simplemodal(modal)——在IE中不起作用——modal显示,但背景元素是可点击的;不过在firefo
- 聚合物 v1.2.4 - 在背景元素的情况下,能够按 Tab/Shift-Tab 键切换到背景按钮
- 如何设置引导模式对话框与背景元素活动
- 如何从角度改变第二/第三等标签的背景.元素(jqLite)