最近,已经有一些关于是否应该像定义的css“下一个版本”css4的讨论。在本文中,我们将讨论此问题,为css创建新功能版本的利弊,以及确定新功能版本的潜在问题。
css4的问题
最近在网站建设微信群中引发了为什么css4还没有成熟的讨论,为了理解为什么没有css4,我们需要看一下web平台的历史。css的初始版本是一个单一的整体规范。这些规范包含所有可能的css属性和值。这很好用,因为没有太多css要详细说明。css1主要涵盖用于格式化文本文档的功能,css2和css2.1中添加了其他功能和说明,但是css仍然是一个相对较小的规范。
css3
当css工作组开始研究css3时,决定将大型规范拆分为模块。这些模块每个都覆盖css的一部分。并非所有css都会立即放入新模块中。css2.1中仍然定义了许多东西,因为它们没有更改或添加。因此,如果仍在css2中定义所引用的内容,您仍会在现代模块中找到指向css2规范的链接。但是,任何新的css都是在单独的模块中创建的。随着新css的创建,这种模块化一直持续到今天。例如,构成box alignment规范的几种功能最初在flexbox规范中开始使用。一旦很明显它们可以应用于其他布局方法(例如grid layout),它们就被移到一个新模块中,也要为该其他方法定义。
我们不再将新规范称为css3规范,部分原因是它没有多大意义。对模块进行版本控制的方式是,css2的升级模块(例如selectors)成为了3级模块。全新的css(例如css网格布局)在css2中根本不存在,因此可以从1级模块开始生活。这些初始模块中的一些模块现在处于4级甚至5级。因此,调用所有新的css css3不再映射到这些级别编号,并且可能会造成混乱。
规范成熟度级别
除了规范级别,每个单独的级别都经过从初始草案到成为w3c建议书的分阶段过程,该过程中的步骤称为“ 成熟度级别”。您可能会认为w3c建议是一个“网络标准”,但是我们在工作中每天使用的许多东西都是在尚未达到该成熟度级别的规范中定义的。您可以在css wg current work页面上查看规范列表及其状态。
缺少进步的css4
我们许多开发人员看到了关于css3的困惑或css4明显缺乏进步的情况。规范的级别或内部的w3c规范成熟度对网站开发人员而言,远不如浏览器中可以实际使用的css来得重要。
也许css4可以帮助客户将思维方式推向更安全,更好的网络。但在推销会议上,你很难告诉他们css4不支持ie10,因为我们需要css变量和网格布局。客户不知道也不在乎。他们只是想支持尽可能多的浏览器(非常典型的fomo思维方式),但他们是决策者。
但是,如果我们能告诉他们css4不支持ie10,因为它没有最新的css4技术,并向他们抛出“您确定要让新创建的网站落后于竞争对手吗?” 问题,这可能会困扰他们(当然,除了ie10完全过时且容易受到攻击这一事实之外)。
第一个问题是,“准备就绪” css的任何集合都不像选择一组规范那样简单。许多规范是部分实现的,对某些属性有很大的支持,而对其他属性则没有任何支持。许多web开发人员认为某些功能已经成熟,其规格仍处于“工作草案”状态,而工作组中仍在争论和澄清这些功能。
如果我们以多列布局为例。多年来,大多数属性已广泛应用于浏览器。但是,该column-span属性最近才在firefox中实现,并且最近澄清了许多功能,例如column-fill。
我们可以决定完全忽略规范并查看属性。由于我们在布局方法中有部分实现,因此这也不是一件容易的事。该框对齐属性是一个很好的例子。这些是为所有布局方法定义的,其中属性在该布局方法中有意义。但是,当前仅在grid和flexbox中可以看到对box alignment的支持。因此justify-self,为块级框,绝对定位的框和网格项定义的稳定吗?在网格环境中为是,在块布局环境中为否。
box sizing是另一个领域,我们支持css grid layout中的固有大小值 fit-content()以进行轨道大小调整,但不支持width。然后,除firefox以外flex-basis的浏览器都没有实现任何固有的大小调整关键字。
最后,如果我们返回multicol,人们对multicol所遇到的许多问题都与属性本身无关,而与跨浏览器碎片支持不佳有关。尽管有各种属性的出色支持,但这使得multicol的表现似乎很差。解开所有这些依赖关系以提供一组功能将是一件非常困难的工作。
css不仅适用于web浏览器
有大量的用户使用css和html并通过创建可打印的pdf来输出打印的文档。他们通常对分页媒体规范,分段等有出色的支持。但是,在实现更新的css(例如网格布局)方面,它们通常落后于浏览器。它们如何适合css4?
人们期望功能发布包括当前不存在的功能
关于此问题的讨论中发生的有趣的事情是,许多人发表评论说,他们对css4的期望是它将包含某些根本不属于css的功能。尽管其中一些功能(例如grid和flexbox)已经在浏览器中使用了很多年,但一切似乎都对他们来说是全新的。
但是,任何坚持不懈的人都可能会对为什么有一个“新的”规范充满真正的旧事物感到困惑。
我们要解决什么问题?
在针对此问题的许多回应中,网站开发人员将浏览器支持视为应包含在css4中的关键,我认为我们所面临的问题不是css版本控制中的一个,而更多的网站开发人员对于通常应该在其项目中使用哪些功能集合。
css4方法的优点之一是它发出两件事。首先,在css3之后已经开发了很多新的css功能,这些功能已经可以使用,其次,它们已经可以使用了。没有经过chrome的实验或实施,但没有其他人,但已经为广泛采用做好了准备。
在此讨论中,如此频繁地出现浏览器支持这一事实使我们想知道,定义mdn之类的地方是否是更好的定义。所有浏览器供应商都已经为mdn做出了贡献,它已经为这些功能提供了支持数据,从而使我们能够看到诸如box alignment之类的部分实现。mdn是web平台的文档,因此我们可以回避打印实现或css的任何其他实现的问题,仅将功能集限制在web范围内。
我们仍然不相信css4或我们选择称为css版本的任何东西实际上会在相对较小的社区之外对css的感知产生任何影响。我们认为这也无助于解决网站开发人员说服其老板和客户升级浏览器的问题。如果提供软件的微软告诉用户进行升级而用户不进行升级,那么我们将看不到支持css4的根基。而且,我们做了很长一段时间,人们仍然没有升级他们的浏览器。所以css4真正的使用只能依存于浏览器的全面支持。
SEO优化需要做什么如何判断网站是否需要修改深圳建站公司的“追风史”(深圳建站公司招聘)长春网站设计的费用要多少呢?企业移动网站建设的优势网络营销必须清楚以下七点“投笔从戎”从“0”走上SEO之道企业网站定制要凸显企业个性