」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 點擊顯示圖片的技巧及方法

點擊顯示圖片的技巧及方法

發佈於2025-04-16
瀏覽:137

網絡上的大多數圖像都是多餘的。如果我可能有點混蛋,那麼其中99%的人甚至根本沒有幫助(儘管有極少數例外)。那是因為圖像通常不補充他們應該支持的文本,而是用戶,將永遠加載和炸毀像某種績效稅之類的數據上限。 值得慶幸的是,這主要是一個設計問題,因為使圖像表現效果和更易於用戶友好比以前要容易得多。我們具有更好的圖像格式,例如Webp(也許很快,JPEG XL)。我們擁有反應式圖像的魔力。那裡有很多很棒的工具,例如ImageOptim,以及Addy Osmani的新書等資源。

儘管我最喜歡改善圖像性能的方法是大量加載:

此圖像僅在用戶向下滾動頁面時加載,因此用戶可以看到它 - 從初始頁面加載中將其刪除,這真是太好了!使網頁LightningFast的初始負載很重要。

Image description

所以!如果我們可以在網站上顯示圖像,但是只有在單擊或輕拍它們後才顯示圖像怎麼辦?如果我們可以在單擊時展示佔位符並將其交換為真實圖像,那不是很整潔嗎?這樣的東西:

好吧,我在這裡有兩個想法,即如何構建這個小伙子(黃金規則是,從來沒有一種方法可以在網絡上構建任何東西)。 方法#1:使用點擊顯示圖片的技巧及方法沒有SRC屬性 我們可以刪除點擊顯示圖片的技巧及方法標籤的SRC屬性以隱藏圖像。然後,我們可以將映像文件放在屬性中,例如data-src之類的東西,例如:

“熱氣球的照片,由usab

默認情況下,大多數瀏覽器都會顯示您可能熟悉的損壞的圖像圖標:

好的,所以它可以訪問。我猜?您可以自動看到屏幕上呈現的Alt標籤,但是使用JavaScript的輕段,我們可以將SRC與該屬性交換:

現在我們可以添加一些樣式,ugh,哦,不:

Photograph of hot air balloons by Musab Al Rawahi. 144kb

。在某些瀏覽器中,當圖像未加載時,底部會有一個微小的損壞圖像圖標。這裡的問題在於,瀏覽器並沒有給您一種使用CSS刪除損壞的圖像圖標的方法(無論如何我們可能不應該被允許)。為Alt文本設計了造型,這有點煩人。但是,如果我們完全刪除Alt屬性,則損壞的映像圖標消失了,儘管這使得無JavaScript的點擊顯示圖片的技巧及方法無法使用。因此,刪除alt文本是不做的。

如我所說:

ugh
document.querySelectorAll("img").forEach((item) => {
  item.addEventListener("click", (event) => {
    const image = event.target.getAttribute("data-src");
    event.target.setAttribute("src", image);
  });
});
方法#2:使用鏈接來創建圖像

我們擁有的另一個選項是從謙虛的超鏈接開始,例如:

Musab al Rawahi的熱氣球照片。 144KB

哪個,是的,還沒有什麼明智的事情 - 這只會呈現到圖像的鏈接:

在可訪問性方面起作用,對嗎?如果我們沒有任何JavaScript,那麼我們所擁有的只是人們可以選擇單擊的鏈接。從性能方面,它的速度不能比純文本快得多!

,但是從這裡,我們可以訪問javaScript以阻止鏈接在單擊上加載,抓住該鏈接中的href屬性,創建一個映像元素,最後,將圖像扔到頁面上並刪除舊鏈接:

我們可能可以為此佔位符鏈接設計,以使其看起來比下面的鏈接好一些。但這只是一個例子。繼續並單擊鏈接再次加載圖像:

