Skip to content

Compare

Source

Example CSS

css
@import "winduum/src/components/compare/default.css" layer(utilities);

/* Example customization */
@layer utilities {
  .x-compare {
    --x-compare-clip-path: polygon(0% 0, 40% 0, 40% 100%, 0 100%);
    --x-compare-position: 40%;
  }
}

Winduum CSS Code

winduum/src/components/compare/default.css

css
.x-compare {
  --x-compare-position: 50%;
  --x-compare-clip-path: polygon(0% 0, var(--x-compare-position) 0%, var(--x-compare-position) 100%, 0 100%);

  display: grid;
  overflow: hidden;
  border-radius: inherit;

  > *, &::before {
    position: relative;
    pointer-events: none;
    grid-area: 1/1;
    z-index: 1;
  }

  &::before {
    background-color: var(--color-accent);
    inset-inline-start: var(--x-compare-position);
    inline-size: 1px;
    content: "";
  }

  > .x-button {
    inset-inline-start: var(--x-compare-position);
    margin-inline-start: calc(var(--x-button-inline-size) / 2 * -1);
    margin-block: auto;
  }

  > .x-image {
    display: grid;
    z-index: 0;

    > :where(*):not(:only-child) {
      object-fit: cover;
      object-position: left;
      grid-area: 1/1;

      &:first-child {
        clip-path: var(--x-compare-clip-path);
        position: relative;
      }
    }
  }

  > :where(input) {
    pointer-events: auto;
    cursor: grab;
    opacity: 0%;

    &:active ~ .x-button {
      --x-button-background-color-mix: var(--x-button-active-background-color-mix, var(--color-dark));
      --x-button-background-color-opacity: var(--x-button-active-background-color-opacity, 80%);
    }

    &:focus-visible ~ .x-button {
      --x-button-outline-color: var(--x-button-focus-outline-color, var(--color-accent));
      --x-button-outline-offset: var(--x-button-focus-outline-offset, 2px);
      --x-button-outline-color-opacity: var(--x-button-focus-outline-opacity, 50%);
    }

    &:active {
      cursor: grabbing;
    }
  }
}

Stimulus Actions

Released under the MIT License.