搜尋
首頁web前端css教學我通過在開源項目中修復一行CSS所學到的知識

What I Learned by Fixing One Line of CSS in an Open Source Project

在iPhone上瀏覽Svelte文檔時,我發現了一個明顯的UI錯誤。 REPL旋鈕的缺口完全不對勁。我一直想為開源項目做貢獻,我認為這是一個快速簡單的修復。事實證明,它不僅僅是更改一行CSS代碼那麼簡單。

複製、調試、設置本地環境既有趣、又困難,而且意義重大。

問題

我打開了瀏覽器開發者工具,以為會在手機視圖中看到同樣的問題。但是,錯誤消失了。現在這是一個非常棘手的CSS問題。

? 收穫

如果您在iOS上使用Chrome作為瀏覽器,您仍然使用的是Safari的渲染引擎。摘自維基百科:

Chrome使用iOS WebKit——這是Apple為其Safari瀏覽器開發的自己的移動渲染引擎和組件——因此它無法使用Google自己的V8 JavaScript引擎。

caniuse也對此進行了佐證,它在iPS Safari上提供了以下說明:

現在很清楚為什麼問題在我的機器上沒有出現,但在我的手機上卻出現了。不同的渲染引擎!

在本地重現問題

我下載了項目並在本地運行。我通過在模擬器以及我的實際iPhone上運行本地代碼來確認它仍然是一個問題。 macOS上的Safari提供了一種簡單的方法來打開每個實例的開發者工具。

這提供了與在瀏覽器中一樣的控制台訪問權限,但適用於iOS Safari。我不撒謊,Apple的開發者體驗非常棒(看到我做了什麼嗎??)。

我現在能夠在本地重現這個問題了。

? 收穫

在下載Svelte倉庫並查看了一些代碼後,我注意到UI和SVG是通過名為@sveltejs/site-kit的包引入的。很好,現在我需要我的site kit本地版本被拉入svelte/site,這樣我才能看到更改並調試問題。

我需要將Svelte的package.json中的node_modules指向我的site-kit本地副本。這聽起來像是一個符號鏈接。在查閱文檔沒有太多結果後,我在谷歌上搜索,偶然發現了npm-link。這讓我看到了我在做什麼!

我現在可以對site-kit進行本地更改,並看到它們反映在Svelte項目中。

解決問題

說真的,只需要更改一行代碼:

 <code>border: transparent;</code>

但是找到應該放置這行代碼的位置並不像你想像的那麼簡單。項目的源映射還有一些粗糙的地方,它顯示這個CSS來自Nav.svelte組件,而實際上它來自另一個文件。這將是為項目做貢獻的另一種好方法!

然後你四處搜索並了解到這一點正在被處理,你也會更多地了解它是如何完成的。現在所有東西在移動端和桌面端看起來都很棒。

回顧

最初只是一個簡單的單行代碼更改,卻變成了一段旅程。我不得不:

  • 運行項目和組件倉庫
  • 了解系統鏈接
  • 為site-kit的鏈接貢獻文檔
  • 了解不同的瀏覽器渲染引擎
  • 了解如何模擬iOS Safari瀏覽器
  • 了解如何訪問其調試器
  • 在源映射無法正常工作時找到問題
  • (最終)修復問題

自己動手時,你通常不會處理這樣的問題,或者需要構建一個需要建立心智模型並學習的大型複雜系統。你無法向維護者學習。最重要的是,你不會看到構建流行的技術產品所付出的所有努力。

當我向CSS-Tricks提交這個想法時,Chris說他最近也遇到了類似的情況。艱難的學習是持久的學習。擁抱掙扎。

永不止步

我從Svelte項目中獲取了另一個問題,現在我正在學習CSSStyleSheet,因為還有一個問題(我認為),關於Safari如何處理stylemanager.ts中的關鍵幀動畫。學習就這樣繼續沿著我日常工作中從未走過的道路前進。

當某些東西崩潰時,享受學習系統的過程。你將獲得寶貴的見解,了解為什麼該事物崩潰以及可以採取哪些措施來修復它。這是為開源項目做貢獻的巨大好處之一,也是我鼓勵你這樣做的原因。

以上是我通過在開源項目中修復一行CSS所學到的知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
網站應該在沒有JavaScript的情況下工作嗎?網站應該在沒有JavaScript的情況下工作嗎?Apr 17, 2025 am 09:27 AM

JS派對播客只是一個有趣的一集,他們通過分為兩組兩組來辯論這個經典問題。每個小組都被分配了

可訪問性和網絡性能不是功能,它們是基線可訪問性和網絡性能不是功能,它們是基線Apr 17, 2025 am 09:21 AM

本週,我一直在沉思網絡性能和可訪問性。一切始於伊桑·馬科特(Ethan Marcotte)關於可訪問性的好筆記

具有Netlify和Anymod的快速靜態站點具有Netlify和Anymod的快速靜態站點Apr 17, 2025 am 09:16 AM

在大約10分鐘內,我們&#039; ll設置了一個工作流程,使靜態站點變得簡單。

'關閉主線程”'關閉主線程”Apr 17, 2025 am 09:14 AM

JavaScript就是他們所謂的“單線線程”。正如布萊恩·巴伯(Brian Barbour)所說:

可掩蓋的圖標:PWA的Android自適應圖標可掩蓋的圖標:PWA的Android自適應圖標Apr 17, 2025 am 09:13 AM

有一個新的Web功能,稱為“蒙版”圖標,即將推出Firefox Preview和其他Web瀏覽器。這種新的圖標格式將使您的PWA在Android上具有自己的自適應圖標。

'訂閱播客”鏈接應在哪裡?'訂閱播客”鏈接應在哪裡?Apr 16, 2025 pm 12:04 PM

有一段時間,iTunes是播客中的大狗,因此,如果您將“訂閱播客”鏈接到喜歡:

瀏覽器引擎多樣性瀏覽器引擎多樣性Apr 16, 2025 pm 12:02 PM

當他們在2013年去Chrome時,我們失去了歌劇。與Edge今年早些時候也進行了同樣的交易。邁克·泰勒(Mike Taylor)稱這些變化為“減少

網絡共享的UX注意事項網絡共享的UX注意事項Apr 16, 2025 am 11:59 AM

從垃圾點擊誘餌網站到大多數出版物的最多,共享按鈕長期以來一直無處不在。然而,這些

See all articles

熱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.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

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

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),