,你有它!這不是開創性的,或者我敢肯定有人在某個時候或其他方面做到了這一點。但是,如果我們想對第一個油漆和初始負載以外的性能非常激進,那麼我認為這是一個很好的解決方案。如果我們正在製作僅文本網站,那麼我認為這絕對是必要的。
Photograph of hot air balloons by Musab Al Rawahi. 144kb
最新教學 更多>
  • 在GO中構造SQL查詢時,如何安全地加入文本和值?
    在GO中構造SQL查詢時,如何安全地加入文本和值?
    在go中構造文本sql查詢時,在go sql queries 中,在使用conting and contement和contement consem per時,尤其是在使用integer per當per當per時,per per per當per. 在GO中實現這一目標的慣用方法是使用fmt.spr...
    程式設計 發佈於2025-07-18
  • Python高效去除文本中HTML標籤方法
    Python高效去除文本中HTML標籤方法
    在Python中剝離HTML標籤,以獲取原始的文本表示Achieving Text-Only Extraction with Python's MLStripperTo streamline the stripping process, the Python standard librar...
    程式設計 發佈於2025-07-18
  • 如何解決AppEngine中“無法猜測文件類型,使用application/octet-stream...”錯誤?
    如何解決AppEngine中“無法猜測文件類型,使用application/octet-stream...”錯誤?
    appEngine靜態文件mime type override ,靜態文件處理程序有時可以覆蓋正確的mime類型,在錯誤消息中導致錯誤消息:“無法猜測mimeType for for file for file for [File]。 application/application/octet...
    程式設計 發佈於2025-07-18
  • Go語言如何動態發現導出包類型?
    Go語言如何動態發現導出包類型?
    與反射軟件包中的有限類型的發現能力相反,本文探索了替代方法,探索了在Runruntime。 go import( “ FMT” “去/進口商” ) func main(){ pkg,err:= incorter.default()。導入(“ time”) 如果er...
    程式設計 發佈於2025-07-18
  • 編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    錯誤:“ usr/bin/ld:找不到-l “ 此錯誤表明鏈接器在鏈接您的可執行文件時無法找到指定的庫。為了解決此問題,我們將深入研究如何指定庫路徑並將鏈接引導到正確位置的詳細信息。 添加庫搜索路徑的一個可能的原因是,此錯誤是您的makefile中缺少庫搜索路徑。要解決它,您可以在鏈接器命令中添...
    程式設計 發佈於2025-07-18
  • 如何在無序集合中為元組實現通用哈希功能?
    如何在無序集合中為元組實現通用哈希功能?
    在未訂購的集合中的元素要糾正此問題,一種方法是手動為特定元組類型定義哈希函數,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    程式設計 發佈於2025-07-18
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-07-18
  • 如何同步迭代並從PHP中的兩個等級陣列打印值?
    如何同步迭代並從PHP中的兩個等級陣列打印值?
    同步的迭代和打印值來自相同大小的兩個數組使用兩個數組相等大小的selectbox時,一個包含country代碼的數組,另一個包含鄉村代碼,另一個包含其相應名稱的數組,可能會因不當提供了exply for for for the uncore for the forsion for for ytry...
    程式設計 發佈於2025-07-18
  • 如何簡化PHP中的JSON解析以獲取多維陣列?
    如何簡化PHP中的JSON解析以獲取多維陣列?
    php 試圖在PHP中解析JSON數據的JSON可能具有挑戰性,尤其是在處理多維數組時。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    程式設計 發佈於2025-07-18
  • 如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求模擬瀏覽器行為,以及偽造的用戶代理提供了一個用戶 - 代理標頭一個有效方法是提供有效的用戶式header,以提供有效的用戶 - 設置,該標題可以通過browser和Acterner Systems the equestersystermery和操作系統。通過模仿像Chro...
    程式設計 發佈於2025-07-18
  • C++中如何將獨占指針作為函數或構造函數參數傳遞?
    C++中如何將獨占指針作為函數或構造函數參數傳遞?
    在構造函數和函數中將唯一的指數管理為參數 unique pointers( unique_ptr [2啟示。通過值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法將唯一指針的所有權轉移到函數/對象。指針的內容被移至功能中,在操作...
    程式設計 發佈於2025-07-18
  • CSS強類型語言解析
    CSS強類型語言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    程式設計 發佈於2025-07-18
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    Transform Pandas DataFrame Column to DateTime FormatScenario:Data within a Pandas DataFrame often exists in various formats, including strings.使用時間數據時...
    程式設計 發佈於2025-07-18
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,將常數列添加到Spark DataFrame,該列具有適用於所有行的任意值的Spark DataFrame,可以通過多種方式實現。使用文字值(SPARK 1.3)在嘗試提供直接值時,用於此問題時,旨在為此目的的column方法可能會導致錯誤。 df.withCo...
    程式設計 發佈於2025-07-18
  • 如何使用PHP將斑點(圖像)正確插入MySQL?
    如何使用PHP將斑點(圖像)正確插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call fil...
    程式設計 發佈於2025-07-18

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3