温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

CSS网格项目的纵横比技巧有哪些

发布时间:2022-03-02 15:19:31 来源:亿速云 阅读:382 作者:iii 栏目:web开发

这篇文章主要讲解了“CSS网格项目的纵横比技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS网格项目的纵横比技巧有哪些”吧!

情形1) 只是内部的元素需要设纵横比。

好,这个可能比较容易一些。 只要保证元素的宽度和网格区域的宽度100%相同,然后加上伪元素来处理拉伸高度的纵横比。

<div
 class="grid"> <div style="--aspect-ratio: 
2/1;">2/1</div> <div style="--aspect-ratio: 
3/1;">3/1</div> <div style="--aspect-ratio: 
1/1;">1/1</div></div>
.grid { display: grid; 
grid-template-columns: 1fr 1fr 1fr; place-items: start;}.grid > * { 
background: orange; width: 100%;}.grid > 
[style^='--aspect-ratio']::before { content: ""; display: inline-block; 
width: 1px; height: 0; padding-bottom: calc(100% / 
(var(--aspect-ratio)));}

注意,应用纵横比并不一定要通过自定义属性。可以看到,这里的脏活累活都是由底部填充(padding-bottom)这条规则完成的,它的值也可以直接用固定值或别的什么。

情形2) 跨列求宽

我觉得,其实大家想要的更可能是这样的效果,就是设一个2:1的纵横比,然后元素就能确确实实地跨两列,而不是局限在一列里。做法和上面的差不多,但要加规则来实现跨列。

[style="--aspect-ratio:
 1/1;"] { grid-column: span 1;}[style="--aspect-ratio: 2/1;"] { 
grid-column: span 2;}[style="--aspect-ratio: 3/1;"] { grid-column: span 
3;}

如果再加进一条grid-auto-flow: dense;规则,我们还可以让不同网格项目有不同的纵横比,它们可以整齐地相互包围,显得很协调。

到了这里,就该讲讲哪些做法会把准确的纵横比搞砸。有些文字的行高line-height属性可能会把方框顶得过高;要用网格间距grid-gap这个属性也可能会弄乱纵横比。如果纵横比例要求一定超准,可能就要多试几个固定值,碰运气了。

如果网格本身没有固定数量的行,做跨列也会变得比较麻烦。大家做的可能是重复函数repeat加自动填充auto-fill的效果,这样最后遇到的情况可能是有几个列不相等,那它们的纵横比也好不到哪里去。这个问题也许下次我们再来深入研究一下。

情形 3) 硬来

网格有能力进行二维布局。真想做的话,只要强迫网格区域高和宽符合纵横比就可以了。比如,给列和行直接设定固定的值,这种做法也不是不行:

.grid { display: grid; grid-template-columns: 200px 100px 100px; grid-template-rows: 100px 200px 300px;}

我们一般不会考虑这种方法,因为都希望元素大小灵活易变,正是由于这个原因,上面的纵横比例子里用的技术都是基于百分比的。但是固定值仍然不失为另一种选择。

看看Pen网站CodePen上纵横比方框填充这个例子,作者Chris Coyier。

这个例子强迫网格区域大小固定,然后让其中的元素拉伸填充这个区域,不过我们大可把元素的大小也固定下来。

这个问题一部分在于不但要给方框加上纵横比,还要在方框内实现对齐功能。有几种方法可以实现,但我认为最简单的方法是网格套网格。给网格元素加上display: grid;规则,然后利用那个内部网格的对齐功能来实现。

感谢各位的阅读,以上就是“CSS网格项目的纵横比技巧有哪些”的内容了,经过本文的学习后,相信大家对CSS网格项目的纵横比技巧有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

css
AI