整合營銷服務商

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

          免費咨詢熱線:

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

          使用原生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結構,我們將有一個主容器和一個div中的每個圖像與類“zt-item”:

          <div id="zt-container" class="zt-container">
          <div class="zt-item" data-id="zt-item-1">
          <img class="zt-current" src="images/image1.jpg" />
          <div class="zt-tag" data-dir="1" data-link="zt-item-2" data-zoom="5" data-speed="700" data-delay="50" style="top:138px;left:151px;"></div>
          <div class="zt-tag" data-dir="1" data-link="zt-item-3" data-zoom="6" data-speed="700" data-delay="50" style="top:253px;left:520px;"></div>
          </div>
          <div class="zt-item" data-id="zt-item-2">
          <img class="zt-current" src="images/image1_1.jpg" />
          <div class="zt-tag zt-tag-back" data-dir="-1" data-link="zt-item-1" data-zoom="5" data-speed="500" data-delay="0"></div>
          </div>		
          <div class="zt-item" data-id="zt-item-3">
          <img class="zt-current" src="images/image2_2.jpg" />
          <div class="zt-tag zt-tag-back" data-dir="-1" data-link="zt-item-1" data-zoom="6" data-speed="500" data-delay="0"></div>
          </div></div>

          <img class="zt-current" src="images/imageX.jpg" />是每一步中的形象。該項目然后具有特定屬性的標簽。

          數據屬性如下:

          • data-dir是1或-1,取決于我們是要“放大”(1)還是“放大縮小”(-1)

          • 數據鏈接將指示我們將標簽連接到哪個項目(基于我們給每個項目的數據ID)

          • 數據縮放是縮放的因素。設置得非常低,我們放大或縮小的圖像只會略微放大。

          • 數據加速以毫秒為單位的動畫速度

          • 數據延遲新圖像出現的延遲時間

          上面的示例結構具有帶有兩個標簽的第一個初始圖像(zt-item-1),這兩個標簽通向zt-item-2和zt-item-3。zt-item-2和zt-item-3只有后面的標簽。正如你所看到的,后面的標簽有另外一個類“zt-tag-back”和一個數據目錄值-1。

          標簽的位置在style屬性中定義,您也可以為其添加其他大小。

          選項

          以下是默認選項:

          $('#zt-container').zoomtour({	// if true the tags are rotated depending on their position
          rotation	: true,	// zoom out animation easing. Example: easeOutBounce , easeOutBack	
          zoominEasing	: '', 
          // zoom out animation easing
          zoomoutEasing	: ''	});

          我們希望你喜歡這個小腳本,并找到它有用!

          像的使用《HTML5系列教程21》

          在HTML5中使用圖像的方法

          我們在做網頁的時候往往要運用圖片來進行點綴,無論是logo或是產品圖像,都會給人耳目一新的感覺。那么在HTML5中,使用Canvas就可以直接插入圖像,甚至可以對插入的圖像進行平鋪和裁剪等操作,接下來就讓我們來了解一下在Canvas中圖像的使用方式吧!

          1.圖像的插入

          在HTML中可以使用img標簽插入一個圖像,而在HTML5中,我們就可以使用Canvas的drawlmage函數直接在指定位置插入圖像。插入圖像的代碼如圖所示:

          在HTML5中插入圖像的代碼方式

          在谷歌瀏覽器中的預覽效果如圖:

          在HTML5中插入圖像的方式預覽

          2.圖像的平鋪

          在繪制平鋪圖像時,我們需要用到Canvas的createPattern函數,該函數有兩個參數,第一個參數是需要平鋪的圖像,第二好參數確定以哪種方式進行平鋪,可用的選項包括repent(在水平和垂直方向重復),repeat-x(在水平方向重復),repeat-y(在垂直方向重復),no-repeat(不重復),繪制水平和垂直方向重復的代碼如圖所示:

          在HTML5中平鋪圖像的代碼方式

          在谷歌瀏覽器中的預覽效果如圖:

          在HTML5中平鋪圖像的方式預覽

          3.圖像的裁剪

          Canvas允許用戶在繪制圖像時對繪制的圖形進行裁剪操作,這時候需要用到繪圖形函數,該函數有多個重載方法,這些方法分別如下圖所示:

          繪制圖像函數的多個重載方法

          該表對上述三個函數進行參數說明

          繪制圖像函數的參數說明

          使用Canvas裁剪圖像的代碼如下圖所示:

          在HTML5中進行裁剪圖像的代碼示例

          在谷歌瀏覽器中的預覽效果如圖:

          在HTML5中進行裁剪圖像在瀏覽器中預覽示例

          4.反轉圖像顏色

          大家都知道圖像是由一個一個的像素點組成的,根據各像素點顏色分配的不同,呈現出不同的圖像。Canvas提供了修改像素點顏色的方法,用于度圖像進行各種操作。通過修改像素反轉圖像顏色的代碼如下圖所示:

          在HTML5中利用Canvas反轉圖像顏色代碼

          在谷歌瀏覽器中的預覽效果如圖:

          在HTML5中利用Canvas反轉圖像顏色在瀏覽器中預覽效果

          好了,關于圖像的使用方法我們就介紹到這里了。謝謝大家的觀看。祝大家:身體健康、生活愉快!


          主站蜘蛛池模板: 成人h动漫精品一区二区无码| 偷拍精品视频一区二区三区| 一本一道波多野结衣一区| 中文字幕无线码一区2020青青| 亚洲国产成人一区二区三区| 亚洲日本一区二区三区在线| 成人免费av一区二区三区| 少妇无码一区二区三区| 蜜桃AV抽搐高潮一区二区| 国产精品 一区 在线| 欧亚精品一区三区免费| 红杏亚洲影院一区二区三区 | 日韩在线一区二区三区视频| 合区精品久久久中文字幕一区| 亚洲日韩国产欧美一区二区三区| 国产精品自在拍一区二区不卡| 国模吧一区二区三区| 日韩精品无码人妻一区二区三区| 成人区精品一区二区不卡亚洲 | 精品国产一区二区三区2021| 亚洲一区二区三区播放在线| 久久青青草原一区二区| 日产一区日产2区| 搡老熟女老女人一区二区| 成人一区二区免费视频| 久草新视频一区二区三区| 久久精品免费一区二区三区| 日韩有码一区二区| 国产剧情国产精品一区| 日本午夜精品一区二区三区电影| 精品人妻中文av一区二区三区| 亚洲av成人一区二区三区| 日韩一区精品视频一区二区| 中文字幕日韩精品一区二区三区| 日韩一区二区视频在线观看| 天天躁日日躁狠狠躁一区| 亚洲丰满熟女一区二区哦| 国产精品一区在线观看你懂的| 亚洲国产精品综合一区在线| 日本一区二区三区免费高清在线 | 国产精品自在拍一区二区不卡|