@lylech/react-image-magnifier
Version:
An image magnifier complete with thumbnail ribbon. Lightweight yet customizable.
176 lines (150 loc) • 3.34 kB
CSS
/*Container element - React context*/
.react-image-magnifier{
min-width: 320px;
width: 60vw;
height: 80vh;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid gray;
border-radius: 4px;
}
/*Container element - JS context*/
div.lfc-rim-main{
width: 100%;
height: 100%;
display: block;
}
/*Product Pane*/
div.lfc-rim-product{
width: 100%;
height: 80%;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
position: relative;
}
/* Image element in Product Pane*/
img.lfc-rim-product-img{
height: 0;
width: 0;
position: relative;
}
@keyframes lfc-mag-kf-anim-scaleup {
from {scale: 33%;/*transform: rotate(0deg);*/}
to {scale: 100%;/*transform: rotate(360deg)*/}
}
/* Class selected is applied when new thumbnail is selected*/
.lfc-rim-product.selected img{
animation: lfc-mag-kf-anim-scaleup 0.1s;
}
/*Thumbnails container*/
div.lfc-rim-thumbnails{
width: 100%;
height: 20%;
display: flex;
justify-content: center;
flex-direction: row;
}
/*Thumbnail*/
span.lfc-rim-thumbnail-outer{
position: relative;
width: 100%;
height: 100%;
}
div.lfc-rim-thumbnail{
position: relative;
width: 100%;
height: 100%;
margin-right: 1px;
border: 1px solid #AAA;
border-radius: 4px;
background-position: center;
background-repeat: no-repeat;
background-size: contain;
/* transform-origin: 100px;
transform: rotate(calc(90deg*var(--i))); */
}
/*Currently selected Thumbnail */
span.lfc-rim-thumbnail-outer.active div.lfc-rim-thumbnail{
border: 4px solid gold;
background-color: silver;
border-radius: 8px;
scale:1.1 1.1;
transition: scale 0.5s;
z-index: 1;
cursor: default;
}
/*Hover over Thumbnail, */
.lfc-rim-thumbnail:hover{
border: 4px solid goldenrod;
background-color: #6F3232;
border-radius: 30%;
scale:1.3;
z-index: 2;
cursor: pointer;
}
/* +++ Thumbnail Ribbon positioning +++ */
.ribbon-top .lfc-rim-main{
display: flex;
flex-flow: column-reverse;
}
.ribbon-left .lfc-rim-main{
display: flex;
flex-direction: row-reverse;
}
.ribbon-right .lfc-rim-main{
display: flex;
flex-direction: row;
}
.ribbon-hide div.lfc-rim-main div.lfc-rim-product{
width: 100%;
height: 100%;
}
.ribbon-hide div.lfc-rim-main div.lfc-rim-thumbnails{
display: none;
}
.ribbon-left div.lfc-rim-main div.lfc-rim-product,
.ribbon-right div.lfc-rim-main div.lfc-rim-product{
width: 80%;
height: 100%;
}
.ribbon-left div.lfc-rim-main div.lfc-rim-thumbnails,
.ribbon-right div.lfc-rim-main div.lfc-rim-thumbnails{
width: 20%;
height: 100%;
display: flex;
flex-direction: column;
}
/* --- Thumbnail Ribbon positioning --- */
/* +++ Previous/Next Buttons +++ */
button.rim-button{
border-radius: 8px;
padding: 0.5rem 1rem 0.5rem 1rem;
cursor: pointer;
}
button.rim-button:hover{
/* scale: 1.2; */
background-color: #DCDCDC;
/* font-weight: 600; */
}
button.lfc-rim-btn-prev{
width: 10%;
height: 100%;
position: absolute;
left: 0;
z-index: 1;
opacity: .5;
cursor: pointer;
}
button.lfc-rim-btn-next{
width: 10%;
height: 100%;
position: absolute;
right: 0;
z-index: 1;
opacity: .5;
cursor: pointer;
}
/* --- Previous/Next Buttons --- */