perfect-scrollbar.scss 2.3 KB
// Helper mixins
@mixin opacity($o) {
  $IEValue: $o * 100;
  opacity: $o;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity="+$IEValue+")";
      filter: alpha(opacity=$IEValue);
}

@mixin border-radius($r) {
  -webkit-border-radius: $r;
     -moz-border-radius: $r;
      -ms-border-radius: $r;
          border-radius: $r;
}

@mixin transition($t...) {
  -webkit-transition: $t;
     -moz-transition: $t;
       -o-transition: $t;
          transition: $t;
}

// Scrollbar mixins
@mixin scrollbar-rail-default {
  display: none;
  position: absolute; /* please don't change 'position' */
  @include border-radius(4px);
  @include opacity(0);
  @include transition(background-color .2s linear, opacity .2s linear);
}

@mixin scrollbar-rail-hover {
  background-color: #eee;
  @include opacity(0.9);
}

@mixin scrollbar-default {
  position: absolute; /* please don't change 'position' */
  background-color: #aaa;
  @include border-radius(4px);
  @include transition(background-color .2s linear);
}

@mixin scrollbar-hover {
  background-color: #999;
}

@mixin in-scrolling {
  &.in-scrolling {
    @include scrollbar-rail-hover;
  }
}

.ps-container {
  &.ps-active-x > .ps-scrollbar-x-rail,
  &.ps-active-y > .ps-scrollbar-y-rail {
    display: block;
  }

  >.ps-scrollbar-x-rail {
    @include scrollbar-rail-default;
    bottom: 3px; /* there must be 'bottom' for ps-scrollbar-x-rail */
    height: 8px;

    >.ps-scrollbar-x {
      @include scrollbar-default;
      bottom: 0; /* there must be 'bottom' for ps-scrollbar-x */
      height: 8px;
    }

    @include in-scrolling;
  }

  >.ps-scrollbar-y-rail {
    @include scrollbar-rail-default;
    right: 3px; /* there must be 'right' for ps-scrollbar-y-rail */
    width: 8px;

    >.ps-scrollbar-y {
      @include scrollbar-default;
      right: 0; /* there must be 'right' for ps-scrollbar-y */
      width: 8px;
    }

    @include in-scrolling;
  }

  &:hover {
    >.ps-scrollbar-x-rail,
    >.ps-scrollbar-y-rail {
      @include opacity(0.6);
      @include in-scrolling;
    }

    >.ps-scrollbar-x-rail:hover {
      @include scrollbar-rail-hover;

      >.ps-scrollbar-x {
        @include scrollbar-hover;
      }
    }

    >.ps-scrollbar-y-rail:hover {
      @include scrollbar-rail-hover;

      >.ps-scrollbar-y {
        @include scrollbar-hover;
      }
    }
  }
}