Summary Files Commits Branches @commit @diff @stats
path: root / src / _parallax.scss
diff options
context:
space:
mode:
1 files changed, 129 insertions, 0 deletions
-rw-r--r--src/_parallax.scss129
diff --git a/src/_parallax.scss b/src/_parallax.scss
new file mode 100644
index 0000000..fcde262
--- /dev/null
+++ b/src/_parallax.scss
@@ -0,0 +1,129 @@
+// Parallax
+$parallax-deg: 3deg;
+$parallax-offset: 4.5px;
+$parallax-offset-z: 50px;
+$parallax-perspective: 1000px;
+$parallax-scale: .95;
+
+// Mixin: Parallax direction
+@mixin parallax-dir() {
+ height: 50%;
+ position: absolute;
+ width: 50%;
+ z-index: $zindex-1;
+}
+
+.parallax {
+ display: block;
+ height: auto;
+ position: relative;
+ width: auto;
+
+ .parallax-content {
+ @include shadow-variant(1rem);
+ height: auto;
+ transform: perspective($parallax-perspective);
+ transform-style: preserve-3d;
+ transition: all .4s ease;
+ width: 100%;
+
+ &::before {
+ content: "";
+ display: block;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ }
+ }
+
+ .parallax-front {
+ align-items: center;
+ color: $light-color;
+ display: flex;
+ height: 100%;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ text-align: center;
+ text-shadow: 0 0 20px rgba($dark-color, .75);
+ top: 0;
+ transform: translateZ($parallax-offset-z) scale($parallax-scale);
+ transition: all .4s ease;
+ width: 100%;
+ z-index: $zindex-0;
+ }
+
+ .parallax-top-left {
+ @include parallax-dir();
+ left: 0;
+ top: 0;
+
+ &:hover ~ .parallax-content {
+ transform: perspective($parallax-perspective) rotateX($parallax-deg) rotateY(-$parallax-deg);
+
+ &::before {
+ background: linear-gradient(135deg, rgba(255, 255, 255, .35) 0%, transparent 50%);
+ }
+
+ .parallax-front {
+ transform: translate3d($parallax-offset, $parallax-offset, $parallax-offset-z) scale($parallax-scale);
+ }
+ }
+ }
+
+ .parallax-top-right {
+ @include parallax-dir();
+ right: 0;
+ top: 0;
+
+ &:hover ~ .parallax-content {
+ transform: perspective($parallax-perspective) rotateX($parallax-deg) rotateY($parallax-deg);
+
+ &::before {
+ background: linear-gradient(-135deg, rgba(255, 255, 255, .35) 0%, transparent 50%);
+ }
+
+ .parallax-front {
+ transform: translate3d(-$parallax-offset, $parallax-offset, $parallax-offset-z) scale($parallax-scale);
+ }
+ }
+ }
+
+ .parallax-bottom-left {
+ @include parallax-dir();
+ bottom: 0;
+ left: 0;
+
+ &:hover ~ .parallax-content {
+ transform: perspective($parallax-perspective) rotateX(-$parallax-deg) rotateY(-$parallax-deg);
+
+ &::before {
+ background: linear-gradient(45deg, rgba(255, 255, 255, .35) 0%, transparent 50%);
+ }
+
+ .parallax-front {
+ transform: translate3d($parallax-offset, -$parallax-offset, $parallax-offset-z) scale($parallax-scale);
+ }
+ }
+ }
+
+ .parallax-bottom-right {
+ @include parallax-dir();
+ bottom: 0;
+ right: 0;
+
+ &:hover ~ .parallax-content {
+ transform: perspective($parallax-perspective) rotateX(-$parallax-deg) rotateY($parallax-deg);
+
+ &::before {
+ background: linear-gradient(-45deg, rgba(255, 255, 255, .35) 0%, transparent 50%);
+ }
+
+ .parallax-front {
+ transform: translate3d(-$parallax-offset, -$parallax-offset, $parallax-offset-z) scale($parallax-scale);
+ }
+ }
+ }
+}