前端基礎入門三大核心之HTML篇 —— SVG的viewBox、width和height:繪制矢量圖的魔法比例尺【含代碼示例】

前端基礎入門三大核心之HTML篇 —— SVG的viewBox、width和height:繪制矢量圖的魔法比例尺【含代碼示例】

    • 基本概念與作用
      • viewBox
      • width和height
    • 代碼示例與實踐
      • 基礎示例
      • 動態調整示例
    • 不同角度的使用思路
      • 保持比例縮放
      • 自動適應容器
    • 實際問題與解決方案
    • 結語與討論

在前端開發的奇幻世界里,SVG(Scalable Vector Graphics,可縮放矢量圖形)是一門古老而強大的魔法,它讓圖形在不同分辨率的屏幕上都能保持清晰無瑕。今天,我們將深潛SVG的核心,揭開 viewBoxwidthheight這三位神秘使者的面紗,了解它們如何協同工作,為你的設計帶來魔法般的縮放效果。

基本概念與作用

viewBox

  • 魔法范圍:viewBox定義了一個坐標系統,包含了SVG圖形的視圖范圍,格式為min-x min-y width height。它告訴瀏覽器圖形的實際尺寸和位置,無論外部如何縮放,圖形內部的比例保持不變。
  • 作用:保證矢量圖形的縮放不失真,適應不同大小的展示容器。

width和height

  • 畫布大小:width和height指定了SVG在頁面上的顯示寬度和高度,單位可以是像素、百分比或其他長度單位。
  • 作用:控制SVG圖形在頁面布局中的大小,與viewBox配合,實現圖形的自適應縮放。

代碼示例與實踐

基礎示例

<svg viewBox="0 0 100 100" width="200" height="200"><circle cx="50" cy="50" r="40" fill="blue"/>
</svg>
  • 說明:viewBox設置為0 0 100 100,表示SVG內容范圍是從(0,0)開始,寬高各100單位。
  • 效果:盡管SVG的畫布尺寸被放大到200x200像素,但圓圈依然保持了內部的比例,沒有變形。

動態調整示例

<svg viewBox="0 0 100 100" width="100%" height="auto"><rect x="10" y="10" width="80" height="80" fill="red"/>
</svg>
  • 說明:width設為100%,讓SVG寬度充滿父元素,height為auto自動調整保持比例。
  • 技巧:結合CSS媒體查詢,可以輕松實現響應式SVG布局。

不同角度的使用思路

保持比例縮放

<svg viewBox="0 0 300 150" width="100" height="50"><!-- 內部圖形 -->
</svg>
  • 思路:通過調整viewBox和width/height的比例,可以控制SVG的顯示大小同時保持內部元素比例不變。

自動適應容器

<svg viewBox="0 0 100 100" width="100%" preserveAspectRatio="xMidYMid meet"><!-- 內容 -->
</svg>
  • 技巧:使用preserveAspectRatio屬性控制縮放行為,xMidYMid meet保持圖形居中且盡可能填充容器。

實際問題與解決方案

問題:SVG在不同屏幕尺寸下顯示不一致。
排查思路

  1. 確認viewBox是否正確設定,確保包含所有圖形內容。
  2. 檢查width和height是否使用了相對單位或是否被CSS意外覆蓋。
  3. 利用開發者工具檢查元素樣式,觀察SVG及其容器的計算后的尺寸。

解決方案:使用百分比或max-width等相對單位,結合preserveAspectRatio屬性,確保SVG自適應不同屏幕。

結語與討論

SVG的viewBox、width和height,這三位魔法師聯手,為我們的網頁施加了適應性強、清晰度高的視覺魔法。掌握了它們的秘訣,無論是響應式設計還是高清大屏展示,都將游刃有余。在你的項目中,是否遇到過SVG縮放的有趣挑戰?或是有獨到的使用技巧? 歡迎在評論區分享你的故事,讓我們一起探索SVG的無限可能,讓魔法更加絢爛多彩!


歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。


