幾週前,我偶然發現了Mikael Ainalem的這種很酷的彈出效果。它在CSS中展示了剪輯路徑:path(),它在大多數現代瀏覽器中都得到了適當的支持。我想自己挖掘它,以更好地了解它的工作原理。但是在此過程中,我發現了剪輯路徑的一些問題:path();並結束了在本文中找到我想與您一起瀏覽的另一種方法。
如果您尚未使用剪輯路徑或不熟悉它,它基本上允許我們根據剪輯路徑為元素指定顯示區域,並隱藏落在夾子路徑外的元素的部分。
剪輯路徑的可能值包括圓,橢圓和多邊形,將用例限制為這些特定形狀。這是新的路徑值所在的地方 - 它使我們能夠使用更靈活的SVG路徑來創建超出基本形狀的各種剪輯路徑。
讓我們來了解有關剪輯路徑的知識,並開始致力於懸停效果。使人的前景圖像的基本思想似乎是從五顏六色的背景中彈出的,當元素懸停時大小的規模。一個重要的細節是前景圖像動畫(擴展和移動)如何獨立於背景圖像動畫(僅擴展)。
這種效果看起來很酷,但是路徑值存在一些問題。對於初學者來說,儘管我們提到支持通常是好的,但它不是很好,並且在撰寫本文時徘徊了約82%的覆蓋範圍。因此,請記住,目前移動支持僅限於Chrome和Safari。
除了支持外,路徑的更大,更奇怪的問題是,它目前僅適用於像素值,這意味著它沒有響應。例如,假設我們放大了頁面。馬上,路徑形狀開始切斷。
這嚴重限制了夾子路徑的用例:path(),因為它只能在固定尺寸的元素上使用。多年來,響應式Web設計一直是廣泛接受的標準,因此看到不遵循原則並專門使用像素單元的新CSS屬性很奇怪。
我們要做的就是使用標準,廣泛支持的CSS技術重新創建這種效果,以便它不僅有效,而且確實具有響應速度。
棘手的部分
我們希望任何溢出剪貼路徑的東西只能在圖像的頂部可見。我們不能使用標準CSS溢出屬性,因為它會影響頂部和底部。
那麼,除了溢出和剪輯路徑外,我們還有什麼選擇?好吧,讓我們在SVG本身中使用
SVG 元素
svg
讓我們從設置我們的SVG元素開始。我使用Inkscape創建了基本的SVG標記和剪裁路徑,只是為了使自己變得容易。完成此操作後,我通過添加自己的類屬性來更新標記。
<svg xmlns="“" http: viewbox="“"> <defs> <clippath clippathunits="“" userpaceonuse> </clippath> <clippath clippathunits="“" userpaceonuse> </clippath> </defs> <g clip url transform="“" transfate> <image clip-path="“" url width="“" height="“" x="“" y="“" href="%E2%80%9C" ... transform="“" translate></image> </g> </svg>
此標記可以很容易地用於其他背景圖像和前景圖像。我們只需要在圖像元素內部的HREF屬性中替換URL即可。
現在,我們可以在CSS中進行懸停動畫。我們可以通過轉換和過渡來度過難關,確保前景很好地集中,然後在懸停時進行縮放和移動事物。
。圖像 { 變換:比例尺(0.9,0.9); 過渡:變換0.2s易於啟動; } .image__foreground { 轉化原始:50%50%; 變換:translatey(4px)比例(1,1); 過渡:變換0.2s易於啟動; } 圖像:懸停{ 變換:比例尺(1,1); } .Image:Hover .Image__foreground { 變換:translatey(-7px)比例(1.05,1.05); }
這是上述HTML和CSS代碼的結果。嘗試調整屏幕大小並更改SVG元素的尺寸,以查看效果如何隨屏幕尺寸縮放。
這看起來很棒!但是,我們還沒有完成。我們仍然需要解決一些問題,因為我們已經將標記從HTML圖像元素更改為SVG元素。
SEO和可訪問性
內聯SVG元素不會被搜索爬網索引。如果SVG元素是內容的重要組成部分,則您的頁面SEO可能會受到打擊,因為這些圖像可能不會被拾取。
我們需要其他標記,該標記使用CSS隱藏的常規元素。以這種方式聲明的圖像會被爬網機自動拾取,我們可以在圖像站點地圖中提供指向這些圖像的鏈接,以確保爬網設法設法找到它們。我們正在使用加載=“懶惰”,允許瀏覽器決定是否應推遲加載圖像。
我們將把兩個元素都包含在一個
<figud> <svg xmlns="“" http: viewbox="“"> </svg> <img src="%E2%80%9C" ... alt="“" loading="“" lazy> </figud>
我們還需要解決此效果的一些可訪問性問題。更具體地說,我們需要為喜歡瀏覽網絡的用戶而沒有動畫和使用屏幕讀取器瀏覽Web的用戶進行改進。
使SVG元素可訪問需要大量其他標記。此外,如果我們要刪除過渡,我們將不得不覆蓋相當多的CSS屬性,如果我們的選擇器特異性不一致,可能會導致問題。幸運的是,我們新添加的常規圖像具有出色的可訪問性功能,可以輕鬆地作為無動畫瀏覽網絡的用戶的替代品。
<figud> <svg xmlns="“" http: viewbox="“" aria true> </svg> <img src="%E2%80%9C" ... alt="“" loading="“" lazy> </figud>
我們需要通過添加aria-hidden =“ true”來隱藏輔助設備中的SVG元素,我們需要更新我們的CSS,以包括偏愛的動態媒體查詢。我們包含在沒有減少運動偏好的情況下隱藏用戶的後備圖像,同時將其用於屏幕讀取器等輔助設備。
@Media(偏愛降低:無偏愛){ .Fallback-image { 剪輯:rect(0 0 0 0); 剪輯路徑:插圖(50%); 身高:1px; 溢出:隱藏; 位置:絕對; 白色空間:nowrap; 寬度:1px; } } @Media(預先減少的動作){ 。圖像 { 顯示:無; } }
這是改進後的結果:
請注意,這些改進不會改變沒有偏愛動機偏好集或不使用屏幕讀取器的用戶的效果和行為。
那是一個包裹
開發人員對夾子路徑CSS屬性和新樣式可能性的路徑選項感到興奮,但是許多人感到不滿以發現這些值僅支持像素值。這不僅意味著該功能沒有響應,而且嚴重限制了我們要使用的用例的數量。
我們將有趣的圖像彈出懸停效果轉換為使用剪輯路徑:路徑為SVG元素,該元素利用
感謝您抽出寶貴的時間閱讀本文!讓我知道這種方法是否使您了解如何實現自己的效果,以及您是否對如何以不同的方式處理這種效果有任何建議。
以上是讓我們使用SVG剪輯路徑創建圖像彈出效果的詳細內容。更多資訊請關注PHP中文網其他相關文章!

React生態系統為我們提供了許多庫,所有庫都集中在拖放的相互作用上。我們有反應,反應,可愛dnd,

我可以說我經常使用背景折疊。 IT Wager IT幾乎從未在日常CSS工作中使用。但是在斯特凡·朱迪斯(Stefan Judis)的帖子中,我想起了它,

使用RequestAnimationFrame進行動畫化應該很容易,但是如果您還沒有徹底閱讀React的文檔,那麼您可能會遇到一些事情

聽著,我不是GraphQL專家,但我確實喜歡與之合作。作為前端開發人員,它向我曝光數據的方式非常酷。它就像一個菜單


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

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

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中