
<p class="f_center"> <img src="http://dingyue.ws.126.net/2021/0526/ca054e53g00qtplb5000hd200hs0028g00hs0028.gif"/><br/><br/></p><p> 作者 | YJ 责编 | 欧阳姝黎</p><p class="f_center"> <img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0526%2F96c2db2aj00qtplb5000td200m800fqg00id00cz.jpg&thumbnail=660x&quality=80&type=jpg"/><br/><br/></p><p> <strong>前言</strong></p><p> 周日在家看 Web.dev 的 2020 三天 live,发现不少有意思的东西,其中有一项是关于 CSS 的,主播是 Una Kravets(chrome team 成员)。虽然我已经好几个月没有深入研究 CSS 的东西了,不过以前的底子还在。</p><p><blockquote>注意:下面大部分代码已经由各大主流最新浏览器实现,切记不要使用在 production 当中。</blockquote></p><p> <br/><strong>超级居中</strong></p><p> 在没有 flex 和 grid 之前,垂直居中一直不能很优雅的实现。而现在,我们可以结合 grid 和 place-items 优雅的同时实现水平居中和垂直居中。</p><p> </p><p> <img src="http://dingyue.ws.126.net/2021/0526/68fb8b12g00qtplb600aid200hr00ckg00hr00ck.gif"/></code></p><p> MDN, place-items 属性详解</p><p> <br/><strong>可解构的自适应布局(The Deconstructed Pancake)</strong></p><p> <br/><br/></p><p> 这种布局经常出现在电商网站:<br/></p><p><ol><li></p><p> 在 viewport 足够的时候,三个 box 固定宽度横放</p><p></li><li></p><p> 在 viewport 不够的时候(比如在 mobile 上面),宽度仍然固定,但是自动解构(原谅我的中文水平),不在同一水平面上</p><p></li></ol></p><p> </p><p> </p><p> </p><p> </code></p><p> <img src="http://dingyue.ws.126.net/2021/0526/cdfb36d3g00qtplb700hdd200hr00ckg00hr00ck.gif"/></p><p> 当我们设置 flex: 1 1 150px; 时候:</p><p class="f_center"> <img src="http://dingyue.ws.126.net/2021/0526/c24eb558g00qtplb700jad200hr00ckg00hr00ck.gif"/><br/><br/></p><p> <br/><strong>经典的 sidebar</strong></p><p> <br/><br/></p><p> 同样使用 grid layout,可以结合 minmax() 实现弹性的 sidebar(这在你要适应大屏幕的时候很有用)。minmax(, ) 就是字面意思。结合 单位,非常优雅,避免了数学计算宽度等不灵活的手段(比如我们设置 gap 的时候)。<br/></p><p> </p><p> </p><p> <img src="http://dingyue.ws.126.net/2021/0526/c7c082cag00qtplb800gcd200hr0097g00hr0097.gif"/></code><br/><strong>固定的 header 和 footer</strong></p><p> <br/><br/></p><p> 固定高度的 header 和 footer,占据剩余空间的 body 是经常使用的布局,我们可以利用 grid 和 fr 单位完美实现。<br/></p><p> .ex4 .parent {<br/>display: grid;<br/>grid-template-rows: auto 1fr auto;<br/><img src="http://dingyue.ws.126.net/2021/0526/2c7e4f66g00qtplba00hsd200hr00dwg00hr00dw.gif"/><br/></p><p> <strong>经典的圣杯布局(classical holy Grail layout)</strong></p><p> <br/><br/></p><p> 我们可以轻松的使用 Grid 布局来实现圣杯布局,并且是弹性的。<br/></p><p> </p><p> </p><p> </code></p><p> </p><p> </p><p> </p><p> </p><p> <img src="http://dingyue.ws.126.net/2021/0526/fbe4731eg00qtplbb00h2d200hr00dwg00hr00dw.gif"/></p><p> <br/><strong>有意思的叠块</strong></p><p> 使用 grid-template-columns 和 grid-column 可以实现如下图所示的布局。这进一步说明了 repeat 和 fr 的便捷性。</p><p class="f_center"> <img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0526%2F54583c07j00qtplbc000nd200js00hbg00id00g2.jpg&thumbnail=660x&quality=80&type=jpg"/><br/><br/></p><p> <br/><strong>RAM 技巧</strong></p><p> <br/><br/></p><p> Una Kravets 称之为 repeat, auto, minmax 技巧。这在弹性布局 图片/box 之类非常有用(一行可以摆放的卡片数量自动适应)。<br/></p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p><ol><li></p><p> </p><p></li><li></p><p> </p><p></li><li></p><p> </p><p></li><li></p><p> </p><p></li></ol></p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </code></p><p> </p><p> </p><p> <img src="http://dingyue.ws.126.net/2021/0526/g00qtplbg013pd200hs00c0g00hs00c0.gif"/></p><p> 无论是宽度或高度的收缩还是延展,都可以完美的展现 card 的布局。</p><p> <br/><strong>使用 clamp 实现 fluid typography</strong></p><p> <br/><br/></p><p> 使用最新的 clamp() 方法可以一行代码实现 fluid typography。提高 UX,非常适合包含阅读内容的 card,因为我们不希望一行字太短或太长。<br/></p><p> </p><p> </p><p> </p><p> </code></p><p> </p><p> </p><p class="f_center"> <img src="http://dingyue.ws.126.net/2021/0526/6a81fffeg00qtplbh00qzd200hs00c0g00hs00c0.gif"/><br/><br/></p><p> MDN, clamp() 详解</p><p> <br/><strong>完美实现比例</strong><br/></p><p> <br/><br/></p><p> 在展现 CMS 或其他设计内容时,我们会期望图片、video、卡片能够按照固定的比例进行布局。而最新的 aspect-ratio 就能优雅的实现该功能(使用 chrome 84+)<br/></p><p> </p><p> </p><p> </p><p> </code></p><p> </p><p> <img src="http://dingyue.ws.126.net/2021/0526/08d74a35g00qtplbi0167d200hr00a3g00hr00a3.gif"/></p>
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/185823.html