片畫廊組件是網站中常見的UI組件,尤其是在電商平臺的產品詳情頁上,它允許用戶通過縮略圖快速瀏覽和查看產品的多個圖片。本文介紹如何僅使用原生的js、css和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>
.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
}
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中使用圖像的方法
我們在做網頁的時候往往要運用圖片來進行點綴,無論是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反轉圖像顏色在瀏覽器中預覽效果
好了,關于圖像的使用方法我們就介紹到這里了。謝謝大家的觀看。祝大家:身體健康、生活愉快!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。