jquery - 使用变换后div内联 block 显示和正确位置: scale

标签 jquery css scale css-transforms display

首先,我想对我的英语表示抱歉 - 我正在尽力做到最好;)

这是我成功创建的内容:

JSFiddle

我想做的是使用js缩放包含很少不同元素的div,但同时我确实想保留内联 block 显示,所以在缩放更多(或更少,取决于比例值)元素可以放在一行中。

只有一个元素的 HTML 看起来像这样:

<div class="containerofelements">
 <div class="resizeratio">1</div>
 <div class="resizeratio">0.75</div>
 <div class="resizeratio">0.5</div>
 <hr />
 <div class="elements" style="background-image: url(https://image.ibb.co/ha1wAo/back.png)">
   <div class="middle">middle</div>
   <div class="leftup">leftup</div>
   <div class="rightup"><img src="https://image.ibb.co/dK2BRT/profile_default_m.jpg" /></div>
   <div class="leftdown">leftdown</div>
   <div class="rightdown">rightdown</div>
 </div>
</div>

元素的数量是可变的,并且“.elements”div 内很可能会有更多不同的内容。 .resizeratio div 是使用 jquery 按写入值缩放 .elements 的按钮。

我能够使用代码成功缩放元素并通过 js 保持所有子元素的位置:

css({
 transform: "scale("+scale+")"
});

不幸的是,缩放后 div 确实保持原始位置。正如我注意到的,div 本身是缩放的,但它以某种方式不会改变位置,就像缩小元素后的空白空间被额外的边距填充一样。如何防止这种情况发生?

最佳答案

这里有一个快速修复方法

JSFiddle

只需在 .elements 周围添加一个 div(例如 .wrap),并根据比例更改其宽度和高度,如下所示。

el.parent('.wrap').css({
  width: (350 * scale) + "px",
  height: (500 * scale) + "px"
});
.wrap {
  width: 350px;
  height: 500px;
  display: inline-block;
  position: relative;
}

.elements {
  width: 340px;
  height: 490px;
  background-repeat: no-repeat;
  margin: 5px;
  -moz-transform-origin: 0 0;
  transform-origin: 0 0;
}

关于jquery - 使用变换后div内联 block 显示和正确位置: scale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50524587/

相关文章:

android - 自动缩放 TextView 文本以适应 4.0 中的边界

javascript - JS中按日期排列聊天消息

JavaScript jQuery : Table rows are not drag/dropping

css - 使用 bootstrap 设置错误消息的样式

javascript - 反射(reflect)后退/前进类(class)的变化

android - 移动Webkit浏览器(chrome)地址栏变化 $(window).height();使背景大小为 :cover rescale every time

html - 如何定位加载了 CSS 的背景图像?

javascript - 点赞按钮: Pass Certain Variable from PHP to Jquery when Clicked

javascript - 添加tooltip,其值与span值相同

css - 两层 Bootstrap 3 导航