你可以学任何东西,但你不能学所有东西 🙃
所以接受这一点,并专注于对你重要的东西
— Una Kravets 👩🏻💻 (@Una) 2017 年 9 月 1 日
Una Kravets 绝对正确。在现代 CSS 开发中,有太多东西要学。对于今天刚开始学习的人来说,很难知道从哪里开始。
以下是我希望当初开始学习的时候就知道的一些事。
1. 不要低估 CSS
它看起来很简单。毕竟,它只是一组规则,用于选择元素并根据一组属性和值修改它。
CSS 就是这样,但它远不止于此!
一个成功的 CSS 项目需要最完美的架构。写得不好的 CSS 非常脆弱,而且很快就会变得难以维护。学习如何组织代码至关重要,以便创建具有长生命周期的可维护结构。
但即使是一个优秀的代码库也必须处理大量的设备、屏幕尺寸、功能和用户偏好。更不用说可访问性、国际化和浏览器支持了!
CSS 就像一只小熊:可爱无害,但随着它长大,它会把你吃掉。
- 在编写和交付代码之前学习如何阅读代码。
- 你有责任跟上最佳实践。 MDN、W3C、A List Apart 和 CSS-Tricks 是你的真理之源。
- 网络没有固定的形状;每个设备都是不同的。拥抱多样性,了解我们所处的环境。
2. 分享和参与
分享非常重要!我多么希望有人在我刚开始的时候告诉我这一点。我花了十年才明白分享的价值;当我意识到这一点的时候,它彻底改变了我看待工作和与他人合作的方式。
如果你周围都是优秀的开发者,你就会成为一个更好的开发者,所以参与开源项目吧。CSS 社区充满了善良而慷慨的开发者。越早越好。
分享你所学到的所有东西。过程和结果一样重要;即使是最微不足道的事情也可能对其他人产生影响。
- 学习 Git。 Git 是开源的语言,你肯定想成为其中的一部分。
- 参与一个开源项目。
- 分享!写博客、文档或推文;在聚会和会议上发言。
- 找一个责任伙伴,一个会鼓励你持续分享的人。
3. 选择合适的工具
你的代码编辑器应该是你思维的延伸。
你使用的是 Atom、VSCode 还是传统的 Vim 并不重要;你越能根据自己的思维方式来塑造工具,你就会成为一个越优秀的开发者。你不仅会提高速度,而且还会拥有不间断的思维线,从而产生流畅的想法。
终端是你的朋友。
作为一名 CSS 开发者,除了编写 CSS 本身,还有很多其他事情要做。构建代码、编译、代码规范检查、格式化和浏览器实时刷新只是你日常工作中要处理的一部分。
- 研究哪种 IDE 最适合你。有一些高性能的文本编辑器,比如 Vim,或者更易于使用的选项,比如 Atom 或 VSCode.
- 尽早学会使用终端并学习 CLI。短篇书籍“Working the command line”是一个很好的起点。
4. 了解浏览器
浏览器不仅是你的画布,还是一个强大的调试工具,可以用来调试代码、测试性能以及从他人那里学习。
学习浏览器如何渲染你的代码是一个开眼界的体验,它会将你的编码技能提升到一个新的水平。
每个浏览器都是不同的;了解这些差异并接受它们。爱它们所是的一切。(是的,即使是 IE)。
- 花时间查看一下调试器。
- 你无法拥有所有设备;获取一个 BrowserStack 或 CrossBrowserTesting 账户,这很值得。
- 安装所有你能安装的浏览器,并学习它们是如何渲染你的代码的。
5. 学习编写可维护的 CSS
这可能需要你花上几年时间,但如果 CSS 开发者只应该拥有一种技能,那就是编写可维护的结构。
这意味着要确切地了解级联、盒模型和特异性是如何工作的。掌握 CSS 架构模型,了解它们的优缺点以及如何实现它们。
请记住,模块化架构会带来独立的模块、良好的性能、可访问的结构和响应式组件(即:CSS 幸福)。
- 学习 CSS 架构,跟上趋势,并 **有自己的观点!**
- 关注那些为 CSS 道路铺平道路的人,比如 Harry Roberts、Una Kravets、Brad Frost、Ben Frain、Sara Soueidan、Chris Coyier、Eric Meyer、Jen Simmons、Rachel Andrew 以及其他许多人。
未来一片光明
现代 CSS 太棒了。它的未来更加美好。我喜欢 CSS,并享受我花在编码上的每一秒钟。
如果你需要帮助,你可以 联系我,或者可能是本文中提到的任何 CSS 开发者。你可能会惊讶于 CSS 社区的善良和慷慨。
你对我的建议有什么看法?你还有什么建议吗?请在评论中告诉我你的想法。
这一点还没提
哈哈,很喜欢!
我们都经历过,对吧?
我开始编写 CSS 时希望知道的
盒模型是如何工作的
absolute
/relative
如何工作盒模型是如何工作的
盒模型是如何工作的
vertical-align: bottom
绝对!了解盒模型的工作原理是一种开眼界的体验。我还想补充一下特异性和级联。
还有
z-index 是如何工作的
盒模型是如何工作的
我以为我知道 relative 和 absolute 是如何工作的,然后我发现了
position: static, relative, fixed, absolute,以及它们是如何依赖于它们的父/祖先元素的。非常有用,现在感觉像是揭开了幕后!
我也没有意识到“position”是决定组件如何在彼此之上渲染(即层叠上下文)的主要因素之一。
通常是自上而下,然后是负 z-index、非定位、浮动非定位、内联非定位、定位元素 + z-index auto/zero、正 z-index(正 z-index 会创建一个新的堆栈,并且该过程会在该堆栈内重复!!——这是一个陷阱)
https://tympanus.net/codrops/css_reference/z-index/
另一个需要添加到您的 CSS 铺路者列表中的声音:Adam Morse,http://mrmrs.cc/,负责 http://tachyons.io/.
Vim、vscode 和 atom 不是 IDE。它们是代码编辑器,适用于不完整的图灵机 CSS,但称它们为 IDE 是错误的。
我同意,这在路上被编辑了。但要点仍然成立,你对文本编辑器了解得越多,你的想法就会越流畅 :)
https://ide.atom.io/
atom IDE
难道不是吗?
https://stackoverflow.com/a/5239256/553598
我在 CSS 开发的几年里一直不知道特异性,直到我终于搞懂了它才发现它非常有用。
那 Emacs 呢?它确实是一个 IDE……
学习 CSS 的最佳方法是什么?
我没有看到文章与 CSS 之间的任何直接联系。即使是第一条也是适用于我能想到的开发的各个方面。
尝试在所有开发工作中保持这种方法。出色并不在于最终结果,而在于你是如何实现的。
有关于特异性的好文章吗?
我问是因为上面的文章没有具体说明,但快速搜索 Google 会找到您的另一篇文章:https://css-tricks.org.cn/specifics-on-css-specificity/#article-header-id-2
填充:为什么这增加了我的元素的宽度。一段爱恨交织的故事。
非常正确。然后你就会意识到 “box-sizing: border-box;”就在那里可以解决这个问题。
我还建议学习历史。对于刚起步的人来说,使用网格模块来布局 4 列可能没问题,直到他们了解到他们可以使用浮动来实现相同的效果,同时只需编写一半使用网格所需的代码。
我们使用网格是有原因的,我们使用许多看似比它们的老式对应物更复杂的东西也是有原因的。学习历史。
display: inline
以及它添加的额外 1-2px 宽度,除非你注释掉 HTML 中兄弟元素之间所有的空格。感谢上帝,我们现在有了 Flexbox! :P
或者你可以将父级 div 的 font-size 设置为 0
抵制无视 SASS/LESS 的强烈冲动,对于那些从 1999 年开始就习惯于手动编写未编译 CSS 的人来说,SASS/LESS 很容易被忽略。对于一些项目来说,SASS/LESS 仍然是过度杀鸡用牛刀,但这并不是避免使用它们和发现其功能和优势的理由。
关于分享,请欢迎新分享者。永远不要对他们说负面的话,尤其是在 Git 或 Twitter 上。这发生在我自愿加入一个开源项目时,我犹豫是否再次自愿加入一个开源项目。那是他们的错误,不是我的,我不会希望任何人经历这种事!
很抱歉你遇到了不好的经历。帽子到处都是,但并非每个社区都一样。
如果我能帮助你回到开源世界,我参与了一些开源社区,它们将非常欢迎新的贡献者。
也许新手不会注意到这个建议,但我建议你应该决定你的项目的抽象设计决策,例如
– 色彩调色板
– 字体大小
– 边框半径
– 行高
– 阴影
– 间距(填充和边距)
– z-index
如果使用 Sass 或 Less,这些可以采用 CSS 预处理器变量的形式,或者它们可以是 CSS 变量。
无论如何,提前做出这些决定将有助于你更快地编写 CSS,使 CSS 文件维护更轻松,并使你的 UI 更加一致。
很好的建议
SMACSS 改变了我的整个方法,它让我真正了解了组织:https://smacss.com/
我已经做了大约一年的 Web 开发,我真希望当时就知道:
我真希望我当时就知道 Shadow DOM(实际上,我真希望它在我开始的时候就已经存在)。深入研究它极大地帮助了像输入标签这样的东西的样式化,构建组件也很棒。哦,还有 scoped CSS 吗?是的,请。:)
https://developers.google.com/web/fundamentals/web-components/shadowdom
CSS 开发人员开始之前希望知道的 6 件事
1 – 学习 CSS
2 .. :)