整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          使用原生js、css和html實現圖片畫廊組件

          片畫廊組件是網站中常見的UI組件,尤其是在電商平臺的產品詳情頁上,它允許用戶通過縮略圖快速瀏覽和查看產品的多個圖片。本文介紹如何僅使用原生的js、css和html實現下面動畫呈現的圖片畫廊組件。

          功能介紹

          1. html結構中上方為主圖區域,下方為縮略圖列表,縮略圖列表的兩邊為控制水平左右滑動的箭頭導航;
          2. 鼠標移動到某個縮略圖上時,主圖區域將顯示縮略圖的大圖,并且縮略圖著紅色邊框以突出顯示;
          3. 點擊右側箭頭,縮略圖向左側滑動直到最右側的縮略圖顯示在視野中,此時右側箭頭失效;類似的,點擊左側箭頭,縮略圖向右側滑動直到最左側縮略圖出現在視野中,此時左側箭頭失效。

          HTML結構

          首先創建HTML結構,包括主圖區域和下方導航區域,需要重點交代的是id為spec-list的div元素是縮略圖列表的容器,容器的position屬性是relative,設置了固定的寬度,overflow設置為hidden,這樣其子元素超過寬度的部分將不可見,它就相當于窗戶,提供了一個矩形的的可見視野。ul裝載所有的縮略圖,它的position屬性設置為absolute,這樣就可以基于其父元素設置偏移量,它的寬度大于父元素的寬度,這樣就通過設置left屬性實現左右滑動,在父窗口范圍內的縮略圖將是可見的,這樣就實現了滑動效果。

          <div class="product-intro">
          	<div class="preview-wrap">
          		<div class="preview" id="preview">
          			<!-- 主圖顯示區域 -->
          			<div class="main-img" style="width: 460px; height: 460px;">
          				<img id="spec-img" alt="" src="./images/ai-generated-8833166_1280.webp" 
          					style="width: 100%; height: 100%; object-fit: cover;">
          			</div>
          
          			<!-- 下方導航列表 -->
          			<div class="spec-list" style="width: 452px;">
          				<!-- 左側箭頭 -->
          				<a id="spec-forward" href="javascript:;" class="arrow-prev disabled">
          					<i class="sprite-arrow-prev">
          						<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" style="scale:2;">
          							<path fill="currentColor" fill-rule="evenodd" d="m15 4l2 2l-6 6l6 6l-2 2l-8-8z"/>
          						</svg>
          					</i>
          				</a>
          				<!-- 右側箭頭 -->
          				<a id="spec-backward" href="javascript:;" class="arrow-next">
          					<i class="sprite-arrow-next">
          						<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" style="scale:2;">
          							<path fill="currentColor" fill-rule="evenodd" d="m9.005 4l8 8l-8 8L7 18l6.005-6L7 6z"/>
          						</svg>
          					</i>
          				</a>
          				<!-- 縮略圖列表可見區域 -->
          				<div id="spec-list" class="spec-items"
          					style="position: relative; width: 380px; height: 58px; overflow: hidden;">
          					<!-- 縮略圖列表 -->
          					<ul class="lh" style="position: absolute; width: 456px; height: 58px; top: 0px; left: 0px;">
          						<li class="img-hover"><img alt="" src="./images/ai-generated-8833166_1280.webp" width="54" height="54"></li>
          						<li class=""><img alt="" src="./images/owl-50267_1280.jpg" width="54" height="54"></li>
          						<li class=""><img alt="" src="./images/seal-8834240_1280.webp" width="54" height="54"></li>
          						<li class=""><img alt="" src="./images/stork-8830107_1280.webp" width="54" height="54"></li>
          						<li class=""><img alt="" src="./images/triggerfish-8832563_1280.webp" width="54" height="54"></li>
          						<li class=""><img alt="" src="./images/ai-generated-8834126_1280.webp" width="54" height="54"></li>
          					</ul>
          				</div>
          			</div>
          		</div>
          	</div>
          </div>
          

          CSS樣式

          .product-intro {
              position: relative;
              z-index: 1;
              margin-top: 10px;
              padding-bottom: 10px
          }
          
          .product-intro .preview-wrap {
              float: left;
              padding-bottom: 15px;
              position: relative;
              zoom:1;
              z-index: 7
          }
          
          .preview {
              position: relative
          }
          
          .preview .main-img {
              border: 1px solid #eee;
              margin-bottom: 20px;
              zoom: 1
          }
          
          .preview svg {
              color: #CCCCCC;
          }
          
          .preview .spec-list {
              margin-bottom: 18px;
              position: relative;
              zoom: 1
          }
          
          .preview .spec-list ul {
              margin: 0;
              transition: left 0.5s ease;
              list-style-type: none;
              padding-left: 0;
          }
          
          .preview .spec-list .arrow-next,.preview .spec-list .arrow-prev {
              display: block;
              width: 22px;
              height: 32px;
              float: left;
              position: absolute;
              cursor: pointer;
              top: 50%;
              margin-top: -16px
          }
          
          .preview .spec-list .arrow-next i,.preview .spec-list .arrow-prev i {
              display: block
          }
          
          .preview .spec-list .arrow-prev {
              left: 0
          }
          
          .preview .spec-list .arrow-prev:hover i svg {
              color: #999999;
          }
          
          .preview .spec-list .arrow-prev.disabled i svg {
              color: #DFDFDF;
          }
          
          .preview .spec-list .arrow-next {
              right: 0
          }
          
          .preview .spec-list .arrow-next:hover i svg {
              color: #999999;
          }
          
          .preview .spec-list .arrow-next.disabled i svg {
              color: #DFDFDF;
          }
          
          .preview .spec-items {
              width: 224px;
              margin: 0 auto;
              overflow: hidden
          }
          
          .preview .spec-items ul {
              width: 2000px
          }
          
          .preview .spec-items ul li {
              float: left;
              margin: 0 9px;
              max-width: 60px;
              max-height: 70px
          }
          
          .preview .spec-items ul li img {
              border: 2px solid #fff;
              padding-bottom: 1px
          }
          
          .preview .spec-items ul li.img-hover img,.preview .spec-items ul li:hover img {
              border: 2px solid #e53e41
          }
          
          .preview #spec-img {
              max-height: 600px;
          }
          
          .preview .spec-list .spec-items {
              width: 390px
          }
          

          JavaScript交互

          js主要處理鼠標hover到縮略圖更新主圖區域圖片的src屬性值,以及縮略圖的紅色邊框效果;以及實現左右側箭頭點擊產生的縮略圖列表左右滑動效果、箭頭失效處理,注意js中是直接設置ul的left屬性值,要實現滑動的動畫效果,需要在css樣式中設置transition屬性為left 0.5s ease,否則就不會產生動畫效果。

          個簡單的HTML文檔結構,可以用任意編輯器新建html文件,然后用瀏覽器打開看效果。

          <!DOCTYPE HTML>
          <html>
              <head>
                  <title>小白學HTML</title>
              </head>
          
              <body>
                  頁面內容
              </body>
          </html>

          文檔聲明

          <!DOCTYPE HTML>聲明當前文檔是html。如果沒有這個聲明,一般來說問題也不大,現在大多數瀏覽器都會識別并按照HTML文檔來解析運行。

          結構說明

          HTML文檔結構包含一個html標簽元素。html標簽元素中有兩個重要的元素 <head></head><body></body>

          <head></head> 元素中有 <title></title> 子元素,用來描述頁面的標題,顯示在瀏覽器的頁面中。

          <body></body> 元素主要用來放構成頁面的元素。此實例中只有一行 '頁面內容' 文字。

          headbody 元素在 html 元素中,是 html 的內容。因此,

          • htmlheadbody 的父元素
          • headbodyhtml 的子元素
          • head 有一個子元素 title
          • headbody 互為兄弟元素
          • headtitle 都是 html 的后代元素

          整個HTML結構是一個嵌套的樹形結構,可視區域內容集中在 html 的子元素 body 中。

          • 實網頁的結構有三大類,和人體結構大概一致的,比如我們說一個人,有頭 ,有身體,有腳。這是形容一個人的結構。
          • 那么在HTML網頁中,它也有結構。 分別對應的是頭部標簽<head></head>。身體標簽<body></body>。 腳(底部標簽)<footer></footer>。
          • 那么到這里你就明白了網頁的基本組成結構了,下面我放了一張圖片,大家可以看一下!下一期文章為大家介紹頭部標簽<head></head>的使用方法以及它的作用。

          主站蜘蛛池模板: 国产精品免费一区二区三区四区 | 色精品一区二区三区| 国产一区二区三区乱码| 欧美日韩精品一区二区在线视频| 无码aⅴ精品一区二区三区浪潮| 精品一区二区在线观看| jazzjazz国产精品一区二区| 免费在线观看一区| 精品国产日韩一区三区| 日本一区二区三区在线看| 精品国产区一区二区三区在线观看| 精品国产免费观看一区| 无码人妻精品一区二| 中文字幕一区二区三区在线播放| 97久久精品午夜一区二区| 国产一区二区三精品久久久无广告 | 韩国福利一区二区三区高清视频| 中文字幕久久亚洲一区| 日韩精品在线一区二区| 精品国产一区二区三区久久久狼| 日本视频一区在线观看免费| 精品一区二区三区| 日韩精品一区二三区中文| 农村人乱弄一区二区| 日韩人妻无码一区二区三区久久| 国产主播福利一区二区| 日韩一区二区视频在线观看| 国产精品亚洲一区二区三区在线观看 | 免费在线观看一区| 91一区二区三区| 在线观看日本亚洲一区| 精品3d动漫视频一区在线观看| 中文字幕在线观看一区二区三区| 亚洲AV无码一区东京热| 老熟妇高潮一区二区三区| 久久久久国产一区二区| 日产亚洲一区二区三区| 福利电影一区二区| 国模少妇一区二区三区| 午夜AV内射一区二区三区红桃视| 一区二区三区在线观看视频|