我正在尝试像绿框一样转换div。
我想获得3D变换,而不是蒙版:
我找到了使用this generator的方法,但是css代码对我的提琴不起作用:
/*transform css3*/
#screen {
transform: scale(1.0) scaleZ(1.0) rotateX(-16deg);
transform-origin: 0% 0%;
perspective: 450;
perspective-origin: 100% 50%;
}
body {
height:100%;
padding:0;
margin:0;
}
#mask {
background:url(https://i.stack.imgur.com/cBK0O.png) no-repeat;
background-size:350px;
height:200px;
position:relative;
}
#screen:hover {
background:url(https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg);
background-size:100%;
}
#screen {
position:absolute;
bottom:38px;
background:red;
opacity:0.6;
}
#screen {
left:70px;
width:240px;
height:calc(240px * 9 / 16); /*keep 16/9 !*/
}
/*transform css3*/
#screen {
transform: scale(1.0) scaleZ(1.0) rotateX(-16deg);
transform-origin: 0% 0%;
perspective: 450;
perspective-origin: 100% 50%;
}
<div id="mask">
<div id="screen"></div>
</div>
答案 0 :(得分:3)
如果需要该形状,可以使用 clip-path
而不是transform
。这使您可以对所获得的形状进行大量控制。这是一个可以帮助您的好工具:https://bennettfeely.com/clippy/
使用transform
,可以使图像倾斜以对背景/ div内容实现3d效果。
#screen:hover {
background: url(https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg);
background-size: 100%;
}
#screen {
position: absolute;
background: red;
opacity: 0.6;
left: 70px;
width: 240px;
height: calc(240px * 9 / 16);
/*keep 16/9 !*/
transform-origin: bottom right;
-ms-transform: skew(20deg, 0deg);
-webkit-transform: skew(20deg, 0deg);
transform: skew(20deg, 0deg);
}
<div id="screen"></div>
答案 1 :(得分:2)
您可以尝试使用transform: skew
,这是W3Schools的link,解释了skew
转换,对于div,您可以添加此行
#screen {
transform: scale(1) skew(23deg);
}
答案 2 :(得分:2)
您需要旋转并需要一个透视图,才能将右下角作为原点。请注意,透视图需要应用于父元素:
.box {
display:inline-block;
perspective-origin:bottom right;
perspective:100px;
}
img {
margin:30px 50px;
transform:rotateX(-8deg);
width:250px;
}
<div class="box">
<img src="https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg" >
</div>
或者在变换内部使用透视图,并调整变换的原点而不是透视图的原点:
img {
margin: 30px 50px;
transform: perspective(100px) rotateX(-8deg);
width: 250px;
transform-origin: bottom right
}
<div class="box">
<img src="https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg">
</div>
答案 3 :(得分:0)
就像我说的in my comment。我没有在好目录中设置Perspective属性!经过一些改变,我得到了很好的渲染效果:
body {
border: 1px solid black;
display:inline-block;
padding: 0;
margin: 0;
}
#mask {
background: url(https://i.stack.imgur.com/cBK0O.png) no-repeat;
background-size: 350px;
height: 200px;
width: 400px;
position: relative;
perspective: 16px;
/*perspective-origin:45% 1%;*/
perspective-origin: 355px 2px;
}
#perpectiveorigin {
height: 6px;
width: 6px;
position: absolute;
background: red;
left:352px;
top:-1px;
}
#screen:hover {
background: url(https://www.actugaming.net/wp-content/uploads/2018/06/Assassins-Creed-Odyssey_Leak_06-10-18_015-1.jpg);
background-size: 100%;
}
#screen {
position: absolute;
bottom: 26px;
background: red;
opacity: 0.6;
}
#screen {
left: 47px;
width: 252px;
height: calc(252px * 9 / 16);
/*keep 16/9 !*/
}
/*transform css3*/
#screen {
transform: rotateX(-1.05deg);
}
<div id="mask">
<div id="screen"></div>
</div>
<div id="perpectiveorigin"></div>