div+css实现多张图片饱和度拖拽对比比较效果代码

代码语言:html

所属分类:拖放

代码描述:div+css实现多张图片饱和度拖拽对比比较效果代码,点击底部圆点切换照片。

代码标签: div cs 多张 图片 饱和度 拖拽 对比 比较

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  
  
  
<style>
@charset "UTF-8";
/* ====== IMPORTS ====== */
@import url("https://fonts.googleapis.com/css2?family=Handlee&display=swap");
/* ====== GENERIC ELEMENTS/ COMPONENTS ====== */
* {
  /* silly little reset */
  margin: 0;
  padding: 0;
  background: none;
  color: inherit;
  font: inherit;
}

body, main, section, figure, form {
  display: grid;
}

body {
  grid-template-rows: 100%;
  overflow-x: hidden;
  min-height: 100vh;
  background: #212121;
  color: #ededed;
  font: 400 clamp(.75em, 3.5vw, 1.5em)/1.5 handlee, cursive;
}

svg {
  position: fixed;
}

section, [type=range], figure {
  grid-area: 1/1;
}

main {
  box-sizing: border-box;
  grid-gap: 0.25em;
  grid-template-rows: 1fr 1lh;
  justify-self: center;
  padding: min(1.5em, 5vw);
  width: min(100%, 50em);
  min-height: 25em;
  filter: drop-shadow(2px 2px 5px #121212);
}

section {
  overflow: hidden;
}

figure {
  position: relative;
  grid-template-rows: 1fr 2lh;
  z-index: var(--j);
  translate: calc((var(--i) - var(--k))*100%);
}
figure[id=filtered] img {
  filter: url(#f);
}

img, [type=range] {
  height: calc(100% - 2lh);
}

img {
  position: absolute;
  width: 100%;
  object-fit: cover;
  clip-path: inset(0 0 0 calc(var(--j)*var(--val)*1%));
}

figcaption {
  grid-row: 2;
  place-self: center end;
}

a {
  color: dodgerblue;
}

[type=range] {
  /* allow styling in WebKit browsers */
  /* position of thumb vertical midline */
  --pos:
  	calc(1.5em +
  		   var(--val)/100*(100% - 3em));
  /* ensure it's on top of figure siblings; without z-index, 
   * its thumb shows up on top of the figure elements... 
   * but its background is painted underneath 🙀 */
  z-index: 1;
  /* extend beyond lateral edges of parent by a thumb radius */
  margin: 0 -1.5em;
  /* vertical split line coincides with thumb vertical midline */
  background: linear-gradient(90deg, #0000 calc(var(--pos) - .5*2px), currentcolor 0 calc(var(--pos) + .5*2px), #0000 0) 0 0/100% calc(50% - 1.5em) space;
  /* some kind of :hover/ :focus extra style */
  filter: drop-shadow(1px 0 2px rgba(0, 0, 0, var(--hov, 1)));
  /* allow click through to images & right click context menu */
  pointer-events: none;
  /* style thumb cross-browser */
}
[type=range], [type=range]::-webkit-slider-thumb {
  appearance: none;
}
[type=range]::-webkit-slider-thumb {
  /* full area coverage gradient */
  --full: linear-gradient(red 0 0);
  /* set explicitly as it's content-box in Firefox & 
   * we want border & padding subtracted from dims */
  box-sizing: border-box;
  /* highlight thumb boundary */
  border: solid 2px currentcolor;
  /* create space between lateral ◀ ▶ tips & border */
  /* precisely ½ of width of a background-size  
   * rectangle minus a border width */
  padding: calc(0.63em + -1*2px);
  /* set both width & height to same value here as 
   * aspect-ratio fails in Firefox for slider thumbs */
  width: 3em;
  height: 3em;
  border-radius: 50%;
  /* make round */
  background: repeating-conic-gradient(from 60deg, currentcolor 0% 60deg, #0000 0% 50%) 0/42% space border-box;
  /* mask out padding area containing half backgrounds 
   * not covered by border; border area + content-box 
   * remain visible; out of the ▶◀ ▶◀ bg pattern, 
   * the outer triangles are masked out, leaving ◀ ▶ */
  mask: var(--full) content-box, var(--full) padding-box exclude, var(--full);
  /* make it clickable as slider was made unclickable 
   * to allow for click through to images and context 
   * menu on them */
  pointer-events: auto;
  /* proper resize cursor */
  cursor: ew-resize;
}
[type=range]::-moz-range-thumb {
  /* full area coverage gradient */
  --full: linear-gradient(red 0 0);
  /* set explicitly as it's content-box in Firefox & 
   * we want border & padding subtracted from dims */
  box-sizing: border-box;
  /* highlight thumb boundary */
  border: solid 2px currentcolor;
  /* create space between lateral ◀ ▶ tips & border */
  /* precisely ½ of width of a background-size  
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0