在悬停时添加第二个变换

时间:2017-09-28 11:24:52

标签: css3 sass hover

我有一个图标字体(内置在icomoon中),我使用FontAwesome的辅助类在y轴上显示.fa-flip-vertical

.icon-reject-outline {
    @extend .icon-approve;
    @extend .fa-flip-vertical;
}

我希望在悬停时增长40%,但是SASS扩展课程的方式,只需选择.fa-flip-vertical并不起作用,我需要记住扩展我的.hover-将类包含在内以包含每个被翻转的图标,否则40%的增长变换会覆盖翻转变换而不是添加它:

.x-action-column-hover-grow .x-action-col-icon {
    transition: scale .2s ease-in-out;
    margin-left: 5px;
    margin-right: 5px;
    &:hover {
        transform: scale(1.4);
    }
    &.fa-flip-vertical:hover,&.icon-reject-outline:hover{ // I'd ideally not need the second selector here
        transform: scale(1.4) scaleY(-1)
    }
}

这感觉有点令人讨厌,所以我想知道是否有办法标记类扩展.fa-flip-vertical以便& hover知道保持它翻转或以某种方式使& hover变换成为加法而不是替换非悬停变换。

我认为它与答案无关,但这是使用ExtJS 6.2

为了完整性,.fa-flip-vertical定义如下:

-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
    -webkit-transform: scale(1, -1);
    -ms-transform: scale(1, -1);
    transform: scale(1, -1);

1 个答案:

答案 0 :(得分:0)

你不能在CSS中这样做:重写被覆盖的属性,以前的值会丢失。

在Sass中,一种方法是使用mixin:

@mixin transform-and-flip($val) {
  transform: $val scaleY(-1);
}

$make-the-logo-bigger: scale(1.4);

.x-action-column-hover-grow .x-action-col-icon {
  transition: scale .2s ease-in-out;
  margin-left: 5px;
  margin-right: 5px;

  &:hover {
    transform: $make-the-logo-bigger;
  }

  &.fa-flip-vertical:hover,
  &.icon-reject-outline:hover {
    @include transform-and-flip($make-the-logo-bigger);
  }
}

对于块,我使用 @content directive 。如果我经常使用复杂的多背景或箱阴影或线性渐变