html - 如何将 CSS 转换应用于特定 Angular div 元素?

标签 html css web

我有两个相同大小的 div 元素。它们相互重叠,每个都有一个等边三 Angular 形的背景图像,指向两个方向之一:

Triangles image

我想应用一个变换,使右三 Angular 形翻转并正好落在左三 Angular 形的顶部。 旋转轴应为两个三 Angular 形几乎共享的边之间的间隙的中心(图中以蓝色标记)。这样,右三 Angular 形的右下角应该落在左三 Angular 形的左上角。

现在我只能沿一个轴旋转直 Angular 三 Angular 形(使用 transform: rotateY(180deg)),但不知道如何获得正确的 Angular 。

JSFiddle:https://jsfiddle.net/0841c7bm/27/

我用于转换的代码:

transform-style: preserve-3d;
transition: all 1s linear;
transform: rotateY(180deg);

感谢任何帮助。

编辑:

在 Denis McDonald 的下面评论的帮助下让它工作。

更新后的 JSFiddle:https://jsfiddle.net/0841c7bm/29/

更新后的相关代码部分:

#triangle2 {
  background-image: url(https://i.imgur.com/C6sWFbQ.png);
  left: 79px;
  transform-origin: 75px 0px 0px;
}
.flip {
  transform-style: preserve-3d;
  transition: all 0.25s linear;
  transform: rotate3d(1, -1.732, 0, 180deg);
  margin-left: -4px;
}

解释:

rorate3d CSS 属性接受的前 3 个值不是度值,而是定义 3d 空间中的点的笛卡尔坐标。据我了解,连接原点和给定点的线被定义为元素的旋转轴。

我需要三 Angular 形绕平行于第二个三 Angular 形左侧的轴旋转。这样的线会在其自身与 x 轴之间形成 60 度 Angular 。我可以传递给定义这条线的 rotate3d 属性的一个可能点是 (1, sqrt(3), 0)。

我使用了 transform-origin 和 -4px 的左边距(因为第二个三 Angular 形开始时被向右推了 4px)。

最佳答案

根据 this answer 的一些指导,这也许是一种方法:

var onClick = function() {
  var d = document.getElementById("triangle2");
  d.className += " flip";
};

$('#button').click(onClick);
#container {
  position: relative;
  margin-left: 100px;
}

.triangle {
  display: flex;
  width: 150px;
  height: 130px;
  background-size: contain;
  position: absolute;
}

#triangle1 {
  background-image: url(https://i.imgur.com/a3SWuSZ.png);
}

#triangle2 {
  background-image: url(https://i.imgur.com/giDx0VD.png);
  left: 79px;
}

.flip {
  transform-style: preserve-3d;
  transition: all 1s linear;
  transform: rotateY(180deg) rotateX(180deg);
  transform: rotate3d(90, -157, 0, 190deg);
  margin-left: -59px;
  margin-top: -32px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  <div id="triangle1" class="triangle">
  </div>
  <div id="triangle2" class="triangle">
  </div>
</div>
<input type="button" id="button" value="Click Me" />

关于html - 如何将 CSS 转换应用于特定 Angular div 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52582266/

相关文章:

Javascript 或 jQuery 文本颜色幻灯片效果?

html - 网站(背景)图像的光栅效果

javascript - 使用 Safari 在本地下载 blob

javascript - 导航栏/菜单在较小的屏幕上消失 - CSS 问题

html - 具有可变文本的垂直滚动网站。如何?

javascript - 使用 JavaScript/jQuery 在当前图像之上显示下一个图像

javascript - Facebook 如何根据用户屏幕自动显示正确尺寸的图像?

javascript - 我有一个用户可以自动下载 pdf 文件的网站,它不应该在新标签页中打开

iphone - 在 iOS 5 中制作没有功能的网络浏览器

html - 如何为复选框标签添加一致的左边距?