推薦:DTcode7的博客首頁。
一個做過前端開發的產品經理,經歷過睿智產品的折磨導致脫發之后,勵志要翻身農奴把歌唱,一邊打入敵人內部一邊持續提升自己,為我們廣大開發同胞謀福祉,堅決抵制睿智產品折磨我們碼農兄弟!


【專欄導航】

  • 《微信小程序相關博客》:結合微信官方原生框架、uniapp等小程序框架,記錄請求、封裝、tabbar、UI組件的學習記錄和使用技巧等
  • 《Vue實戰相關博客》:詳細總結了常用UI庫elementUI的使用技巧以及Vue的學習之旅。
  • 《HTML網站開發相關博客》:以實戰為線素,逐步深入HTML開發各個環節,掌握web前端常用性能體驗優化思路,打造完整前端工作流,提升工程化編碼能力和思維能力。
  • 《前端基礎入門三大核心之html相關博客》:前端基礎入門三大核心之html板塊的內容,入坑前端或者輔助學習的必看知識。
  • 《前端基礎入門三大核心之JS相關博客》:前端JS是JavaScript語言在網頁開發中的應用,負責實現交互效果和動態內容。它與HTML和CSS并稱前端三劍客,共同構建用戶界面。通過操作DOM元素、響應事件、發起網絡請求等,JS使頁面能夠響應用戶行為,實現數據動態展示和頁面流暢跳轉,是現代Web開發的核心。
  • 《前端基礎入門三大核心之CSS相關博客》:介紹前端開發中遇到的CSS疑問和各種奇妙的CSS語法,同時收集精美的CSS效果代碼,用來豐富你的web網頁。
  • 《canvas繪圖相關博客》:Canvas是HTML5中用于繪制圖形的元素,通過JavaScript及其提供的繪圖API,開發者可以在網頁上繪制出各種復雜的圖形、動畫和圖像效果。Canvas提供了高度的靈活性和控制力,使得前端繪圖技術更加豐富和多樣化。
  • 《算法系列相關博客》:算法與數據結構學習總結,通過JS來編寫處理復雜有趣的算法問題,提升你的技術思維。
  • 《python相關博客》:Python,簡潔易學的編程語言,強大到足以應對各種應用場景,是編程新手的理想選擇,也是專業人士的得力工具。
  • 《sql數據庫相關博客》:SQL數據庫:高效管理數據的利器,學會SQL,輕松駕馭結構化數據,解鎖數據分析與挖掘的無限可能。
  • 《IT信息技術相關博客》:作為信息化人員所需要掌握的底層技術,涉及軟件開發、網絡建設、系統維護等領域的知識。
  • 《信息化技能面試寶典相關博客》:涉及信息化相關工作基礎知識和面試技巧,提升自我能力與面試通過率,擴展知識面。
  • 《前端開發習慣與小技巧相關博客》:羅列常用的開發工具使用技巧,如 Vscode快捷鍵操作、Git、CMD、游覽器控制臺等
  • 《AIGC相關博客》:AIGC、AI生產力工具的介紹,例如stable diffusion這種的AI繪畫工具安裝、使用、技巧等總結
  • 《photoshop相關博客》:基礎的PS學習記錄,含括PPI與DPI、物理像素dp、邏輯像素dip、矢量圖和位圖以及幀動畫等的學習總結
  • 《日常開發&辦公&生產【實用工具】分享相關博客》:分享介紹各種開發中、工作中、個人生產以及學習上的工具,豐富閱歷,給大家提供處理事情的更多角度,學習了解更多的便利工具,如Fiddler抓包、辦公快捷鍵、虛擬機VMware等工具。

吾輩才疏學淺,摹寫之作,恐有瑕疵。望諸君海涵賜教。望輕噴,嚶嚶嚶
非常期待和您一起在這個小小的網絡世界里共同探索、學習和成長。愿斯文對汝有所裨益,縱其簡陋未及淵博,亦足以略盡綿薄之力。倘若尚存闕漏,敬請不吝斧正,俾便精進!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14498.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14498.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14498.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為云之Zabbix監控平臺部署實踐

