我想旋转一个帧而不是它内部的图像。这是一个JSFiddle,它执行旋转但图像仍然移动。如何保持图像静止但仅移动框架。
https://jsfiddle.net/q6n2w4qm/2/
HTML:
<body>
<div class="center">
<div class="hexagon">
<div class="hexagon-in1">
<div class="hexagon-in2">
</div></div>
</div>
</div>
</body>
CSS:
.center{
width: 200px;
margin: auto;
margin-top: -50px;
}
.hexagon{
width: 200px;
height: 400px;
overflow: hidden;
visibility: hidden;
transform: rotate(120deg);
cursor: pointer;
-moz-transition: all 1s ease-in-out;
-webkit-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
.hexagon-in1{
overflow: hidden;
width: 100%;
height: 100%;
transform: rotate(-60deg);
}
.hexagon-in2{
width: 100%;
height: 100%;
visibility: visible;
transform: rotate(-60deg);
background: url('http://lorempixel.com/g/250/350/city');
repeat: no-repeat;
position: relative;
}
.hexagon:hover{
-ms-transform: rotate(150deg); /* IE 9 */
-webkit-transform: rotate(150deg); /* Chrome, Safari, Opera */
transform: rotate(150deg);
}
答案 0 :(得分:1)
我创建了一个简单的HTML / CSS解决方案,但只能使用以下三个标准:
工作示例
body {
background-color:#222222;
}
.hex-hack {
position:relative;
top:0;
left:0;
}
.base-image {
position:relative;
top:0;
left:0;
z-index:1;
margin: 84px;
}
.hex-overlay {
position:absolute;
width:568px;
height:568px;
top:0px;
left:0px;
z-index:3;
-moz-transition: all 1s ease-in-out;
-webkit-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
.hex-overlay:hover {
-ms-transform: rotate(30deg); /* IE 9 */
-webkit-transform: rotate(30deg); /* Chrome, Safari, Opera */
transform: rotate(30deg);
}
&#13;
<body>
<div class="hex-hack">
<img class="base-image" src="https://lorempixel.com/output/technics-q-g-400-400-2.jpg" alt="" />
<img class="hex-overlay" src="https://i.imgur.com/zYa31Tw.png" alt="" />
</div>
</body>
&#13;
请注意,顶部图像的边距是底部图像和顶部图像宽度之差的一半,以使其保持居中。
我如何在Photoshop中制作六边形面具
我在800 x 800画布上开始使用400 x 400图像,并在图像周围创建了一个完美的圆圈,以便图像的每个角点都触及圆圈。我将画布裁剪到圆的宽度(568像素)。这样做的目的是保证在六边形面罩旋转时图像被完全覆盖。
接下来,我必须创建一个没有填充的350 x 400六角形,将其旋转30度,并将其置于画布中间。然后我选择了六边形的像素(按住ctrl +单击六边形图层),反转选择(shift + ctrl + I),并用#222222背景颜色填充新图层。我隐藏了所有其他图层并将其保存为png。
另一个可能的解决方案是使用CSS通过clip-path和animate属性为图像的剪切路径设置动画。这可能是一种更简单的方法,但是,clip-path属性相对较新,并且没有最大的浏览器支持 - 尤其是IE,Edge和Opera。以下是一些资源:
CSS Masking - 关于clip-path属性的优秀文章(包括动画演示)
Clippy - 创建CSS剪辑路径的好工具
最后,这是一个非常适合浏览器的解决方案,但您需要一些软件(如Illustrator)才能从图像中创建SVG。这也是我没有实际经验的东西,但我很肯定可以通过一些研究和一些试验和错误来实现。以下是一些可以帮助您入门的资源。