目錄
I. 背景
1. 想法
II. 實作
III. 進階
首頁 web前端 前端問答 純css怎麼實現點擊圖放大

純css怎麼實現點擊圖放大

Jan 28, 2023 pm 02:40 PM
css 圖片

純css實現點擊圖片放大的方法:1、建立一個HTML範例檔;2、設定「

”;3.透過「function showBgImg(e) {...}」方法實現點擊圖片放大效果即可。

純css怎麼實現點擊圖放大

本教學操作環境:Windows10系統、HTML5&&CSS3版、DELL G3電腦

純css怎麼實現點擊圖片放大?

Css實戰訓練之圖片點擊放大

I. 背景

非常常見的一個功能了,一般網站上顯示的都是縮圖,等你點擊縮圖之後,會在一個彈框中顯示放大的圖片

那麼這個功能是怎麼實現的呢? 正好學習了下css的基礎知識,現在可以來實際的操作一把

1. 想法

首先對頁面的結構進行拆分:

  • 有一個彈窗,在彈窗中顯示大圖;且彈跳窗預設是隱藏的
  • 主頁面上可以放置很多圖片,並添加點擊事件
  • 點擊之後,彈窗顯示,並展示大圖
  • 大圖點擊以下後,關閉彈跳窗

II. 實作

根據上面的描述,我們先來實作一個基礎版本的,先寫HTML

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<body>

 

<!-- 先来实现弹窗 -->

<div class=&#39;modal&#39; id=&#39;modal&#39;>

    <img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/image/622/244/178/1674887775582644.jpg"  class="lazy"  id=&#39;bgImg&#39; / alt="純css怎麼實現點擊圖放大" >

</div>

 

 

<!-- 下面则是主页内容,先只给几个图片 -->

 

<div>

    <img src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/image/622/244/178/1674887775582644.jpg"  class="lazy"  class=&#39;thum-img&#39;

    src=&#39;http://f.hiphotos.baidu.com/image/pic/item/80cb39dbb6fd5266cdb2ba16a718972bd4073612.jpg&#39; />

</div>

 

</body>

登入後複製

接著就是加入對應的樣式,要求modal預設是隱藏的,所以如下(為了可以較好的區分彈窗,所以加了背景色和邊框)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<style>

.modal {

    display: none;

    margin: auto;

    width: 80%;

    height: 80%;

    background-color: rgb(0, 0, 0, 0.89);

    z-index: 1;

    border: 1px solid rgb(255,255,255,1);

}

 

.modal>img {

    display: block;

    margin: auto;

    padding: 10%;

    max-width: 60%;

    max-height: 60%;

}

 

.thum-img {

    width: 200px;

    height: 200px;

    margin: auto;

    display: block;

    padding: 40px;

}

 

</style>

登入後複製

接下來就是點擊顯示大圖的邏輯了,借助js來實現,

1

2

3

4

5

6

7

8

9

10

11

12

13

