技術(shù)頻道導航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運營
卡卡网是专业的网站测速平台,网速测试,测试网站速度,就来卡卡网 ~
问题反馈网络日志

DiyVM:香港VPS驚爆價36元一月
★站長/主播變現(xiàn)★有流量就來
5M CN2 GIA云主機 24元起
一一一云主機 26元起一一一
官方高價收量,每日穩(wěn)定結(jié)算

一一云主機 24元 3折起一一
海外CN2云 低至$2.5/月
海外云低至2折 298/年
免費測試★APK免殺 谷歌過保護
官方收量CPA/CPS長期穩(wěn)定

海外主機 5M CN2 低至$2/月
恒創(chuàng)科技 一 海外服務(wù)器 ● 高速穩(wěn)定
★解決安裝報毒★谷歌過保護機制
超級簽★免殺★加固★滿意付款
全球云主機 3天試用再買

【菠蘿云】香港4G內(nèi)存99元,馬上開通
億人互聯(lián)-津/京BGP托管租用/VPS
蘋果簽名/APP封裝/遠控免殺
10M CN2海外云VPS 53元/月
CN2 GIA/1000Mbps $111/月

實力產(chǎn)品變現(xiàn)
實力產(chǎn)品變現(xiàn)
實力產(chǎn)品變現(xiàn)
實力產(chǎn)品變現(xiàn)
實力產(chǎn)品變現(xiàn)

贊助商

分類目錄

贊助商

最新文章

字体单位是相对测量单位,是根据其他一些值计算的,可以动态变化。与字体相关的测量单...
stroke-width设置形状的描边粗细,如果在 HTML 中,框架是从外边缘...
本文给大家介绍10款用SVG蒙版制作的图片转场/过渡动画,并分析如何实现它们。
CSS 数据类型<filter-function>代表可以改变输入图...
CSS box-shadow 属性用于在元素的框架上添加阴影效果。你可以在同一个...
drop-shadow() 是一个CSS 过滤器函数,其将投影效果应用于输入图像...
本文给大家介绍一个SVG实现的网页气泡动画效果。 

搜索

純CSS實現(xiàn)的網(wǎng)格圖片(九宮圖)縮放效果

作者:admin    時間:2022-8-12 10:16:39    瀏覽:

使用 CSS Grid,創(chuàng)建圖像網(wǎng)格很容易。不過本文不是介紹如何用 CSS Grid 創(chuàng)建圖像網(wǎng)絡(luò),而是如何對這些網(wǎng)格圖片做點效果,例如懸停效果,即是鼠標移到圖片上后,圖片會放大。

純CSS實現(xiàn)的網(wǎng)格圖片(九宮圖)縮放效果

很酷,對吧?而這樣的效果,是用純CSS實現(xiàn)的,沒有任何 JavaScript,也沒有復雜的選擇器。

九宮圖網(wǎng)格

完整HTML代碼

  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5.  
  6.   <meta charset="UTF-8">
  7.   
  8. <style>
  9. .gallery {
  10.   --s: 150px; /* 圖片大小 */
  11.   --g: 10px;  /* 圖片間距 */
  12.   --f: 1.5;   /* 縮放比例 */
  13.   
  14.   display: grid;
  15.   gap: var(--g);
  16.   width: calc(3*var(--s) + 2*var(--g));
  17.   aspect-ratio: 1;
  18.   grid-template-columns: repeat(3,auto);
  19. }
  20.  
  21. .gallery > img {
  22.   width: 0;
  23.   height: 0;
  24.   min-height: 100%;
  25.   min-width: 100%;
  26.   object-fit: cover;
  27.   cursor: pointer;
  28.   filter: grayscale(80%);
  29.   transition: .35s linear;
  30. }
  31.  
  32. .gallery img:hover{
  33.   filter: grayscale(0);
  34.   width:  calc(var(--s)*var(--f));
  35.   height: calc(var(--s)*var(--f));
  36. }
  37.  
  38.  
  39. body {
  40.   margin: 0;
  41.   min-height: 100vh;
  42.   display: grid;
  43.   place-content: center;
  44.   background: #60c4ff;
  45. }
  46. </style>
  47.  
  48.  
  49. </head>
  50.  
  51. <body translate="no" >
  52.   <div class="gallery">
  53.     <img src="picture/pic-1.jpg" >
  54.     <img src="picture/pic-2.jpg" >
  55.     <img src="picture/pic-3.jpg" >
  56.     <img src="picture/pic-4.jpg" >
  57.     <img src="picture/pic-5.jpg" >
  58.     <img src="picture/pic-6.jpg" >
  59.     <img src="picture/pic-7.jpg" >
  60.     <img src="picture/pic-8.jpg" >
  61.     <img src="picture/pic-9.jpg" >
  62.   </div>
  63.   
  64. </body>
  65.  
  66. </html>

demodownload

代碼分析

構(gòu)建網(wǎng)格

創(chuàng)建網(wǎng)格的 HTML 代碼就像容器中的圖像列表一樣簡單。我們不需要太多代碼,不用太過復雜的結(jié)構(gòu)。

  1. <div class="gallery">
  2.   <img>
  3.   <img>
  4.   <img>
  5.   <!-- etc. -->
  6. </div>

對于 CSS,我們首先使用以下設(shè)置網(wǎng)格:

  1. .gallery {
  2.   --s: 150px; /* 控制大小 */
  3.   --g: 10px;  /* 控制間距 */
  4.  
  5.   display: grid;
  6.   gap: var(--g);
  7.   width: calc(3*var(--s) + 2*var(--g)); /* 3 times the size plus 2 times the gap */
  8.   aspect-ratio: 1;
  9.   grid-template-columns: repeat(3, auto);
  10. }

