你永远不知道前端的下一个重大辩论™会从哪里冒出来!例如:我们最近看到一个基于 Max Stoiber 在 Twitter 上的一个小投票 的辩论,其中57%的人答错了。人们的反应从无伤大雅的“嘿,有趣的小脑筋急转弯!”到“网络教育状况一片混乱”等等。
我听到许多人说,他们只是感到难过,因为这么多人不知道一个相当简单的问题的答案。公平地说,这个问题(我相信是故意地)相当棘手!它并不是真正关于CSS的问题——更多的是关于HTML属性的顺序无关紧要的概念。重要的是CSS的顺序。
我看到的一个极端回应说,像这样的前端内容毫无必要地复杂,而且答错几乎成了一种骄傲。这种情绪非常强烈,以至于我听到有人建议,知道答案的人把他们的脑子塞满了无用的信息,这使得他们成为一个更糟糕的开发者。同样极端的是,有人建议应该始终避免像那样直接编写HTML和CSS,而应该使用工具抽象来“解决”这些“问题”。
(请原谅我在这里加了引号,我并不是想选边站队,而是想强调并非每个人都认为这些是需要解决的问题。)
另一种观点是,如果类似的事情发生在JavaScript领域,气氛就会不同。人们的看法是,不知道JavaScript基础知识是令人尴尬或不好的,但不知道HTML和CSS基础知识是语言的错,或者说了解它的价值不值得去理解。
与此同时,这个投票成为了一个完美的镜子,反映了人们对前端实践的强烈观点。真的很吸引人。
以下是一些从他们自己的博客中发表意见的人的观点
Keith Grant
我讨厌这件事不知何故变成了“老派”与“新派”之争。
画这样界限的问题在于:无论你站在哪一边,都有一些疯子在抛出荒谬的论点。现在,另一边的人会将这种观点与你联系起来。
Tim Kadlec
人们答错这个问题我并不太在意。每个人在职业生涯中都处于不同的阶段,每个人在日常工作中都面临着不同的问题,所以当然,并非每个人都会知道这一点。
但我确实发现答错的人如此之多有点令人担忧。
John Allsopp:
一方面(为了简洁起见,这将在某种程度上简化每一“方”,而不是对任何一方表示不敬),我们有那些——我可能也会把自己归入这个阵营——他们会争论说,Web 的核心技术正是如此——基础性的,并且对它们进行概念上的深入理解(不一定是对每个语法方面的百科全书式的了解)是专业 Web 开发人员的基本工作知识。
Kevin Ball:
随着前端开发重要性的增长,我们再次看到了这个故事的演绎。
对CSS的系统性贬值,更重要的是,对使用CSS的人的贬值。
对女性(她们实际上是CSS存在的原因)不断进行的 “解释CSS功能”。
会议演讲者会问一些关于 “那些不会写JavaScript的人是否有价值” 的问题。
所有这一切都发生在CSS发展速度比以往任何时候都快,并且 推动着网页设计的重大变化 的时候。
这与更好的技术无关,而是与排斥有关。
你看到过其他观点,或者你有自己的观点吗?
啊,我认为这只是问题措辞的方式等等……我花了几秒钟才意识到,我已经开发了三年了。这有点像“奶牛喝什么?”的笑话……或者当有人向你展示单词“蓝色”,但它是红色的,然后问你它是哪个颜色……我非常怀疑任何一个人,即使是绝对的初学者,在意识到自己答错了时,也不会感到无语。
但这并不能解释为什么人们会如此强烈地为自己的无知辩护。
我同意John的观点,我一直认为这些是构建的基础。这种行为在编写高效的CSS时可能是有用且需要的,尤其是在创建变体或样式覆盖时。我假设缺乏如何利用这种行为的知识是每次这些功能首先被剔除的原因。
这么多人答错的原因是,当你进行开发时,是否答错这类问题通常并不重要。重要的是最终结果。大多数希望在使用这些类的真实项目中两个div都为蓝色的人,都会调整类(或样式规则),直到得到他们想要的结果。大多数人不会关心他们为什么做对了。因此,当涉及到像这样的测验时,他们只是按照他们的想法去做,这通常是他们在真实项目中首先尝试的事情。所以从某种意义上说,这是一个有点不公平的测验,因为宇宙中没有哪个项目只会给你一次机会让这两个div都变成蓝色。
而且我认为人们答错这个问题并没有那么糟糕,我认为这仅仅是大多数开发人员并不关心概念的事实,他们关心的是达到最终目标(即“构建东西”)。
这是基本的CSS基础知识。我曾在社区大学教授网页开发大约14年,而这正是他们在第一节或两节课中教授的内容。
我理解很多人可能会忘记这一点,或者被类似的问题所困扰。但将非常非常基础的教育与少量的工作经验结合起来,就可以得到正确的答案。
那么,那些答错的人……有些人回答得太快,没有思考,有些人确实不知道,然后大多数人可能只是对CSS不太熟练/了解。
选择地球上的任何主题并设置一个类似的问题,我认为你会得到类似的结果。
我认为这可以归因于人们对webdev技术的了解是基于试错法。他们会查看教程或参加在线课程或观看视频,但最终你对一行代码的使用案例可能与你所学到的不同,因此你必须尝试一些东西才能看看它是否有效。并非每个人都对某些东西为什么按预期工作感兴趣,而只对它按预期工作感兴趣。我已经做了20年了,我可以自信地告诉你,我没有得到正确的答案。这是否意味着我不擅长我的工作?是否应该期望任何编写代码的人都了解这些代码是如何编译成1和0才能被认为是优秀的?
我同意约翰的观点。我已经教授了16年的网页基础知识,并开发了20年。我本人来自系统分析程序员背景。我可能有点老派,但是如果没有扎实的知识基础,想要得到所需的结果可能会很混乱。并不是说我不认可路易斯在评论中提到的结果才是最重要的。
我现在的学生对我在网页技术及其实现方面提供的资讯感到惊讶。
成为网页技术的专家已经演变成在工作方面整体的碎片化。
我也认为,由于许多不同的学习平台上提供了大量教程,人们对事物如何运作的好奇心已经消失了。我一直都说,剥皮的方法和构建网站或应用程序的方法一样多。由于人们的知识和理解,有些方法比其他的更优雅。
更重要的问题是,为什么提问的人没有“以上皆非”的选项?
不幸的是,这种对CSS的态度非常普遍,并且可能被典型的FE开发人员面试所延续——19个关于排序算法的问题,以及一个关于CSS中的“C”代表什么的。
如果开发人员在回答一个类似的测试JavaScript作用域知识的问题时答错了,他们会感到尴尬。而那些答对的人会像我们这些答对这个简单的CSS测试的人一样,大声宣称它的基础性。
推特上的问题不是关于特异性的,而是关于出现的顺序(https://www.w3.org/TR/css-cascade-3/#cascade)。
我不知道为什么很多参与者难以正确回答,但这并不让我感到惊讶。
作为“最佳实践”推销的现代CSS方法实际上并非如此。例如,大多数方法都允许开发人员拼凑出看起来正确且似乎有效的HTML,但实际上是错误的。例如:
<button class="class-for-link-elements">如何破坏链接的上下文菜单,并使它们难以使用屏幕阅读器和语音控制软件找到。</button>
。……或者它们允许开发人员对样式拥有过多的控制权,以至于无法进行治理。这在今天可能对某些人来说并不重要,但他们不太可能编写可维护的HTML,这些HTML可以针对打印进行不同的样式设置,或者针对不同的用户需求,或者重复用于不同的客户品牌,或者针对节日进行主题设置等等!
这些现代方法的存在真的是因为CSS对凡人来说太强大了吗?