html - 如何从三 Angular 形过渡到圆形

标签 html css css-transitions polygon

我在 CSS 中用剪辑路径遮盖了一些图像以显示等边三 Angular 形。我希望它们在悬停时展开并变成圆圈。

这是我的 CSS:

.tri-Up {
    -webkit-clip-path: polygon(50% 0, 0 100%, 100% 100%);
    clip-path: polygon(50% 0, 0 100%, 100% 100%);
    transition: 2s;
}
a:hover .tri-Up,
a:focus .tri-Up {
  -webkit-clip-path:circle(50%,50%,75%);
  clip-path: circle(50%,50%,75%);
}

还有我的 HTML:

<div class="col-sm-4 portfolio-item dontwantpadding">
                    <a href="#portfolioModal1" class="portfolio-link" data-toggle="modal">
                        <img src="img/photo.png" class="tri-Up img-responsive" alt="">
                    </a>
                </div>

还有一个 jsfiddle,其中转换不起作用: http://jsfiddle.net/kjaog69j/

我在网上找到了一些东西,但从三 Angular 形到圆形都没有,更不用说展开了。我广泛地在谷歌上搜索并浏览了“动画 CSS 形状、W3School 的 CSS 转换、CSStricks 等。任何建议或帮助将不胜感激。

谢谢!

最佳答案

一种试图将其推向极限的方法。这当然是实验性代码,因为据我所知,Chrome 仅支持它,而且以某种方式存在错误。

如果您不方便浏览器,则剪辑路径无法设置动画。也就是说,路径必须以某种方式等效。在您的情况下实现此目的的一种方法是将圆圈转换为非常宽的椭圆形。并将圆定义为椭圆,其中两个半径相等。

但这只能给我们三 Angular 形的一侧,所以我们需要 3 个嵌套元素,每个元素旋转 120 度,以获得三 Angular 形

div {
  position: absolute;
  transition: all 1s;
}

.container {
  width: 540px;
  height: 540px;
  left: 50px;
  top: 50px;
  overflow: hidden;

}
.test1 {
  width: 1600px;
  height: 1600px;
  -webkit-transform: rotate(120deg);
  top: -544px;
  left: -544px;
  -webkit-clip-path: ellipse( 1000px 196px at 800px 735px);
  z-index: 10;
}

.container:hover .test1 {
   -webkit-clip-path: ellipse( 256px 256px at 800px 800px); 
}


.test2 {
  width: 1100px;
  height: 1100px;
  top: 250px;
  left: 250px;
  -webkit-transform: rotate(120deg);
  -webkit-clip-path: ellipse( 1000px 196px at 550px 485px);
}

.container:hover .test2, .test2:hover {
   -webkit-clip-path: ellipse( 256px 256px at 550px 550px); 
}

.test3 {
  /* display: none; */
  width: 750px;
  height: 750px;
  top: 175px;
  left: 175px;
  -webkit-clip-path: ellipse( 1000px 196px at 375px 310px);
  -webkit-transform: rotate(120deg);
  background: url(http://placekitten.com/628/800);
}

.container:hover .test3, .test3:hover {
   -webkit-clip-path: ellipse( 256px 256px at 375px 375px); 
}
<div class="container">
<div class="test1">
<div class="test2">
<div class="test3">
</div>
</div>
</div>
</div>

关于html - 如何从三 Angular 形过渡到圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28207924/

相关文章:

java - 当 JLabel 包含 HTML 时,BoxLayout 不遵守胶水

javascript - 在 Swift WKWebView 中的完成处理程序中将 html 数据保存在变量中

HTML 和 CSS 流体循环

jQuery 在点击时删除所有类

html - Safari 使导航栏在悬停元素时跳转,这在其他浏览器上工作正常

html - Microsoft Outlook 中的中心 div

javascript - html5 JavaScript,全局变量

html - html5 标签 "Contenteditable"的 css 选择器

html - 在现有代码中使用 CSS/HTML 添加移动/淡入淡出过渡或效果

javascript - anchor 标记单击在 CSS slider 中不起作用