UNPKG

image-comparison-slider-react

Version:

Image comparison slider component for React.

92 lines (91 loc) 2.09 kB
.__ReactImageComparisonSlider { background-color: #ccc; border-radius: 4px; overflow: hidden; position: relative; user-select: none; --left-offset: 48%; height: var(--height); width: var(--width); } .__ReactImageComparisonSlider > div:last-child { position: absolute; width: 100%; height: 100%; left: 0; top: 0; z-index: 1; } .__ReactImageComparisonSlider p { position: absolute; font-size: 0.85rem; line-height: 1; color: #fff; font-weight: 600; padding: 0.5rem 0.65rem; background-color: rgba(0, 0, 0, 0.5); margin: 0; } .__ReactImageComparisonSlider p:first-child { top: 0; left: 0; border-bottom-right-radius: 4px; } .__ReactImageComparisonSlider p:last-child { bottom: 0; right: 0; border-top-left-radius: 4px; } .__ReactImageComparisonSlider img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; object-position: top center; } .__ReactImageComparisonSlider img:nth-child(2) { clip-path: polygon(0 0, calc(var(--left-offset) + 5%) 0, calc(var(--left-offset) - 5%) 100%, 0 100%); } .__ReactImageComparisonSlider > div:not(:last-child) { position: absolute; z-index: 2; height: 100%; left: calc(var(--left-offset) - 5%); width: 10%; cursor: col-resize; } .__ReactImageComparisonSlider > div:not(:last-child):before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--theme); clip-path: polygon(80% 0, 100% 0, 20% 100%, 0 100%); } .__ReactImageComparisonSlider > div:not(:last-child) > div { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: var(--theme); width: 2.75rem; height: 2.75rem; display: flex; align-items: center; justify-content: center; border-radius: 50%; text-align: center; } .__ReactImageComparisonSlider > div:not(:last-child) > div svg { display: block; fill: var(--icon-color); width: 1rem; height: auto; } .__ReactImageComparisonSlider > div:not(:last-child) > div svg:first-child { margin-right: 0.25rem; }