javascript - 我应该如何设置这些元素的宽度以使其完美契合?
问题描述
我正在建立一个网站,其中包含一组网格形状的正方形。我希望它们是完美的正方形,宽度和高度相等。它工作得很好,除了当你调整页面大小时它们在一行中的两个和三个之间闪烁。这是代码:
const get = (querySelector) => document.querySelector(querySelector),
getAll = (querySelector) => document.querySelectorAll(querySelector),
getClass = (className) => document.getElementsByClassName(className),
getTag = (tagName) => document.getElementsByTagName(tagName);
function resizePosts() {
if (get('.post')) {
for (let i = 0; i < getClass('post').length; i++) {
getClass('post')[i].style.width = getClass('post')[i].parentElement.offsetWidth/3-10.982;
getClass('post')[i].style.height = getClass('post')[0].offsetWidth;
}
}
window.addEventListener('resize', resizePosts, false);
}
window.addEventListener('load', resizePosts, false);
window.addEventListener('resize', resizePosts, false);
.posts {
font-size: 2.5em;
font-family: 'Lato', sans-serif;
padding: 0 25px;
flex-wrap: wrap;
display: flex;
min-height: 150px;
}
.posts-themselves {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.post {
border: 0.5px solid black;
margin: 5px;
width: 33%;
overflow: hidden;
}
<div class = 'posts'>
<div class = 'posts-themselves'>
<div class = 'post'>
</div>
<div class = 'post'>
</div>
<div class = 'post'>
</div>
<div class = 'post'>
</div>
</div>
</div>
请帮我把它设置为正确的尺寸!
解决方案
您需要添加尺寸的测量单位(“px”)
const get = (querySelector) => document.querySelector(querySelector),
getAll = (querySelector) => document.querySelectorAll(querySelector),
getClass = (className) => document.getElementsByClassName(className),
getTag = (tagName) => document.getElementsByTagName(tagName);
function resizePosts() {
if (get('.post')) {
for (let i = 0; i < getClass('post').length; i++) {
getClass('post')[i].style.width = getClass('post')[i].parentElement.offsetWidth/3-10.982 +"px";
getClass('post')[i].style.height = getClass('post')[0].style.width;
}
}
}
window.addEventListener('load', resizePosts, false);
window.addEventListener('resize', resizePosts, false);
.posts {
font-size: 2.5em;
font-family: 'Lato', sans-serif;
padding: 0 25px;
flex-wrap: wrap;
display: flex;
min-height: 150px;
}
.posts-themselves {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.post {
border: 0.5px solid black;
margin: 5px;
overflow: hidden;
}
<div class = 'posts'>
<div class = 'posts-themselves'>
<div class = 'post'>
</div>
<div class = 'post'>
</div>
<div class = 'post'>
</div>
<div class = 'post'>
</div>
</div>
</div>
推荐阅读
- shell - 当您在命令中使用终端命令(例如 -v、-i、-f)时,它们是什么意思?
- graphviz - 如何使用graphviz将孙子(Enkel1)实施到家谱中?
- java - 在保存 Spring Data MongoDB 实体之前后处理 MongoDB 文档
- java - 如果在发出请求时未通过标头传递授权,则不会调用 BasicAuthenticationFilter
- java - 尽管使用了推断约束,但我的文本字段和按钮并未显示在预览和输出中的相应位置
- ios - 在 xcode 中编辑 Intent 方案时,Siri Intent Query 输入字段不可用
- reactjs - componentWillUnmount 中的 useEffect 何时触发?
- python - 通过 Travis-CI 在测试目录上运行覆盖
- ios - iOS:通过引用保存的 ViewController
- sql - 查找行组合的重复项 - Oracle SQL