目錄
棘手的部分
SEO和可訪問性
那是一個包裹
首頁 web前端 css教學 讓我們使用SVG剪輯路徑創建圖像彈出效果

讓我們使用SVG剪輯路徑創建圖像彈出效果

Mar 25, 2025 am 10:12 AM

讓我們使用SVG剪輯路徑創建圖像彈出效果

幾週前,我偶然發現了Mikael Ainalem的這種很酷的彈出效果。它在CSS中展示了剪輯路徑:path(),它在大多數現代瀏覽器中都得到了適當的支持。我想自己挖掘它,以更好地了解它的工作原理。但是在此過程中,我發現了剪輯路徑的一些問題:path();並結束了在本文中找到我想與您一起瀏覽的另一種方法。

如果您尚未使用剪輯路徑或不熟悉它,它基本上允許我們根據剪輯路徑為元素指定顯示區域,並隱藏落在夾子路徑外的元素的部分。

剪輯路徑的可能值包括圓,橢圓和多邊形,將用例限制為這些特定形狀。這是新的路徑值所在的地方 - 它使我們能夠使用更靈活的SVG路徑來創建超出基本形狀的各種剪輯路徑。

讓我們來了解有關剪輯路徑的知識,並開始致力於懸停效果。使人的前景圖像的基本思想似乎是從五顏六色的背景中彈出的,當元素懸停時大小的規模。一個重要的細節是前景圖像動畫(擴展和移動)如何獨立於背景圖像動畫(僅擴展)。

這種效果看起來很酷,但是路徑值存在一些問題。對於初學者來說,儘管我們提到支持通常是好的,但它不是很好,並且在撰寫本文時徘徊了約82%的覆蓋範圍。因此,請記住,目前移動支持僅限於Chrome和Safari。

除了支持外,路徑的更大,更奇怪的問題是,它目前僅適用於像素值,這意味著它沒有響應。例如,假設我們放大了頁面。馬上,路徑形狀開始切斷。

這嚴重限制了夾子路徑的用例:path(),因為它只能在固定尺寸的元素上使用。多年來,響應式Web設計一直是廣泛接受的標準,因此看到不遵循原則並專門使用像素單元的新CSS屬性很奇怪。

我們要做的就是使用標準,廣泛支持的CSS技術重新創建這種效果,以便它不僅有效,而且確實具有響應速度。

棘手的部分

我們希望任何溢出剪貼路徑的東西只能在圖像的頂部可見。我們不能使用標準CSS溢出屬性,因為它會影響頂部和底部。

那麼,除了溢出和剪輯路徑外,我們還有什麼選擇?好吧,讓我們在SVG本身中使用是一種SVG屬性,它與新發行的和無反應的剪輯路徑:路徑不同。

SVG 元素

svg 和元素適應了SVG元素的坐標系,因此它們可以響應開箱即用。隨著SVG元素的縮放,其坐標係也正在縮放,並根據涵蓋廣泛可能的用例的各種屬性維持其比例。作為另外的好處,在SVG上使用CSS中使用夾式路徑具有95%的瀏覽器支持,與夾子路徑相比,它增加了13%。

讓我們從設置我們的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隱藏的常規讓我們使用SVG剪輯路徑創建圖像彈出效果元素。以這種方式聲明的圖像會被爬網機自動拾取,我們可以在圖像站點地圖中提供指向這些圖像的鏈接,以確保爬網設法設法找到它們。我們正在使用加載=“懶惰”,允許瀏覽器決定是否應推遲加載圖像。

我們將把兩個元素都包含在一個元素中,以便我們標記反映這兩個圖像之間的關係,並將它們組合在一起:

 <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元素的響應能力來實現同一元素。但是這樣做,我們引入了一些SEO和可訪問性問題,我們設法處理了一些額外的標記和後備圖像。

感謝您抽出寶貴的時間閱讀本文!讓我知道這種方法是否使您了解如何實現自己的效果,以及您是否對如何以不同的方式處理這種效果有任何建議。

以上是讓我們使用SVG剪輯路徑創建圖像彈出效果的詳細內容。更多資訊請關注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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

如何通過CSS選擇第一個類名為item的子元素? 如何通過CSS選擇第一個類名為item的子元素? Apr 05, 2025 pm 11:24 PM

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? 為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? Apr 05, 2025 pm 05:51 PM

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? 在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? Apr 05, 2025 pm 10:21 PM

在前端開發中如何實現類似Windows...

我們如何創建一個在SVG中生成格子呢模式的靜態站點 我們如何創建一個在SVG中生成格子呢模式的靜態站點 Apr 09, 2025 am 11:29 AM

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tar​​tanify.com上,我們收集了5,000多個格子呢

See all articles