簡而言之,我們有兩個變量,一個控制圖像的大小,一個設(shè)置圖像之間的間隙大小。aspect-ratio有助于保持比例。

圖像樣式設(shè)置

我們有了網(wǎng)格,就可以為圖像設(shè)置樣式了:

  1. .gallery > img {
  2.   width: 0;
  3.   height: 0;
  4.   min-height: 100%;
  5.   min-width: 100%;
  6.   object-fit: cover;
  7. }

我們制作的懸停效果依賴于這個 CSS。

創(chuàng)建懸停效果

我們需要做的是在圖像懸停時增加圖像的比例。我們可以通過:hover調(diào)整圖像的widthheight來做到這一點:

  1. .gallery {
  2.   --f: 1.5; /* controls the scale factor */
  3. }
  4.  
  5. .gallery img:hover{
  6.   width:  calc(var(--s) * var(--f));
  7.   height: calc(var(--s) * var(--f));
  8. }

我添加了一個新的自定義變量 ,--f作為比例因子來控制懸停時的大小。請注意我如何將大小變量--s乘以它來計算新的圖像大小。

x

添加更多圖像

不止是九宮圖網(wǎng)格,我們可以將列數(shù)和行數(shù)設(shè)為變量,并根據(jù)需要添加任意數(shù)量的圖像。下面網(wǎng)格是3行x4列。

 

完整HTML代碼

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.   <meta charset="UTF-8">
  5.   
  6. <style>
  7. .gallery {
  8.   --n: 3; /* number of rows*/
  9.   --m: 4; /* number of columns */
  10.   --s: 150px; /* control the size */
  11.   --g: 10px;  /* control the gap */
  12.   --f: 1.5;   /* control the scale factor */
  13.   
  14.   display: grid;
  15.   gap: var(--g);
  16.   width:  calc(var(--m)*var(--s) + (var(--m) - 1)*var(--g));
  17.   height: calc(var(--n)*var(--s) + (var(--n) - 1)*var(--g));
  18.   grid-template-columns: repeat(var(--m),auto);
  19. }
  20.  
  21. .gallery > img {
  22.   width: 0;
  23.   height: 0;
  24.   min-height: 100%;
  25.   min-width: 100%;
  26.   object-fit: cover;
  27.   cursor: pointer;
  28.   filter: grayscale(80%);
  29.   transition: .35s linear;
  30. }
  31.  
  32. .gallery img:hover{
  33.   filter: grayscale(0);
  34.   width:  calc(var(--s)*var(--f));
  35.   height: calc(var(--s)*var(--f));
  36. }
  37.  
  38.  
  39. body {
  40.   margin: 0;
  41.   min-height: 100vh;
  42.   display: grid;
  43.   place-content: center;
  44.   background: #60c4ff;
  45. }
  46. </style>
  47.  
  48.  
  49. </head>
  50.  
  51. <body translate="no" >
  52.   <div class="gallery">
  53.     <img src="picture/pic-1.jpg" >
  54.     <img src="picture/pic-2.jpg" >
  55.     <img src="picture/pic-3.jpg" >
  56.     <img src="picture/pic-4.jpg" >
  57.     <img src="picture/pic-5.jpg" >
  58.     <img src="picture/pic-6.jpg" >
  59.     <img src="picture/pic-7.jpg" >
  60.     <img src="picture/pic-8.jpg" >
  61.     <img src="picture/pic-9.jpg" >
  62.     <img src="picture/pic-10.jpg" >
  63.     <img src="picture/pic-11.jpg" >
  64.     <img src="picture/pic-12.jpg" >
  65.   </div>
  66. </body>
  67.  
  68. </html>

demodownload

代碼分析

我們可以將列數(shù)和行數(shù)設(shè)為變量,并根據(jù)需要添加任意數(shù)量的圖像。

  1. .gallery {
  2.   --n: 3; /* number of rows*/
  3.   --m: 4; /* number of columns */
  4.   --s: 150px; /* control the size */
  5.   --g: 10px;  /* control the gap */
  6.   --f: 1.5;   /* control the scale factor */
  7.  
  8.   display: grid;
  9.   gap: var(--g);
  10.   width:  calc(var(--m)*var(--s) + (var(--m) - 1)*var(--g));
  11.   height: calc(var(--n)*var(--s) + (var(--n) - 1)*var(--g));
  12.   grid-template-columns: repeat(var(--m),auto);
  13. }

我們有兩個用于行數(shù)和列數(shù)的新變量。然后我們只需使用它們定義網(wǎng)格的寬度和高度。同樣grid-template-columns使用--m變量。和以前一樣,我們不需要顯式定義行,因為無論我們使用多少圖像元素,CSS Grid 的自動放置功能都會為我們完成這項工作。

總結(jié)

本文介紹了純CSS實現(xiàn)的網(wǎng)格圖片(九宮圖)縮放效果,在本文中,我們依靠一些 CSS Grid 大小技巧來創(chuàng)建一個精美的圖像網(wǎng)格,在懸停時縮放并導致網(wǎng)格相應(yīng)地調(diào)整。所有這一切都通過使用 CSS 變量輕松調(diào)整的簡化代碼實現(xiàn)。

相關(guān)文章

x
廣告: CN2云主機 免費試用