gpt4 book ai didi

css - 旋转框架但不旋转图像

转载 作者:行者123 更新时间:2023-11-28 15:43:12 24 4
gpt4 key购买 nike

我想旋转一个框架而不是其中的图像。这是一个执行旋转但图像仍在移动的 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);
}

最佳答案

1) PNG伪蒙版叠加

我创建了一个简单的 HTML/CSS 解决方案,但只有满足以下三个条件才有可能:

  1. 图片后面的背景颜色是纯色
  2. 图片四边都有足够的边距
  3. 你有 Photoshop 或一些类似的图像编辑软件

工作示例

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);
}
<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>

请注意,顶部图像的边距是底部图像和顶部图像宽度之差的一半,以使其居中。

我是如何在 Photoshop 中制作六边形蒙版的

我从 800 x 800 Canvas 上的 400 x 400 图像开始,围绕图像创建了一个完美的圆,使图像的每个 Angular 像素都与圆接触。我将 Canvas 裁剪到圆圈的宽度 (568px)。这样做的目的是保证图像在六边形蒙版旋转时被完全覆盖。

接下来,我必须创建一个 350 x 400 的无填充六边形,将其旋转 30 度,然后将其置于 Canvas 中央。然后我选择六边形的像素(ctrl + 单击六边形层),反转选择(shift + ctrl + I),并用#222222 背景颜色填充一个新层。我隐藏了所有其他层并将其保存为 png。

2) CSS 剪辑路径和动画

您可以考虑的另一种可能的解决方案是使用 CSS 通过 clip-path 和 animate 属性为图像的剪切路径设置动画。这可能是一种更简单的方法,但是,clip-path 属性相对较新并且没有最好的浏览器支持——尤其是 IE、Edge 和 Opera。以下是一些可供查看的资源:

CSS Masking - 关于 clip-path 属性的优秀文章(包括动画演示)

Clippy - 创建 CSS 剪辑路径的好工具

3) SVG动画和clipPath

最后,这是一个对浏览器非常友好的解决方案,但您需要一些软件(如 Illustrator)才能从图像创建 SVG。这也是我没有实际经验的事情,但我很肯定它可以通过一些研究和一些试验和错误来实现。这里有一些帮助您入门的资源。

SVG clipping/masking techniques

Animating SVGs with CSS

关于css - 旋转框架但不旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43175766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com