css - 使用电话宽度和保持纵横比创建项目的响应式 Flex 布局
问题描述
希望从那里的 CSS flex 大师那里得到一些帮助。
- 我有一个 4:3 纵横比项目的 n 计数列表,它应该布局并占据页面的整个宽度。
- 当页面水平调整大小时,项目网格应该换行。
- 在电话上,所有项目都应该是一列,其宽度等于电话减去一点填充。
我有这个非常接近:https ://codepen.io/kirkouimet/pen/gOLrmvL
ul {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
li {
margin: 32px;
width: 400px;
height: 300px;
list-style-type: none;
border-radius: 12px;
background: #CCC;
}
我遇到的问题是#3。有些手机的宽度比其他手机小,所以我无法设置固定宽度的像素大小。设置固定宽度的像素大小也是一个问题,因为我需要保持 4:3 的纵横比。这些项目还需要具有最大宽度,以便它们在桌面上看起来不错......
有人对我如何解决这个问题有想法吗?我认为 flex 和 flex wrapping 是要走的路。如果可能的话,我也想避免使用 JavaScript。
解决方案
您可以在 CSS 中使用calc()
and来执行此操作。media-queries
@media only screen and (max-width: 550px) {
body {
background-color: #ffe897;
}
li {
width: calc(100vw - 64px);
height: calc(75vw - 64px);
}
}
此处media-query
仅当设备宽度小于或等于时才有效550px
。您可以根据需要更改它。
background-color
给出tobody
只是为了查看何时开始media-query
工作。完成后可以将其删除media-query
。
现在是实际的部分:
我们已分配width
给calc(100vw - 64px)
. 我们可以在里面进行所有类型的计算calc()
。这里100vw
表示 100% 的视口或屏幕宽度。我们说将宽度设置100%
为divide width
减号64px
,即margin
左右32px
两侧的。
同样,高度表示75%
设备的减号64px
margin
。
在 Codepen 编辑器上检查它:https ://codepen.io/manaskhandelwal1/pen/OJbNpqx?editors=1100
在 Codepen 调试模式下检查它:https ://cdpn.io/manaskhandelwal1/debug/OJbNpqx/XxkVwKaqOJxM
要查看浏览器计算的宽度和高度,您可以使用浏览器开发人员工具。
打开开发人员工具并将选项卡更改Styles
为Computed
.
您可以看到值随着屏幕宽度的变化而变化。
推荐阅读
- spring-batch - 试图让我的春季批处理作业可重新启动
- angular - 用于从角度 5 中的两个日期进行列表过滤的自定义管道
- azure - Azure DevOps 资源存储库:self
- db2 - Db2 是否支持“重音不敏感”排序规则?
- html - 将托管的 React 应用程序嵌入到另一个非 React 站点的最佳方法是什么?
- windows - 尝试移动时批处理文件无法访问文件夹
- javascript - 如何通过 Ajax 将多个数据字段发送到 php 页面?
- javascript - 在 javascript 上跨函数传递变量
- java - HashMap 中的工厂方法对象存在访问问题
- kubernetes - Kubernetes 入口服务