Sye*_*yed 27 css html5 css3 css-shapes
是否有可能创建"CSS3 Transform Skew One Side"
我找到了一个解决方案,但它对我没用,因为我需要使用图像作为背景(而不是颜色)
#skewOneSide {
border-bottom: 40px solid #FF0000;
border-left: 50px solid rgba(0, 0, 0, 0);
height: 0;
line-height: 40px;
width: 100px;
}
Run Code Online (Sandbox Code Playgroud)
Die*_*ego 25
试试这个:
若要取消图像,请使用嵌套div作为图像,并为其赋予相反的偏斜值.因此,如果您在父级上有20deg,那么您可以为嵌套(图像)div赋予-20deg的偏斜值.
.container {
overflow: hidden;
}
#parallelogram {
width: 150px;
height: 100px;
margin: 0 0 0 -20px;
-webkit-transform: skew(20deg);
-moz-transform: skew(20deg);
-o-transform: skew(20deg);
background: red;
overflow: hidden;
position: relative;
}
.image {
background: url(http://placekitten.com/301/301);
position: absolute;
top: -30px;
left: -30px;
right: -30px;
bottom: -30px;
-webkit-transform: skew(-20deg);
-moz-transform: skew(-20deg);
-o-transform: skew(-20deg);
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div id="parallelogram">
<div class="image"></div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
这个例子:
http://jsfiddle.net/diegoh/mXLgF/1154/
Jak*_*ake 13
我知道这是旧的,但我想建议使用线性渐变来实现相同的效果而不是边距偏移.这将保留其原始位置的任何内容.
HTML
<ul>
<li><a href="#">One</a></li>
<li><a href="#">Two</a></li>
<li><a href="#">Three</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
CSS
/* reset */
ul, li, a {
margin: 0; padding: 0;
}
/* nav stuff */
ul, li, a {
display: inline-block;
text-align: center;
}
/* appearance styling */
ul {
/* hacks to make one side slant only */
overflow: hidden;
background: linear-gradient(to right, red, white, white, red);
}
li {
background-color: red;
transform:skewX(-20deg);
-ms-transform:skewX(-20deg);
-webkit-transform:skewX(-20deg);
}
li a {
padding: 3px 6px 3px 6px;
color: #ffffff;
text-decoration: none;
width: 80px;
transform:skewX(20deg);
-ms-transform:skewX(20deg);
-webkit-transform:skewX(20deg);
}
Run Code Online (Sandbox Code Playgroud)
Ozg*_*urG 13
也许您想使用 CSS“剪辑路径”(适用于透明度和背景)
“剪辑路径”参考:https : //developer.mozilla.org/en-US/docs/Web/CSS/clip-path
生成器:https : //bennettfeely.com/clippy/
例子:
/* With percent */
.element-percent {
background: red;
width: 150px;
height: 48px;
display: inline-block;
clip-path: polygon(0 0, 100% 0%, 75% 100%, 0% 100%);
}
/* With pixel */
.element-pixel {
background: blue;
width: 150px;
height: 48px;
display: inline-block;
clip-path: polygon(0 0, 100% 0%, calc(100% - 32px) 100%, 0% 100%);
}
/* With background */
.element-background {
background: url(https://images.pexels.com/photos/170811/pexels-photo-170811.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260) no-repeat center/cover;
width: 150px;
height: 48px;
display: inline-block;
clip-path: polygon(0 0, 100% 0%, calc(100% - 32px) 100%, 0% 100%);
}Run Code Online (Sandbox Code Playgroud)
<div class="element-percent"></div>
<br />
<div class="element-pixel"></div>
<br />
<div class="element-background"></div>Run Code Online (Sandbox Code Playgroud)
你可以使用转换和转换起源来实现.
结合各种transfroms可得到类似的结果.我希望你觉得这对你有帮助.:)有关更简单的转换,请参阅这些示例.这留下了一点:
div {
width: 300px;
height:200px;
background-image: url('http://placecage.com/g/300/200');
-webkit-transform: perspective(300px) rotateX(-30deg);
-o-transform: perspective(300px) rotateX(-30deg);
-moz-transform: perspective(300px) rotateX(-30deg);
-webkit-transform-origin: 100% 50%;
-moz-transform-origin: 100% 50%;
-o-transform-origin: 100% 50%;
transform-origin: 100% 50%;
margin: 10px 90px;
}Run Code Online (Sandbox Code Playgroud)
<div></div>Run Code Online (Sandbox Code Playgroud)
这有正确的偏斜点:
div {
width: 300px;
height:200px;
background-image: url('http://placecage.com/g/300/200');
-webkit-transform: perspective(300px) rotateX(-30deg);
-o-transform: perspective(300px) rotateX(-30deg);
-moz-transform: perspective(300px) rotateX(-30deg);
-webkit-transform-origin: 0% 50%;
-moz-transform-origin: 0% 50%;
-o-transform-origin: 0% 50%;
transform-origin: 0% 50%;
margin: 10px 90px;
}Run Code Online (Sandbox Code Playgroud)
<div></div>Run Code Online (Sandbox Code Playgroud)
是什么transform: 0% 50%;做的是它设置原点到垂直中部和元素的水平左右.因此,在图像的左侧部分看不到透视,因此它看起来很平坦.透视效果在右侧,因此看起来倾斜.
你尝试的:before非常接近,你唯一需要改变的是实际使用偏斜而不是边框:http://jsfiddle.net/Hfkk7/1101/
编辑:您的边框方法也会起作用,您唯一错误的做法是将div元素放在div的顶部,因此透明边框没有显示.如果你将伪元素放在div的左边,一切都会有效:http://jsfiddle.net/Hfkk7/1102/