simedkom/public/assets/homepage/sass/portfolio/_portfolio.scss
2025-03-27 21:08:56 +07:00

957 lines
26 KiB
SCSS

/* ===================================
15. Portfolio
====================================== */
/* Portfolio grid */
.grid-item {
.portfolio-image {
img {
width: 100%;
}
}
}
.portfolio-grid {
.work-1col {
li {
width: 100%;
}
}
}
/* Portfolio filter */
.portfolio-filter {
li {
padding: 0 25px;
&:first-child {
padding-left: 0;
}
&:last-child {
padding-right: 0;
}
a {
color: var(--medium-gray);
border-bottom: 2px solid transparent;
}
&:hover, &:focus, &.active {
a {
color: var(--dark-gray);
border-color: var(--dark-gray);
}
}
}
&.filter-btn {
li {
padding: 0 12px;
a {
padding: 6px 30px;
border-radius: 40px;
&:hover, &:focus, &.active {
background-color: var(--white);
color: var(--dark-gray);
@include box-shadow(0 0 25px rgba(0,0,0,.08));
}
}
&.active {
a {
background-color: var(--white);
color: var(--dark-gray);
@include box-shadow(0 0 10px rgba(0,0,0,.08));
}
}
}
}
}
/* Portfolio classic */
.portfolio-classic {
.portfolio-box {
-webkit-clip-path: inset(0 0 0 0);
clip-path: inset(0 0 0 0);
.portfolio-hover {
opacity:0;
transform:translate3d(0,45px,0) skewY(-15deg);
}
&:hover {
-webkit-clip-path: inset(2% 2% 2% 2%);
clip-path: inset(2% 2% 2% 2%);
.portfolio-image {
img {
opacity: 0.15;
@include prefix(filter, blur(4px), webkit);
}
}
.portfolio-hover {
opacity:1;
transform:translate3d(0,0,0);
}
}
}
}
/* Portfolio boxed */
.portfolio-boxed {
.portfolio-box {
will-change: transform;
.portfolio-icon {
a {
margin: 0 4px;
position: relative;
@include box-shadow(0 0 25px 0 rgba(0, 0, 0, .5));
}
}
.portfolio-overlay {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
z-index: -1;
opacity: 0;
visibility: hidden;
@include prefix(transition, all 0.2s linear, webkit);
}
&:hover {
@include box-shadow(10px 0 70px rgba(0, 0, 0, .15));
@include prefix(transform, translateY(-5px), webkit);
.portfolio-image {
img {
opacity: 0.3;
}
}
.portfolio-overlay {
opacity: 1;
visibility: visible;
}
}
}
}
/* Mousetip */
.mousetip-wrapper {
.caption {
opacity: 0;
visibility: hidden;
position: absolute;
top: 20px;
left: 20px;
z-index: 9;
}
&:hover {
.caption {
opacity: 1;
visibility: visible;
display: block;
}
}
}
/* Portfolio transform */
.portfolio-transform {
.portfolio-box {
will-change: auto;
overflow: visible;
.caption {
padding: 22px 28px 11px;
white-space: nowrap;
@include box-shadow(0 0 25px rgba(0,0,0,.2));
}
.portfolio-image {
overflow: visible;
img {
@include prefix(transition, all 0.6s linear, webkit);
}
}
&:hover {
.portfolio-image {
img {
@include prefix(transform, scale(1.1), webkit);
}
}
}
}
}
/* Portfolio creative */
.portfolio-creative {
.portfolio-box {
will-change: transform;
.portfolio-title {
@include prefix(transform, scale(2), webkit);
display: block;
width: 100%;
&::before {
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 1;
@include prefix(transform, translateY(-50%), webkit);
}
&::after {
content: attr(data-text);
position: absolute;
left: 0;
right: 0;
top: -20px;
font-size: 110px;
letter-spacing: -6px;
color: rgba(0,0,0,.1);
font-weight: 800;
white-space: nowrap;
text-align: center;
display: inline-block;
animation: glitch-skew 1s infinite linear alternate-reverse;
}
}
.portfolio-hover {
span {
@include prefix(transform, translateY(25px), webkit);
}
}
&:hover {
.portfolio-image {
img {
opacity: 0;
}
}
.portfolio-title {
@include prefix(transform, scale(1), webkit);
}
.portfolio-hover {
span {
@include prefix(transform, translateY(0), webkit);
}
}
}
}
}
/* Portfolio simple */
.portfolio-simple {
.portfolio-box {
.portfolio-icon {
a {
margin: 0 5px;
position: relative;
@include prefix(transition-delay, 0.1s, webkit);
@include box-shadow(0 0 20px rgba(0,0,0,.3));
&:last-child {
@include prefix(transition-delay, 0.2s, webkit);
}
}
}
&:hover {
.portfolio-image {
img {
opacity: 0.5;
@include prefix(transform, scale(1.1), webkit);
}
}
}
}
}
/* Portfolio modern */
.portfolio-modern {
.portfolio-box {
position: relative;
will-change: transform;
.portfolio-hover {
opacity: 0;
left: 20px;
bottom: 20px;
width: calc(100% - 40px);
height: auto;
top: inherit;
@include prefix(transform, translateY(0) scale(1, 0), webkit);
transform-origin: bottom center;
> * {
> * {
> * {
opacity: 0;
transition-delay: 0.25s;
transform: translateY(15px);
+ * {
opacity: 0;
transition-delay: 0.35s;
}
}
+ * {
opacity: 0;
transform: translateY(15px);
transition-delay: 0.45s;
}
}
}
}
&:hover {
opacity: 1;
-webkit-filter: blur(0);
filter: blur(0);
.portfolio-image{
img{
@include prefix(transform, scale(1.1), webkit);
}
}
.portfolio-hover {
@include box-shadow(0 0 15px rgba(0,0,0,.20));
@include prefix(transform, translateY(0) scale(1, 1), webkit);
opacity: 1;
> * {
> * {
> * {
opacity: 1;
transform: translateY(0);
+ * {
opacity: 1;
}
}
+ * {
opacity: 1;
transform: translateY(0);
}
}
}
}
}
}
}
/* Portfolio attractive */
.portfolio-attractive {
.portfolio-link {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
content: "";
z-index: 9999;
cursor: pointer;
}
.portfolio-box {
position: relative;
.portfolio-image {
img {
@include prefix(transition, all 500ms cubic-bezier(0.37, 0, 0.63, 1), webkit);
}
}
.portfolio-hover {
.icon-box {
margin-top: 0px;
transform-style: inherit;
}
}
}
.grid-item {
&:hover {
.portfolio-hover {
opacity: 1;
.icon-box {
margin-top: -10px;
}
}
.portfolio-image {
img {
opacity: 0.3;
}
}
.move-bottom-top-self span,
.move-top-bottom-self span {
-webkit-transform: translateY(0);
transform: translateY(0);
opacity: 1;
}
}
}
}
/* Portfolio simple */
.portfolio-slider {
.portfolio-box {
@include prefix(transform, translateY(0), webkit);
@include prefix(transition, all .65s cubic-bezier(.05,.2,.1,1), webkit);
.portfolio-image {
img {
@include prefix(transition, all .65s cubic-bezier(.05,.2,.1,1), webkit);
}
}
.portfolio-hover {
opacity: 1;
.portfolio-link {
.category {
@include prefix(transform, translateY(0), webkit);
opacity: 1;
visibility: visible;
}
i {
position: absolute;
right: 0;
will-change: transform;
@include prefix(transform, translateY(0), webkit);
opacity: 0;
}
}
}
&:hover {
@include prefix(transform, translateY(-5px), webkit);
.portfolio-image {
img {
opacity: 0.6;
@include prefix(transform, scale(1.1), webkit);
}
}
.portfolio-hover {
&.dark-hover {
.portfolio-title {
color: var(--white) !important;
}
.portfolio-link {
a, i, span, div {
color: var(--white) !important;
}
}
}
&.light-hover {
.portfolio-title {
color: var(--dark-gray) !important;
}
.portfolio-link {
a, i, span, div {
color: var(--dark-gray) !important;
}
}
}
.portfolio-link {
.category {
@include prefix(transform, translateY(-20px), webkit);
opacity: 0;
visibility: hidden;
}
i {
@include prefix(transform, translateY(-28px), webkit);
opacity: 1;
}
}
.box-overlay {
opacity: 1;
visibility: visible;
}
}
}
}
}
/* Portfolio clean */
.portfolio-clean {
.portfolio-box {
position: relative;
.portfolio-image {
-webkit-clip-path: inset(0 0 0 0);
clip-path: inset(0 0 0 0);
@include prefix(transition, all 600ms cubic-bezier(0.37, 0, 0.63, 1), webkit);
}
.portfolio-hover {
@include prefix(transform, translateY(35px), webkit);
@include prefix(transition, all 400ms cubic-bezier(0.37, 0, 0.63, 1), webkit);
.portfolio-title {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
}
}
&:hover {
.portfolio-image {
-webkit-clip-path: inset(0 0 70px 0);
clip-path: inset(0 0 70px 0);
img {
@include prefix(transform, translateY(-40px), webkit);
}
}
.portfolio-hover {
@include prefix(transform, translateY(0), webkit);
@include prefix(transition, all 600ms cubic-bezier(0.37, 0, 0.63, 1), webkit);
}
}
}
}
/* Portfolio clean */
.portfolio-switch-image {
.portfolio-box {
.portfolio-image {
.hover-switch-image {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
@include prefix(transform, scale3d(1.1,1.1,1.1), webkit);
}
}
&:hover {
@include prefix(transform, translateY(-5px), webkit);
.portfolio-image {
.hover-switch-image {
opacity: 1;
@include prefix(transform, scale3d(1,1,1), webkit);
}
}
}
}
}
/* Portfolio and gallery translate animation */
.portfolio-box, .gallery-box {
overflow: hidden;
will-change: transform;
.move-top-bottom {
@include prefix(transform, translateY(-15px), webkit);
opacity: 0;
}
.move-bottom-top {
@include prefix(transform, translateY(15px), webkit);
opacity: 0;
}
.move-left-right {
@include prefix(transform, translateX(-15px), webkit);
opacity: 0;
}
.move-right-left {
@include prefix(transform, translateX(15px), webkit);
opacity: 0;
}
.move-bottom-top-self {
overflow: hidden;
span {
opacity: 0;
display: block;
will-change: transform;
@include prefix(transform, translateY(50%), webkit);
@include prefix(transition, all .5s cubic-bezier(0.37, 0.31, 0.2, 0.85), webkit);
}
}
.move-top-bottom-self {
overflow: hidden;
span {
opacity: 0;
display: block;
will-change: transform;
@include prefix(transform, translateY(-50%), webkit);
@include prefix(transition, all .5s cubic-bezier(0.37, 0.31, 0.2, 0.85), webkit);
}
}
.move-left-right-self {
overflow: hidden;
span {
opacity: 0;
display: block;
will-change: transform;
@include prefix(transform, translateX(-50%), webkit);
@include prefix(transition, all .5s cubic-bezier(0.37, 0.31, 0.2, 0.85), webkit);
}
}
.move-right-left-self {
overflow: hidden;
span {
opacity: 0;
display: block;
will-change: transform;
@include prefix(transform, translateX(50%), webkit);
@include prefix(transition, all .5s cubic-bezier(0.37, 0.31, 0.2, 0.85), webkit);
}
}
.portfolio-hover {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
opacity: 0;
}
.portfolio-image {
position: relative;
overflow: hidden;
}
&:hover {
.move-top-bottom {
@include prefix(transform, translateY(0), webkit);
opacity: 1;
}
.move-bottom-top {
@include prefix(transform, translateY(0), webkit);
opacity: 1;
}
.move-left-right {
@include prefix(transform, translateX(0), webkit);
opacity: 1;
}
.move-right-left {
@include prefix(transform, translateX(0), webkit);
opacity: 1;
}
.move-bottom-top-self {
span {
@include prefix(transform, translateY(0), webkit);
opacity: 1;
}
}
.move-top-bottom-self {
span {
opacity: 1;
@include prefix(transform, translateY(0), webkit);
}
}
.move-left-right-self {
span {
@include prefix(transform, translateX(0), webkit);
opacity: 1;
}
}
.move-right-left-self {
span {
opacity: 1;
@include prefix(transform, translateX(0), webkit);
}
}
.portfolio-hover {
opacity: 1;
}
}
}
/* Portfolio pagination */
.portfolio-pagination {
position: relative;
z-index: 1;
.bg-fancy-image {
position: absolute;
top: 0;
left: 0;
opacity: 0;
height: 100%;
width: 100%;
z-index: -1;
visibility: hidden;
background-size: cover;
@include prefix(transition, 0.5s, webkit);
}
.btn-slide-icon-left, .btn-slide-icon-right {
.separator {
position: relative;
@include prefix(transition, 0.5s, webkit);
&:after, &:before {
content: "";
display: block;
position: absolute;
left: -2px;
top: -4px;
height: 2px;
width: 11px;
background-color:var(--dark-gray);
@include prefix(transition, 0.5s, webkit);
}
&:after {
@include prefix(transform, rotate(132deg), webkit);
}
&:before {
@include prefix(transform, rotate(228deg), webkit);
top: 4px !important;
}
}
}
.btn-slide-icon-right {
.separator {
&:after, &:before {
right: -2px;
left: auto
}
&:before {
transform: rotate(132deg);
@include prefix(transform, rotate(132deg), webkit);
}
&:after {
transform: rotate(48deg);
@include prefix(transform, rotate(48deg), webkit);
}
}
}
h6, span {
@include prefix(transition, 0.2s, webkit);
}
&:hover {
.bg-fancy-image {
opacity: 1;
visibility: visible;
}
.separator {
width: 100px !important;
background-color: var(--white);
&:after {
color: var(--white);
}
}
span {
color: var(--white);
}
.btn-slide-icon-left, .btn-slide-icon-right {
.separator {
&:after, &:before {
background-color: var(--white);
}
}
}
}
}
/* Grid loading */
@keyframes spin { to { -webkit-transform: rotate(360deg); -ms-transform: rotate(360deg); transform: rotate(360deg); } }
.grid-loading {
overflow: hidden;
position: relative;
opacity: 1 !important;
transition: all 0s ease-in-out !important;
-webkit-transition: all 0s ease-in-out !important;
z-index: 99;
&::after {
background: none;
content: "" !important;
position: absolute;
top: 100px !important;
left: calc(50% - 25px) !important;
width: 50px !important;
height: 50px !important;
opacity: 1 !important;
right: inherit !important;
z-index: 9;
text-align: center;
border: 3px solid rgba(23, 23, 23, 0.2);
border-top-color: rgba(23, 23, 23, 0.7);
border-radius: 50%;
animation: spin 1s linear infinite;
-webkit-animation: spin 1s linear infinite;
}
&:before {
content: "";
position: absolute;
right: 2px;
top: 1px;
width: calc(100% - 4px);
height: calc(100% - 2px);
border-radius: inherit;
z-index: 1;
}
&.grid-loading-white {
&::after {
border: 3px solid rgba(255, 255, 255, 0.2);
border-top-color: rgba(255, 255, 255, 0.7);
}
}
.grid-item {
visibility: hidden;
}
li {
.grid-item {
overflow: hidden; opacity: 0;
}
}
}
/* Portfolio minimal */
.sticky-image-distortion-wrapper {
position: static;
display: flex;
height: 100%;
overflow: hidden;
width: 100%;
.svg-wrapper {
position: fixed;
right: 55px;
height: 100%;
top: 0;
width: 50%;
z-index: -1;
}
.menu {
width: 50%;
-ms-overflow-style: none;
scrollbar-width: none;
overflow-y: scroll;
overflow-x: hidden;
padding: 100px 0 100px 100px;
&::-webkit-scrollbar {
display: none;
}
.menu__link {
display: flex;
align-items: center;
width: 100%;
.sticky-image-title {
a {
&:hover {
opacity: 1 !important;
}
}
}
svg {
opacity: 0;
visibility: hidden;
@include prefix(transition, 0.3s, webkit);
width: 100%;
height: 100%;
}
&.active {
svg {
opacity: 1;
visibility: visible;
}
.sticky-image-title {
a {
padding-left: 70px;
@include prefix(transition, 0.5s, webkit);
}
.title {
opacity: 0.25;
left: 95px;
}
}
.sticky-category {
opacity: 1;
color: var(--dark-gray);
left: 25px;
}
}
}
&:hover {
.menu__link {
.sticky-image-title {
a {
opacity: 0.3;
}
}
}
}
}
}
.sticky-image-title {
position: relative;
display: flex;
@include prefix(transition, 0.3s, webkit);
padding: 0;
width: 100%;
a {
padding: 25px 50px 25px;
width: 100%;
}
.title {
position: absolute;
left: 100px;
width: 100%;
top: 45%;
@include prefix(transform, translateY(-50%), webkit);
word-break: normal;
z-index: -1;
opacity: 0;
@include prefix(transition, 0.3s, webkit);
}
}
.sticky-category {
display: flex;
align-items: center;
position: absolute;
left: 32px;
height: 100%;
width: 50px;
justify-content: center;
top: 0;
opacity: 0;
@include prefix(transition, 0.3s, webkit);
.category {
@include prefix(transform, rotate(180deg), webkit);
writing-mode: vertical-lr;
}
}
/* Horizontal portfolio */
.threeD-letter-menu {
position: relative;
min-height: 100vh;
.menu-item {
.hover-reveal {
position: fixed;
z-index: 1;
width: 420px;
height: 420px;
top: 0;
left: 0;
pointer-events: none;
opacity: 0;
transform-origin: 100% 0%;
will-change: transform, filter;
border-radius: 100%;
.hover-reveal__inner {
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
border-radius: 100%;
}
.hover-reveal__img {
height: 100%;
width: 100%;
background-size: cover;
background-position: 50% 50%;
will-change: transform;
border-radius: 100%;
}
}
.text-white-linear{
&:hover {
span {
color: var(--white);
-webkit-text-fill-color: #fff;
}
}
}
.menu-item-text {
position: relative;
display: inline-block;
.word {
overflow: hidden;
line-height: 120%;
}
.words {
.char {
transition: 0.8s cubic-bezier(0.075, 0.82, 0.165, 1);
}
}
.clone {
position: absolute;
top: 0;
left: 0;
.char {
@include prefix(transform, translateY(-100px), webkit);
opacity: 0;
}
}
&:hover {
.clone {
.char {
@include prefix(transform, translateY(0), webkit);
opacity: 1;
}
}
.words:not(.clone) {
.char {
@include prefix(transform, translateY(100px), webkit);
opacity: 0;
}
}
}
}
}
}