以下是 HTML5+CSS实现图片过滤特效代码 的示例演示效果:
部分效果截图:
HTML代码(index.html):
<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HTML5+CSS实现图片过滤特效</title>
<link rel="stylesheet" type="text/css" href="css/default.css">
<link rel="stylesheet" href="css/demo-site.min.css">
</head>
<body>
<section class="demo__section">
<div class="demo__input-area">
<fieldset class="demo__option-field">
<legend>Choose a sample image:</legend>
<img class="demo__option-img" src="img/1.jpg" alt="girl image">
<img class="demo__option-img" src="img/atx.jpg" alt="austin image">
<img class="demo__option-img" src="img/tahoe.jpg" alt="tahoe image">
<img class="demo__option-img" src="img/bike.jpg" alt="bike image">
<img class="demo__option-img" src="img/lakegeneva.jpg" alt="lake geneva image">
<br>
<label class="demo__input-label">
Or paste in a link to your own photo:
<input class="demo__input-img" type="text">
</label>
</fieldset>
<small class="demo__note">Hovering over any of these images (or clicking on mobile) will remove the filter effect to visualize the changes.</small>
</div>
<ul class="demo__list">
<li class="demo__item">
<figure>
<img>
<figcaption>#nofilter</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="aden">
<img>
<figcaption>Aden</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="reyes">
<img>
<figcaption>Reyes</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="perpetua">
<img>
<figcaption>Perpetua</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="inkwell">
<img>
<figcaption>Inkwell</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="earlybird">
<img>
<figcaption>Earlybird</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="toaster">
<img>
<figcaption>Toaster</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="walden">
<img>
<figcaption>Walden</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="hudson">
<img>
<figcaption>Hudson</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="gingham">
<img>
<figcaption>Gingham</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="mayfair">
<img>
<figcaption>Mayfair</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="lofi">
<img>
<figcaption>Lo-fi</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="xpro2">
<img>
<figcaption>X-Pro II</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="_1977">
<img>
<figcaption>1977</figcaption>
</figure>
</li>
<li class="demo__item">
<figure class="brooklyn">
<img>
<figcaption>Brooklyn</figcaption>
</figure>
</li>
</ul>
</section>
<script>
var inputField = document.querySelector(".demo__input-img")
function pickSample(img) {
updateImages(img.src)
inputField.value = img.getAttribute("src")
}
function updateImages(src) {
var imgs = document.querySelectorAll(".demo__item img")
for (var i = 0; i < imgs.length; i++) imgs[i].src = src
}
document.addEventListener("click", function(event) {
if (/demo__option-img/.test(event.target.className)) pickSample(event.target)
}, false)
inputField.addEventListener("input", function() {
updateImages(this.value)
}, false)
inputField.addEventListener("focus", function() {
this.select()
}, false)
pickSample(document.querySelector(".demo__option-img"))
</script>
</body>
</html>
CSS代码(1977.min.css):
._1977{position:relative}
._1977:after{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute}
._1977{-webkit-filter:contrast(1.1) brightness(1.1) saturate(1.3);filter:contrast(1.1) brightness(1.1) saturate(1.3)}
._1977:after{background:rgba(243,106,188,.3);mix-blend-mode:screen}
CSS代码(reyes.min.css):
.reyes{position:relative}
.reyes:after{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute}
.reyes{-webkit-filter:sepia(.22) brightness(1.1) contrast(.85) saturate(.75);filter:sepia(.22) brightness(1.1) contrast(.85) saturate(.75)}
.reyes:after{background:#efcdad;mix-blend-mode:soft-light;opacity:.5}
CSS代码(toaster.min.css):
.toaster{position:relative}
.toaster:after{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute}
.toaster{-webkit-filter:contrast(1.5) brightness(.9);filter:contrast(1.5) brightness(.9)}
.toaster:after{background:-webkit-radial-gradient(circle,#804e0f,#3b003b);background:radial-gradient(circle,#804e0f,#3b003b);mix-blend-mode:screen}
CSS代码(walden.min.css):
.walden{position:relative}
.walden:after{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute}
.walden{-webkit-filter:brightness(1.1) hue-rotate(-10deg) sepia(.3) saturate(1.6);filter:brightness(1.1) hue-rotate(-10deg) sepia(.3) saturate(1.6)}
.walden:after{background:#04c;mix-blend-mode:screen;opacity:.3}
CSS代码(xpro2.min.css):
.xpro2{position:relative}
.xpro2:after{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute}
.xpro2{-webkit-filter:sepia(.3);filter:sepia(.3)}
.xpro2:after{background:-webkit-radial-gradient(circle,#E6E7E0 40%,rgba(43,42,161,.6) 110%);background:radial-gradient(circle,#E6E7E0 40%,rgba(43,42,161,.6) 110%);mix-blend-mode:color-burn}