Jadual Kandungan
简介
效果图
技术点
原理说明
代码
Rumah hujung hadapan web html tutorial 用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose

用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose

Jun 21, 2016 am 09:08 AM

之前发了两篇关于CSS的文章,大家都比较关注,看来大家对这块东西都是很感兴趣的,现在趁热打铁再来一发~~

简介

一个用纯CSS实现的简单幻灯片效果,仅供实验,要看Demo请自备Chrome浏览器,勿用于生产环境,不然后果自付,咩哈哈哈哈哈~~

Demo地址:http://output.jsbin.com/tewuso

效果图

效果图录出来很烂,不上传了,请看Demo :(

技术点

  • :target伪类
  • object-fit属性

原理说明

:target伪类可以指定当前锚点目标元素的样式,比如下面:

<a href="#image-1">查看图片</a><img  src="/static/imghw/default1.png"  data-src="xxx.jpg"  class="lazy"  id="image-1" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >
Salin selepas log masuk
#image-1{  display: none;}#image-1:target{  display: block;}
Salin selepas log masuk

点一下"显示图片",原本隐藏起来的#image-1就会突然冒出来,是不是很神奇?(噗→_→)

CSS中的object-fit属性在本Demo里面只是辅助作用,其作用是指定object类元素(img、video等)中的实际内容在元素中的填充方式,跟background-size: contain/cover有点点类似。
更具体的介绍请看张鑫旭的文章:半深入理解CSS3 object-position/object-fit属性

既然知道有:target这么个神奇的东西在,那我们完全可以用CSS实现“点一个小图显示一个大图”的效果,再把HTML写得溜~一点,实现上下图连续查看也是可以的。

代码

先上HTML部分,可以看到其实这种方式实现的幻灯片效果并不太灵活,每一个上下图按钮都要写出来,当然用程序生成此类代码也是很方便的~

<!DOCTYPE html><html><head>  <meta charset="utf-8">  <title>JS Bin</title></head><body>  <div class="container">    <!--缩略图列表-->    <ul class="gallery-wrapper">      <li>        <a href="#image-1">          <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/alarm%20politie.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        </a>      </li>      <li>        <a href="#image-2">          <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/flowers.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        </a>      </li>      <li>        <a href="#image-3">          <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/her%20camera.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        </a>      </li>      <li>        <a href="#image-4">          <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/little%20fox.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        </a>      </li>      <li>        <a href="#image-5">          <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/map.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        </a>      </li>      <li>        <a href="#image-6">          <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/ship.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        </a>      </li>      <li>        <a href="#image-7">          <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/snow%20mountain.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        </a>      </li>      <li>        <a href="#image-8">          <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/ship%20and%20shepherd.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        </a>      </li>    </ul>    <!--大图容器-->    <div class="hidden-images-wrapper">      <div id="image-1">        <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/alarm%20politie.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        <a class="img-prev" href="#image-8">PREV</a>        <a class="img-next" href="#image-2">NEXT</a>        <a class="img-close" href="#"></a>      </div>      <div id="image-2">        <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/flowers.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        <a class="img-prev" href="#image-1">PREV</a>        <a class="img-next" href="#image-3">NEXT</a>        <a class="img-close" href="#"></a>      </div>      <div id="image-3">        <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/her%20camera.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        <a class="img-prev" href="#image-2">PREV</a>        <a class="img-next" href="#image-4">NEXT</a>        <a class="img-close" href="#"></a>      </div>      <div id="image-4">        <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/little%20fox.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        <a class="img-prev" href="#image-3">PREV</a>        <a class="img-next" href="#image-5">NEXT</a>        <a class="img-close" href="#"></a>      </div>      <div id="image-5">        <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/map.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        <a class="img-prev" href="#image-4">PREV</a>        <a class="img-next" href="#image-6">NEXT</a>        <a class="img-close" href="#"></a>      </div>      <div id="image-6">        <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/ship.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        <a class="img-prev" href="#image-5">PREV</a>        <a class="img-next" href="#image-7">NEXT</a>        <a class="img-close" href="#"></a>      </div>      <div id="image-7">        <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/snow%20mountain.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        <a class="img-prev" href="#image-6">PREV</a>        <a class="img-next" href="#image-8">NEXT</a>        <a class="img-close" href="#"></a>      </div>      <div id="image-8">        <img  src="/static/imghw/default1.png"  data-src="http://7rf38t.com1.z0.glb.clouddn.com/ship%20and%20shepherd.jpg"  class="lazy" alt="用纯CSS实现简单的相册幻灯片_html/css_WEB-ITnose" >        <a class="img-prev" href="#image-7">PREV</a>        <a class="img-next" href="#image-1">NEXT</a>        <a class="img-close" href="#"></a>      </div>    </div>  </div></body></html>
Salin selepas log masuk

CSS代码,很大部分都是用于定位啊布局什么的,另外还有相当一部分用于过渡动画效果,貌似有点影响性能~

html,body{  height: 100%;  margin: 0;  padding: 0;  overflow: hidden;  background-color: #f0f0f0;}.gallery-wrapper{  display: block;  list-style: none;  width: 800px;  height: 400px;  margin: 60px auto 0 auto;  padding: 10px;  background-color: #fff;}.gallery-wrapper li{  display: block;  float: left;  list-style: none;  width: 180px;  height: 180px;  padding: 10px;}.gallery-wrapper a{  display: block;  width: 180px;  height: 180px;  overflow: hidden;}.gallery-wrapper img{  display: block;  width: 180px;  height: 180px;  object-fit: cover;  background-color: #eee;  transition: .5s;}.gallery-wrapper a:hover img{  transform: scale(1.1);}.hidden-images-wrapper > div{  position: fixed;  top: 0;  right: 0;  bottom: 0;  left: 0;  background-color: rgba(0,0,0,.8);  opacity: 0;  transition: .6s;  pointer-events: none;}.hidden-images-wrapper > div:target{  opacity: 1;  pointer-events: auto;}.hidden-images-wrapper img{  display: block;  position: absolute;  z-index: 3;  top: 0;  right: 0;  bottom: 0;  left: 0;  width: 740px;  height: 500px;  max-width: 90%;  max-height: 90%;  margin: auto;  padding: 30px;  background-color: #fff;  border-radius: 5px;  object-fit: contain;  transition: .7s;  transform: translateY(-30px);}.hidden-images-wrapper div:target img{  transform: translateY(0);}.img-prev,.img-next{  display: block;  position: absolute;  z-index: 4;  top: 0;  bottom: 0;  height: 50px;  margin: auto 0;  padding: 0 20px;  color: #333;  font-size: 16px;  line-height: 50px;  text-decoration: none;  background-color: #fff;}.img-prev:hover,.img-next:hover{  background-color: #eee;}.img-prev{  left: 0;  border-radius: 0 5px 5px 0;}.img-next{  right: 0;  border-radius: 5px 0 0 5px;}.img-close{  position: absolute;  z-index: 2;  top: 0;  right: 0;  bottom: 0;  left: 0;  cursor: default;}
Salin selepas log masuk

就这些。。。
最后丢一个单个图片放大展示的效果:http://output.jsbin.com/goyeju/2,有性趣的同学可以自行研究原理,也很简单的

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah tujuan & lt; kemajuan & gt; unsur? Apakah tujuan & lt; kemajuan & gt; unsur? Mar 21, 2025 pm 12:34 PM

Artikel ini membincangkan html & lt; kemajuan & gt; elemen, tujuan, gaya, dan perbezaan dari & lt; meter & gt; elemen. Tumpuan utama adalah menggunakan & lt; kemajuan & gt; untuk menyelesaikan tugas dan & lt; meter & gt; untuk stati

Apakah tujuan & lt; DATALIST & GT; unsur? Apakah tujuan & lt; DATALIST & GT; unsur? Mar 21, 2025 pm 12:33 PM

Artikel ini membincangkan html & lt; datalist & gt; elemen, yang meningkatkan bentuk dengan menyediakan cadangan autokomplete, meningkatkan pengalaman pengguna dan mengurangkan kesilapan. Kira -kira: 159

Apakah amalan terbaik untuk keserasian penyemak imbas dalam HTML5? Apakah amalan terbaik untuk keserasian penyemak imbas dalam HTML5? Mar 17, 2025 pm 12:20 PM

Artikel membincangkan amalan terbaik untuk memastikan keserasian silang pelayar HTML5, memberi tumpuan kepada pengesanan ciri, peningkatan progresif, dan kaedah ujian.

Apakah tujuan & lt; meter & gt; unsur? Apakah tujuan & lt; meter & gt; unsur? Mar 21, 2025 pm 12:35 PM

Artikel ini membincangkan html & lt; meter & gt; elemen, digunakan untuk memaparkan nilai skalar atau pecahan dalam julat, dan aplikasi umum dalam pembangunan web. Ia membezakan & lt; meter & gt; dari & lt; kemajuan & gt; dan Ex

Bagaimana saya menggunakan atribut pengesahan borang html5 untuk mengesahkan input pengguna? Bagaimana saya menggunakan atribut pengesahan borang html5 untuk mengesahkan input pengguna? Mar 17, 2025 pm 12:27 PM

Artikel ini membincangkan menggunakan atribut pengesahan bentuk HTML5 seperti had, corak, min, max, dan panjang untuk mengesahkan input pengguna secara langsung dalam penyemak imbas.

Apakah tag meta viewport? Mengapa penting untuk reka bentuk responsif? Apakah tag meta viewport? Mengapa penting untuk reka bentuk responsif? Mar 20, 2025 pm 05:56 PM

Artikel ini membincangkan tag Meta Viewport, penting untuk reka bentuk web responsif pada peranti mudah alih. Ia menerangkan bagaimana penggunaan yang betul memastikan skala kandungan yang optimum dan interaksi pengguna, sementara penyalahgunaan boleh membawa kepada isu reka bentuk dan kebolehaksesan.

Apakah tujuan & lt; iframe & gt; Tag? Apakah pertimbangan keselamatan semasa menggunakannya? Apakah tujuan & lt; iframe & gt; Tag? Apakah pertimbangan keselamatan semasa menggunakannya? Mar 20, 2025 pm 06:05 PM

Artikel ini membincangkan & lt; iframe & gt; Tujuan TAG dalam membenamkan kandungan luaran ke dalam halaman web, kegunaan umum, risiko keselamatan, dan alternatif seperti tag objek dan API.

GITEE PAGES PENYEDIAAN LAMAN WEB STATIC Gagal: Bagaimana menyelesaikan masalah dan menyelesaikan kesilapan fail tunggal 404? GITEE PAGES PENYEDIAAN LAMAN WEB STATIC Gagal: Bagaimana menyelesaikan masalah dan menyelesaikan kesilapan fail tunggal 404? Apr 04, 2025 pm 11:54 PM

Giteepages Statik Laman Web Penggunaan Gagal: 404 Penyelesaian Masalah dan Resolusi Ralat Semasa Menggunakan Gitee ...

See all articles