華為云之Zabbix監控平臺部署實踐 一、本次實踐介紹1.1 實踐環境簡介1.3 本次實踐完成目標 二、 相關服務介紹2.1 華為云ECS云服務器介紹2.2 Zabbix介紹 三、環境準備工作3.1 預置實驗環境3.2 查看預置環境信息 四、登錄華為云4.1 登錄華為云4.2 查看ECS狀態4.3 連接ECS彈性云服…

力扣HOT100 - 287. 尋找重復數

解題思路&#xff1a; 快慢指針 第一步&#xff0c;慢指針每次移動一步&#xff0c;快指針每次移動兩步&#xff0c;直到它們相遇。這一步保證了它們在環中相遇。 接下來&#xff0c;將其中一個指針&#xff08;快指針或慢指針&#xff09;重置到起點&#xff08;即數組的第一…

SpringBoot實現郵箱驗證碼

自行創建一個SpringBoot項目 導入SpringBoot所需要的郵箱驗證碼的包 <!--郵件發送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.1</version>…

前后端部署筆記

windows版&#xff1a; 如果傻唄公司讓用win電腦部署&#xff0c;類似于我們使用筆記本做局域網服務器&#xff0c;社內使用。 1.安裝win版的nginx、mysql、node、jdk等 2.nginx開機自啟參考Nginx配置及開機自啟動&#xff08;Windows環境&#xff09;_nginx開機自啟動 wind…

UPPAAL使用方法

UPPAAL使用方法 由于剛開始學習時間自動機及其使用方法&#xff0c;對UPPAAL使用不太熟悉&#xff0c;網上能找到的教程很少&#xff0c;摸索了很久終于成功實現一個小例子&#xff0c;所以記錄一下詳細教程。 這里用到的例子參考【UPPAAL學習筆記】1&#xff1a;基本使用示例…

專業級潤滑油,一站式批發服務

要為機械設備提供持久穩定的動力保障嗎&#xff1f;選擇我們的專業級潤滑油&#xff0c;讓您的設備運轉更順暢&#xff0c;效率更高。 我們專業從事潤滑油批發多年&#xff0c;以優質的產品、合理的價格和完善的服務贏得了廣大客戶的信賴。無論是汽車、機械還是工業設備&#x…

【Vue3】env環境變量的配置和使用(區分cli和vite)

原文作者&#xff1a;我輩李想 版權聲明&#xff1a;文章原創&#xff0c;轉載時請務必加上原文超鏈接、作者信息和本聲明。 文章目錄 前言一、env文件二、vue3cli加載env1..env配置2..dev配置&#xff08;其他環境參考&#xff09;3.package.json文件4.使用 三、vue3vite加載e…

【html5】03-新表單元素及屬性

目錄 1 引言 2 智能表單控件-type 3 表單屬性 form input 5 答疑--解決required自定義提示信息 1 引言 HTML5引入了一系列新的表單輸入類型&#xff0c;如email、url、number、range、date、time、datetime-local、month、week、search、color和tel等。這些新類型增強了表…

FFmpeg源碼:bytestream_get_byte函數解析

一、引言 FFmpeg源碼中經常使用到bytestream_get_byte這個函數&#xff0c;比如使用FFmpeg對BMP圖片進行解析&#xff0c;其源碼會調用函數bmp_decode_frame&#xff0c;而該函數內部會通過bytestream_get_byte讀取BMP 的header。本文講解函數bytestream_get_byte的作用和內部…

Spark SQL 中DataFrame DSL的使用

在上一篇文章中已經大致說明了DataFrame APi,下面我們具體介紹DataFrame DSL的使用。DataFrame DSL是一種命令式編寫Spark SQL的方式&#xff0c;使用的是一種類sql的風格語法。 文章鏈接&#xff1a; 一、單詞統計案例引入 import org.apache.spark.sql.{DataFrame, SaveMod…

在SpringBoot中添加自定義增強SpringEvent事件組件

