平行四边形skew的问题
Closed this issue · 3 comments
KeithChou commented
今天在学习《CSS揭秘》的时候遇到这样一个问题。
如果我想给平行四边形增加hover伪类,那这个伪类怎么配合伪元素写出来?
但是,如果使用嵌套的关系,在外层块级元素写一个skewX,然后在内层块级元素再写一个反向skewX,在给外层块级元素使用:hover状态时,就完美实现了。
SCSS代码如下:
嵌套方案
.rascal{
margin:1.5em;
position:relative;
display:inline-block;
padding:1em;
color:white;
font-weight:bold;
background:#58a;
@include skew(-30deg,0);
div{
@include skew(30deg,0);
}
&:hover{
background:tan;
}
}
伪元素方案(效果错误)
.rascal{
margin:1.5em;
position:relative;
display:inline-block;
padding:1em;
color:white;
font-weight:bold;
&:hover{
background:red;
@include skew(-30deg,0);
}
&::after{
position:absolute;
content:'';
z-index: -1;
left:0;
right:0;
top:0;
bottom:0;
background:#58a;
@include skew(-30deg,0);
}
}
cssmagic commented
KeithChou commented
感谢张老师的回复,我在前不久把这个问题解决了。有个需要注意的就是,需要把伪元素再次重新放在hover伪类上。如果直接在after上套上一层hover的话,这样的效果就只有hover上去的时候才会出现平行四边形了。
SCSS代码如下:
&::after{
content:'';
position:absolute;
left:0;
background:#58a;
right:0;
bottom:0;
top:0;
z-index: -1;
@include skewX(-30deg);
}
&:hover{
&::after{
background:#64A2CB;
}
}
感谢张老师百忙之中的回复。受益匪浅。
cssmagic commented
@KeithChou
谢谢你的补充,我稍后会整理到注解中。