【发布时间】:2015-06-24 13:21:19
【问题描述】:
我正在开发一个使用 CSS 创建六边形的网站。这种技术使用变换来旋转一个盒子,使用overflow:hidden 剪裁边缘,然后在相反方向内旋转图像以使其看起来笔直并显示六边形,here's the codepen 我对其进行了修改以使其正常工作。如您所见,过渡效果很好。
我现在遇到的问题是我想在悬停时对我的设计应用灰度滤镜,但我发现我的所有过渡现在都很模糊。在 Firefox 开发版中,我看到图像和文本开始清晰,悬停时变得模糊,然后又恢复清晰。在 Chrome 中查看时,一切都是模糊的,无论是否悬停。
.hexContainer {width:400px;}
#categories {overflow:hidden;width:100%;margin:0 auto; padding:0 0 1em; position: relative;}
#categories .hexBox {position:relative;list-style-type:none;width:100%;padding-bottom:115%;float:left;overflow:hidden;visibility:hidden;-webkit-transform:rotate(-60deg) skewY(30deg);-ms-transform:rotate(-60deg) skewY(30deg);transform:rotate(-60deg) skewY(30deg); z-index: 10;}
#categories .hexBox *{position:absolute;visibility:visible;}
#categories .hexBox>div{width:100%;height:100%;text-align:center;color:#fff;overflow:hidden;-webkit-transform:skewY(-30deg) rotate(60deg);-ms-transform:skewY(-30deg) rotate(60deg);transform:skewY(-30deg) rotate(60deg);-webkit-backface-visibility:hidden;}
#categories .hexBox img{left:-100%;right:-100%;width:auto;height:100%;margin:0 auto; -webkit-filter: grayscale(100%); filter: grayscale(100%); transition: all 0.25s ease-in-out; -webkit-transition: all 0.25s ease-in-out;-moz-transition: all 0.25s ease-in-out; -webkit-transform: translateZ(0); }
#categories .hexBox h3 {position: absolute; bottom: 25%; left: 2%; font-weight: 300; color: #fff; transition: all 0.25s ease-in-out; -webkit-transition: all 0.25s ease-in-out;-moz-transition: all 0.25s ease-in-out;}
#categories .hexBox h3 strong {font-weight: 700; padding-left:.25em;}
#categories div p{width:90%;padding:0 5%;}
#categories .hexBox p{padding-top:50%;top:110%;padding-bottom:50%;}
/* hovers */
#categories .hexBox div:hover p{top:50%;padding-top:10%;}
#categories .hexBox div:hover img { -webkit-filter: grayscale(0%); filter: grayscale(0%); -webkit-transform: translateZ(0); }
#categories .hexBox div:hover h3 {bottom:40%;}
您可以在此处查看问题 http://codepen.io/anon/pen/MwgebO
关于如何解决此问题的任何想法?
【问题讨论】:
-
我也经常遇到这个问题。我假设这是一种浏览器级别的优化,用于在给定元素进行转换时以较低的细节呈现转换(因此它不必在每一帧都重新绘制元素的完整细节)。我使用的解决方法包括快速过渡和边界上不太柔和的缓动曲线(
x轴上的 0 和 1 附近)。 -
@JánosWeisz 你能详细说明一下吗?我不确定您所说的“边界不太柔软的缓和曲线”是什么意思。我尝试缩短过渡速度,1/4 秒已经相当快了,并没有看到任何改进。
标签: css css-transitions