利用CSS弹性布局构建自适应正方形骰子界面
本文介绍如何使用CSS弹性布局(Flexbox)创建始终保持正方形的骰子界面,效果图如上所示。 我们将通过HTML结构和CSS样式实现类似的视觉效果。
关键在于巧妙地结合Flexbox布局和比例控制。以下代码示例展示了如何构建这个骰子:
HTML结构:
这段HTML使用一个div
作为容器,包含一个阴影图片(img
)和一个无序列表(ul
)来表示骰子点。li
元素代表每个点,active
类用于高亮显示。
对应的CSS样式:
.dice { max-width: 500px; width: 100%; border: 1px solid #000; margin: auto; position: relative; border-radius: 10px; aspect-ratio: 1 / 1; /* 保持正方形 */ overflow: hidden; /* 隐藏超出部分 */ img { display: block; width: 100%; height: 100%; object-fit: cover; /* 图片填充容器 */ } .dice-spots { list-style: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; flex-wrap: wrap; justify-content: space-between; align-content: space-between; padding: 10%; /* 调整点与边框的距离 */ box-sizing: border-box; /* 包含内边距 */ .spot { width: 25%; height: 25%; background-color: skyblue; border-radius: 50%; /* 圆形点 */ } .spot.active { background-color: darkblue; /* 改变选中点的颜色 */ } } }
这段CSS利用aspect-ratio: 1 / 1;
属性确保容器始终保持正方形。Flexbox布局使点均匀分布。width
和height
设置为百分比,保证响应式布局。border-radius
创建圆角骰子。背景图片作为底图,位于点元素下方。 通过绝对定位和百分比大小,保证骰子在不同尺寸下都能保持正方形。
通过以上HTML和CSS,即可创建一个响应式正方形骰子界面。 注意,padding
和box-sizing
的配合使用,保证了骰子点与边框的距离在不同屏幕尺寸下保持一致。
要在不改变当前页面颜色模式的情况下,通过JavaScript获取其他主题模式下的CSS变量值,可以使用以下方法。我们将使用`CSSStyleSheet` API和`CSSStyleRule`来访问CSS变量,而不需要改变当前的主题模式。 首先,我们需要确保CSS文件中定义了不同主题模式的变量。例如: ```css :root { --primary-color: #007bff; } @media (prefers-color-scheme: dark) { :root { --pr
原生JavaScript节流函数中apply方法失效的原因是什么?
如何高效完整地复制网站到本地,包括JS和CSS文件?
微信小程序如何获取非行内样式的元素样式?
JavaScript数组拷贝: [...arr]和new Array(...arr)深度解析
如何解决 document.execCommand 过时带来的简谱编辑器开发难题?