目录
问题
? 收获
在本地重现问题
解决问题
回顾
永不止步
首页 web前端 css教程 我通过在开源项目中修复一行CSS所学到的知识

我通过在开源项目中修复一行CSS所学到的知识

Apr 03, 2025 am 10:52 AM

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

热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)

带有粘性定位的堆叠卡和一点点的杂物 带有粘性定位的堆叠卡和一点点的杂物 Apr 03, 2025 am 10:30 AM

前几天,我发现了科里·金尼文(Corey Ginnivan)网站上的这一点,当您滚动时,彼此之间的卡片堆放集。

Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

如何使用HTML,CSS和JavaScript创建动画倒计时计时器 如何使用HTML,CSS和JavaScript创建动画倒计时计时器 Apr 11, 2025 am 11:29 AM

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? 为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? Apr 05, 2025 pm 05:51 PM

关于Flex布局中紫色斜线区域的疑问在使用Flex布局时,你可能会遇到一些令人困惑的现象,比如在开发者工具(d...

如何通过CSS选择第一个类名为item的子元素? 如何通过CSS选择第一个类名为item的子元素? Apr 05, 2025 pm 11:24 PM

在元素个数不固定的情况下如何通过CSS选择第一个指定类名的子元素在处理HTML结构时,常常会遇到元素个数不�...

HTML数据属性指南 HTML数据属性指南 Apr 11, 2025 am 11:50 AM

您想了解的有关HTML,CSS和JavaScript中数据属性的所有信息。

使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...

See all articles