場景說明&#xff1a;在使用SpringBoot時&#xff0c;總是要添加一大堆自定義事件&#xff0c;實現ApplicationEvent&#xff0c;來實現事件發送。 這樣寫代碼量非常大。為了方便和避免出錯&#xff0c;封裝自定義的模塊&#xff0c;快速實現泛型中調用SpringEvent實現事件。省…

Xinstall助力實現App間直接跳轉,提升用戶體驗

在移動互聯網時代&#xff0c;App已成為我們日常生活中不可或缺的一部分。然而&#xff0c;在使用各類App時&#xff0c;我們經常會遇到需要在不同App之間切換的情況&#xff0c;這時如果能夠直接跳轉&#xff0c;將會大大提升用戶體驗。而Xinstall正是這樣一款能夠幫助開發者實…

OpenCV 獲取 RTSP 攝像頭視頻流保存至本地

介紹 Java OpenCV 是一個強大的開源計算機視覺庫&#xff0c;它提供了豐富的圖像處理和分析功能&#xff0c;越來越多的應用需要使用攝像頭來獲取實時視頻流進行處理和分析。 在 Java 中使用 OpenCV 打開攝像頭的基本步驟如下&#xff1a; 確保已經安裝了OpenCV庫使用 OpenC…

Raylib 繪制自定義字體的一種套路

Raylib 繪制自定義字體是真的難搞。我的需求是程序可以加載多種自定義字體&#xff0c;英文中文的都有。 我調試了很久成功了&#xff01; 很有用的參考&#xff0c;建議先看一遍&#xff1a; 瞿華&#xff1a;raylib繪制中文內容 個人筆記&#xff5c;Raylib 的字體使用 - …

W801 實現獲取天氣情況

看了小安派&#xff08;AiPi-Eyes 天氣站&#xff09;的源碼&#xff0c;感覺用W801也可以實現。 一、部分源碼 main.c #include "wm_include.h" #include "Lcd_Driver.h"void UserMain(void) {printf("\n user task \n");Lcd_Init();Lcd_Clea…

MySQL主從復制(五):讀寫分離

一主多從架構主要應用場景&#xff1a;讀寫分離。讀寫分離的主要目標是分攤主庫的壓力。 讀寫分離架構 讀寫分離架構一 架構一結構圖&#xff1a; 這種結構模式下&#xff0c;一般會把數據庫的連接信息放在客戶端的連接層&#xff0c;由客戶端主動做負載均衡。也就是說由客戶…

RabbitMQ 消息隊列安裝及入門

市面常見消息隊列中間件對比 技術名稱吞吐量 /IO/并發時效性&#xff08;類似延遲&#xff09;消息到達時間可用性可靠性優勢應用場景activemq萬級高高高簡單易學中小型企業、項目rabbitmq萬級極高&#xff08;微秒&#xff09;高極高生態好&#xff08;基本什么語言都支持&am…

為什么MySQL推薦使用utf8mb4代替utf8?

前言 在MySQL數據庫的世界里&#xff0c;字符集的選擇直接影響著數據的存儲和檢索方式&#xff0c;尤其是對于多語言支持至關重要的應用而言。近年來&#xff0c;utf8mb4字符集逐漸成為MySQL中存儲Unicode字符的標準選擇&#xff0c;逐步取代了傳統的utf8字符集。本文將詳細探…

leetcode124 二叉樹中的最大路徑和-dp

題目 二叉樹中的 路徑 被定義為一條節點序列&#xff0c;序列中每對相鄰節點之間都存在一條邊。同一個節點在一條路徑序列中 至多出現一次 。該路徑 至少包含一個 節點&#xff0c;且不一定經過根節點。 路徑和 是路徑中各節點值的總和。 給你一個二叉樹的根節點 root &…

【Crypto】Rabbit

文章目錄 一、Rabbit解題感悟 一、Rabbit 題目提示很明顯是Rabbit加密&#xff0c;直接解 小小flag&#xff0c;拿下&#xff01; 解題感悟 提示的太明顯了