在众多的CSS新特性中,今年采用的3个新特性让我兴奋不已。1.特性查询前段时间,我写了一个我真正想要的CSS特性,关于特性查询,现在它基本上已经存在了!它支持除InternetExplorer之外的主要浏览器(包括OperaMini)。使用@supports规则的特征查询允许我们将CSS包含在一个条件块中,该条件块检查当前用户代理是否支持CSS属性键值对,如果支持,则内容将生效。这是一个仅应用display:flex的简单示例,前提是浏览器支持Flexbox-@supports(display:flex){.foo{display:flex;此外,使用and和not等运算符,我们甚至可以创建更复杂的属性查询。例如,我们可以检测浏览器是否只支持旧的Flexbox语法-@supports(display:flexbox)and(not(display:flex)){.foo{display:flexbox;}}Support2.TableLayoutCSSTableLayout模块定义的系统,用于创建基于表格的布局。它类似于flexbox布局模块,但更明确地为页面布局而设计,它们之间有许多不同的特点。显式项目定位网格由表容器(使用display:grid创建)和表项目(子组件)组成。在我们的CSS中,我们可以清楚地组织表项的位置和顺序,而与它们的标记(称为HTML标记)无关。例如,我写了HolyWyeLayoutsUsingCSSTables,它展示了如何使用这个模块创建著名的“圣杯布局”。后面的CSS只有31行-.hg__header{grid-area:header;}.hg__footer{网格区域:页脚;}.hg__main{网格区域:主要;}.hg__left{网格区域:导航;}.hg__right{网格区域:广告;}.hg{显示:网格;grid-template-areas:"headerheaderheader""navigationmainads""footerfooterfooter";网格模板列:150px1fr150px;网格模板行:100px1fr30px;最小高度:100vh;}@mediascreenand(max-width:600px){.hg{grid-template-areas:"header""navigation""main""ads""footer";网格模板列:100%;网格模板行:100px50px1fr50px30px;}}灵活的长度CSSGrid模块引入了一个新的长度单位,fr,它表示表格容器中剩余空间的相等分数。它允许我们分配高度和宽度成为可能。例如在HolyGrail布局中,我希望主要部分占据除两个侧边栏之外的所有内容。我写了一段简单的代码来做到这一点-.hg{grid-template-columns:150px1fr150px;}间距我们可以使用grid-row-gap、grid-column-gap和grid-gap属性来显式定义间距。这些属性的值是
