You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<divclass="wrap"><divclass="g-container"><divclass="child">Title</div><p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus vel eligendi, esse illum similique sint!!</p></div></div>
在最新的 Chrome Canary 中,一个有意思的 CSS 语法
Container Queries
得到了支持。而在最近几个 Chrome 版本中,有一些挺有意思的属性相继得到支持,本文就将介绍一下,在今天,新时代布局中,我们能逐渐去使用的一些有意思的新特性,通过本文,你将能了解到:
gap
属性aspect-ratio
flex 布局中的
gap
属性gap
并非是新的属性,它一直存在于多栏布局multi-column
与 grid 布局中,其中:column-gap
属性用来设置多栏布局multi-column
中元素列之间的间隔大小gap
属性是用来设置网格行与列之间的间隙,该属性是row-gap
和column-gap
的简写形式,并且起初是叫grid-gap
譬如我们有如下一个
grid
布局:效果如下:
通过给
grid-container
添加gap
属性,可以非常方便的设置网格行与列之间的间隙:而从 Chromium 84 开始,我们可以开始在
flex
布局中使用gap
属性了!Can i use -- gap property for Flexbox它的作用与在 grid 布局中的类似,可以控制水平和竖直方向上 flex item 之间的间距:
gap
属性的优势在于,它避免了传统的使用margin
的时候需要考虑第一个或者最后一个元素的左边距或者右边距的烦恼。正常而言,4 个水平的flex item
,它们就应该只有 3 个间隙。gap
只生效于两个flex item
之间。控制容器宽高比属性
aspect-ratio
保持元素容器一致的宽高比(称为长宽比)对于响应式 Web 设计和在某些布局当中至关重要。 现在,通过 Chromium 88 和 Firefox 87,我们有了一种更直接的方法来控制元素的宽高比 --
aspect-ratio
。Can i use -- aspect-ratio首先,我们只需要设定元素的宽,或者元素的高,再通过
aspect-ratio
属性,即可以控制元素的整体宽高:都可以得到如下图形:
其次,设定了
aspect-ratio
的元素,元素的高宽其中一个发生变化,另外一个会跟随变化:当容器大小变化,每个子元素的宽度变宽,元素的高度也随着设定的
aspect-ratio
比例跟随变化:CodePen Demo -- aspect-ratio Demo
firefox 下的 CSS Grid 瀑布流布局(grid-template-rows: masonry)
grid-template-rows: masonry
是 firefox 在 firefox 87 开始支持的一种基于 grid 布局快速创建瀑布流布局的方式。并且 firefox 一直在推动该属性进入标准当中。从 firefox 87 开始,在浏览器输入网址栏输入
about:config
并且开启layout.css.grid-template-masonry-value.enabled
配置使用。Can i use -- grid-template-rows: masonry正常而言,我们想要实现瀑布流布局还是需要花费一定的功夫的,即便是基于 grid 布局。在之前,我们通过 grid 布局,通过精细化控制每一个
grid item
,也可以实现一些伪瀑布流布局:效果如下:
CodePen Demo -- CSS Grid 实现伪瀑布流布局
在上述 Demo 中,使用
grid-template-columns
、grid-template-rows
分割行列,使用grid-row
控制每个grid item
的所占格子的大小,但是这样做的成本太高了,元素一多,计算量也非常大,并且还是在我们提前知道每个元素的高宽的前提下。而在有了
grid-template-rows: masonry
之后,一切都会变得简单许多,对于一个不确定每个元素高度的 4 列的 grid 布局:正常而言,看到的会是这样:
简单的给容器加上
grid-template-rows: masonry
,表示竖方向上,采用瀑布流布局:便可以轻松的得到这样一种瀑布流布局:
如果你在使用 firefox,并且开启了
layout.css.grid-template-masonry-value.enabled
配置,可以戳进下面的 DEMO 感受一下:CodePen Demo -- grid-template-rows: masonry 实现瀑布流布局
当然,这是一个最简单的 DEMO,关于更多
grid-template-rows: masonry
相关知识,你可以详细的看看这篇文章:Native CSS Masonry Layout In CSS GridCSS 容器查询(Container Queries)
什么是 CSS 容器查询(Container Queries)?
在之前,对于同个样式,我们如果希望根据视口大小得到不一样效果,通常使用的是媒体查询。
但是,一些容器或者组件的设计可能并不总是与视口的大小有关,而是与组件在布局中的放置位置有关。
所以在未来,新增了一种方式可以对不同状态下的容器样式进行控制,也就是容器查询。在最新的 Chrome Canary 中,我们可以通过
chrome://flags/#enable-container-queries
开启 Container Queries 功能。假设我们有如下结构:
正常情况下的样式如下:
结构如下:
在未来,我们可以通过
@container query
语法,设定父容器.wrap
在不同宽度下的不同表现,在上述代码基础上,新增下述代码:注意这里要开启
@container query
,需要配合容器的contain
属性,这里设置了contain: layout inline-size
,当.wrap
宽度小于等于400px
时,@container (max-width: 400px)
内的代码则生效,从横向布局flex-wrap: nowrap
变换成了纵向换行布局flex-wrap: wrap
:如果你的浏览器已经开启了
chrome://flags/#enable-container-queries
,你可以戳这个代码感受一下:CodePen Demo -- CSS @container query Demo
媒体查询与容器查询的异同,通过一张简单的图看看,核心的点在于容器的宽度发生变化时,视口的宽度不一定会发生变化:
这里仅仅是介绍了
@container query
的冰山一角,更多内容你可以戳这里了解更多:say-hello-to-css-container-queries最后
好了,本文到此结束,希望对你有帮助 :)
想 Get 到最有意思的 CSS 资讯,千万不要错过我的 iCSS 公众号 😄
更多精彩 CSS 技术文章汇总在我的 Github -- iCSS ,持续更新,欢迎点个 star 订阅收藏。
如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
The text was updated successfully, but these errors were encountered: