html - 从左上角旋转一个 div,transform-origin 不起作用

标签 html css css-transforms

我正在尝试模拟从介词 div 的右下角旋转的 n 个盒子。

所以,基本上,我希望 n 的左上角绝对位置与 n - 1 的右下角绝对位置相同。我真的希望我解释得足够好,我只是不希望有间隙,并且希望盒子从左上角旋转而不是向右或向下移动。

我尝试添加 transform-origin: 0 0; 但它仍然不起作用。

非常感谢您的帮助,在此先感谢您。

这是 CSS:

.con {
  margin: 50px;
  width: 100px;
  clear: both;
  position: relative;
}

.box:nth-child(5) {
  width: 150px;
  height: 150px;
  outline: 1px solid black;
  margin-left: -15px;
  margin-top: -15px;
  position: absolute;
  transform-origin: 0 0;
  transform: translate(140px, 140px) rotate(10deg);
}

.box:nth-child(4) {
  width: 120px;
  height: 120px;
  outline: 1px solid black;
  margin-left: 138px;
  margin-top: 138px;
  position: absolute;
  transform-origin: 0 0;
  transform: translate(110px, 110px) rotate(10deg);
}

.box:nth-child(3) {
  width: 90px;
  height: 90px;
  outline: 1px solid black;
  margin-left: 261px;
  margin-top: 261px;
  position: absolute;
  transform-origin: 0 0;
  transform: translate(80px, 80px) rotate(10deg);
}

.box:nth-child(2) {
  width: 60px;
  height: 60px;
  outline: 1px solid black;
  margin-left: 354px;
  margin-top: 354px;
  position: absolute;
  transform-origin: 0 0;
  transform: translate(50px, 50px) rotate(10deg);
}

.box:nth-child(1) {
  width: 30px;
  height: 30px;
  outline: 1px solid black;
  margin-left: 417px;
  margin-top: 417px;
  position: absolute;
  transform-origin: 0 0;
  transform: translate(20px, 20px) rotate(10deg);
}

和 HTML

<div class='con'>
  <div class='box'></div>
  <div class='box'></div>
  <div class='box'></div>
  <div class='box'></div>
  <div class='box'></div>
  <div class='box'></div>
  <div class='box'></div>
  <div class='box'></div>
  <div class='box'></div>
  <div class='box'></div>
</div>

这是现在的样子:

This is what it looks like now

这里是 codepen您可以在其中实时查看沙箱。

最佳答案

我想这就是您想要的。

查看代码链接。

http://codepen.io/anon/pen/bppRBx?editors=1111

.con {
      margin: 50px;
      width: 100px;
      clear: both;
      position: relative;
    }

.box:nth-child(5) {
  width: 150px;
  height: 150px;
  outline: 1px solid black;
  margin-left: 0px;
  margin-top: 0px;
  position: absolute;
  transform-origin: 0 0;
  transform: rotate(0deg);
}

.box:nth-child(4) {
  width: 120px;
  height: 120px;
  outline: 1px solid black;
  margin-left: 149.99962px;
  margin-top: 149.99962px;
  position: absolute;
  transform-origin: 0 0;
  transform: rotate(-10deg);
}

.box:nth-child(3) {
  width: 90px;
  height: 90px;
  outline: 1px solid black;
  margin-left: 289.01398px;
  margin-top: 247.33853px;
  position: absolute;
  transform-origin: 0 0;
  transform: rotate(-20deg);
}

.box:nth-child(2) {
  width: 60px;
  height: 60px;
  outline: 1px solid black;
  margin-left: 404.36784px;
  margin-top: 301.12891px;
  position: absolute;
  transform-origin: 0 0;
  transform: rotate(-30deg);
}

.box:nth-child(1) {
  width: 30px;
  height: 30px;
  outline: 1px solid black;
  margin-left: 486.32916px;
  margin-top: 323.09038px;
  position: absolute;
  transform-origin: 0 0;
  transform: rotate(-40deg);
}

要计算每个新矩形的起点,您需要使用一些三 Angular 函数来计算最后一个矩形的终点位置。由于这不包含在 SASS/CSS 中,因此您必须编写自己的函数。 Daniel Perez Alvarez 写了一篇关于如何在 SASS 中创建 COS/SIN 函数的简化版本的精彩博文: https://unindented.org/articles/trigonometry-in-sass/

关于html - 从左上角旋转一个 div,transform-origin 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35883372/

相关文章:

javascript - D3.js,CSS3 - 旋转矩形使其成一直线

html - 图片 Alt 标签/标题默认左对齐。我怎样才能改变到中心

angularjs - 如何在 iframe 之外操作历史记录

javascript - 使用 JavaScript 一次显示一个 <p>

html - css 转换规则中的问题

css - 按相同数量的像素缩放 X 和 Y 中的元素

php - 我的 ISSET 后期功能不起作用,无法确定原因

css - Bootstrap 4 按钮示例 : where does the space between buttons is coming from?

html - Div 不维护另一个 div 内的最小宽度,HTML

CSS 规则冲突 : CSS disabled as a result of conflicts with another one