<script>

    var modal = document.getElementById(&#39;modal&#39;);

    var bgImg = document.getElementById(&#39;bgImg&#39;);

    var thumImg = document.getElementById(&#39;thumImg&#39;);

    thumImg.onclick = function() {

        modal.style.display = &#39;block&#39;;

        bgImg.src = this.src;

    }

 

    bgImg.onclick = function() {

        modal.style.display = &#39;none&#39;;

    }

</script>

登入後複製

將上面的實現,組裝成一個html之後,直接測試查看,演示效果如下

純css怎麼實現點擊圖放大

雖然說上面的實現了我們預期的結果,但是有幾點卻不太滿意

  • 不是我們預期的彈窗效果,原圖被擠下去了
  • 彈窗中如果有個放大的動畫效果就更好了(正好可以用到之前學習的animation)
  • #對於圖強中有很多圖片時,點擊放大怎麼做

III. 進階

首先是希望是真的彈窗,不影響既有的佈局,則通常是設定position來做到, 如我們可以在modal外面再加一層,變成

1

2

3

4

5

<div style=&#39;position:fixed&#39;>

    <div class=&#39;modal&#39; id=&#39;modal&#39;>

        <img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/image/742/960/488/1674887791873102.jpg"  class="lazy"  id=&#39;bgImg&#39; / alt="純css怎麼實現點擊圖放大" >

    </div>

</div>

登入後複製

其次就是彈窗的樣式太醜,我們可以藉助之前學習的邊框陰影來實現美觀的彈出效果,

  • 改成圖片全部填滿背景
  • 背景顏色去掉,加上陰影,加上白色邊框

修改後的css如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

.modal {

    display: none;

    margin: auto;

    padding-top: 5%;

    width: 50%;

    height: 80%;

    z-index: 1;

    background-color: white;

}

 

.modal img {

    display: block;

    padding: 10px;

    margin: auto;

    max-width: 100%;

    max-height: 100%;

    box-shadow: 0 2px 6px rgb(0, 0, 0, 0.2), 0 10px 20px rgb(0, 0, 0, 0.2);

    border-radius: 12px;

    border: 1px solid white;

}

登入後複製

接下來考慮加入動畫,加上一個放大的效果

1

2

3

4

5

6

7

8

9

@keyframes zoom {

    from {transform: scale(0.1)}

    to {transform: scale(1)}

}

 

.modal img {

    animation-name: zoom;

    animation-duration: 0.6s;

}

登入後複製

接下來看示範效果如下

純css怎麼實現點擊圖放大

接下來就是需要把這個變成通用的方案,支持多重圖片的方式了,這個則主要是圖片點擊事件的修改了,將上面寫死的地方,稍微變通一下即可

純css怎麼實現點擊圖放大

IV. 原始碼

最後給出所有的原始碼

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>小灰灰css学习笔记</title>

<style>

#modal {

    display: none;

}

.modal {

    margin: auto;

    padding-top: 5%;

    width: 50%;

    height: 80%;

    z-index: 1;

}

 

.modal img {

    animation-name: zoom;

    animation-duration: 0.6s;

    display: block;

    padding: 10px;

    margin: auto;

    max-width: 100%;

    max-height: 100%;

    box-shadow: 0 2px 6px rgb(0, 0, 0, 0.2), 0 10px 20px rgb(0, 0, 0, 0.2);

    border-radius: 12px;

    border: 1px solid white;

}

 

@keyframes zoom {

    from {transform: scale(0.1)}

    to {transform: scale(1)}

}

 

.thum-img {

    float: left;

    width: 200px;

    height: 200px;

    margin: auto;

    display: block;

    padding: 40px;

}

</style>

    </head>

<body>

<!-- 先来实现弹窗 -->

<div style=&#39;position:fixed;width:100%;height:100%;background-color:rgb(0,0,0,0.65)&#39; id=&#39;modal&#39;>

<div class=&#39;modal&#39; id=&#39;modalw&#39;>

    <img  id=&#39;bgImg&#39; / alt="純css怎麼實現點擊圖放大" >

</div>

</div>

 

 

<!-- 下面则是主页内容,先只给几个图片 -->

 

<div>

    <img onclick=&#39;showBgImg(this)&#39; class=&#39;thum-img&#39;

    src=&#39;http://f.hiphotos.baidu.com/image/pic/item/80cb39dbb6fd5266cdb2ba16a718972bd4073612.jpg&#39; />

    <img  class=&#39;thum-img&#39; src=&#39;http://a.hiphotos.baidu.com/image/pic/item/e61190ef76c6a7ef5e886d03f1faaf51f3de666d.jpg&#39; onclick=&#39;showBgImg(this)&#39;/ alt="純css怎麼實現點擊圖放大" >

    <img  class=&#39;thum-img&#39; src=&#39;http://g.hiphotos.baidu.com/image/pic/item/730e0cf3d7ca7bcb747b4a5cb2096b63f624a845.jpg&#39; onclick=&#39;showBgImg(this)&#39;/ alt="純css怎麼實現點擊圖放大" >

    <img  class=&#39;thum-img&#39; src=&#39;http://c.hiphotos.baidu.com/image/pic/item/b21c8701a18b87d6657856e70c0828381f30fd14.jpg&#39; onclick=&#39;showBgImg(this)&#39;/ alt="純css怎麼實現點擊圖放大" >

    <img  class=&#39;thum-img&#39; src=&#39;https://raw.githubusercontent.com/liuyueyi/Source/master/img/info/blogInfoV2.png&#39; onclick=&#39;showBgImg(this)&#39;/ alt="純css怎麼實現點擊圖放大" >

</div>

 

<script>

    var modal = document.getElementById(&#39;modal&#39;);

    var bgImg = document.getElementById(&#39;bgImg&#39;);

 

 

    function showBgImg(e) {

        modal.style.display = &#39;block&#39;;

        bgImg.src = e.src;

    }

 

    bgImg.onclick = function() {

        modal.style.display = &#39;none&#39;;

    }

</script>

</body>

</html>

登入後複製
推薦學習:《css影片教學

以上是純css怎麼實現點擊圖放大的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vue中placeholder是什麼意思 vue中placeholder是什麼意思 May 07, 2024 am 09:57 AM

在 Vue.js 中,placeholder 屬性指定輸入元素的佔位符文本,當使用者未輸入內容時顯示,提供輸入提示或範例,提高表單可存取性。其用法為在輸入元素中設定 placeholder 屬性,並可使用 CSS 自訂外觀。最佳實踐包括與輸入相關、簡短清晰、避免預設文本,並考慮可訪問性。

js中span是什麼意思 js中span是什麼意思 May 06, 2024 am 11:42 AM

span 標籤可為文字新增樣式、屬性或行為,用於:新增樣式,如顏色、字體大小。設定屬性,如 id、class 等。關聯行為,如點擊、懸停等。標記文本,以便進一步處理或引用。

js中rem是什麼意思 js中rem是什麼意思 May 06, 2024 am 11:30 AM

CSS 中的 REM 是一種相對於根元素(html)字體大小的相對單位。它具有以下特點:相對根元素字體大小,不受父元素影響。當根元素字體大小改變時,使用 REM 的元素也會隨之調整。可用於任何 CSS 屬性。使用 REM 的優點包括:回應性:保持不同裝置和螢幕大小上的文字可讀性。一致性:確保整個網站字體大小一致。可擴充性:透過調整根元素字體大小輕鬆變更全域字體大小。

vue中引入圖片的方法 vue中引入圖片的方法 May 02, 2024 pm 10:48 PM

Vue 中引入圖片有五種方法:透過 URL、require 函數、靜態檔案、v-bind 指令和 CSS 背景圖片。可以在 Vue 的計算屬性或偵聽器中處理動態圖片,並使用打包工具優化圖片載入。確保路徑正確,否則會顯示載入錯誤。

js中什麼是節點 js中什麼是節點 May 07, 2024 pm 09:06 PM

節點是 JavaScript DOM 中表示 HTML 元素的實體。它們代表頁面中的特定元素,可用於存取和操作該元素。常見的節點類型包括元素節點、文字節點、註解節點和文件節點。透過 DOM 方法(如 getElementById()),可以存取節點並對其進行操作,包括修改屬性、新增/移除子節點、插入/替換節點和克隆節點。節點遍歷有助於在 DOM 結構中導航。節點在動態建立頁面內容、事件處理、動畫和資料綁定方面非常有用。

瀏覽器插件是什麼語言寫的 瀏覽器插件是什麼語言寫的 May 08, 2024 pm 09:36 PM

瀏覽器外掛程式通常使用以下語言編寫:前端語言:JavaScript、HTML、CSS後端語言:C++、Rust、WebAssembly其他語言:Python、Java

vscode怎麼設定未知屬性 vscode設定未知屬性方法 vscode怎麼設定未知屬性 vscode設定未知屬性方法 May 09, 2024 pm 02:43 PM

1.首先,打開左下角的設定圖標,點擊settings選項2.隨後,在跳轉的視窗中找到css欄位3.最後,將unknownproperties選單中的下拉選項改為error按鈕即可

vue中less檔案可以引入資料嗎 vue中less檔案可以引入資料嗎 May 07, 2024 pm 12:06 PM

是,Vue 中 Less 文件可以透過 CSS 變數和 Less 混入引入資料:建立 JSON 文件,包含資料。使用 @import 規則匯入 JSON 檔案。使用 CSS 變數或 Less 混入存取 JSON 資料。

See all articles