javascript - 为什么行内块元素即使在宽度为 100% 时也不会占据整个宽度?
问题描述
let lastSelectButton;
document.querySelectorAll('.primaryButton').forEach(button => {
button.addEventListener('click', event => {
if (lastSelectButton) document.querySelector(`#${lastSelectButton} + div`).classList.toggle('inlb');
lastSelectButton = event.currentTarget.getAttribute('id');
document.querySelector(`#${lastSelectButton} + div`).classList.toggle('inlb');
}, false);
});
button {
text-align: left;
}
.primaryButton {
display: inline-block;
background: #bfbfbf;
border: none;
width: 100%;
padding: 5px;
}
.secondaryButton {
background: #d4d4d4;
border: none;
width: 100%;
text-indent: 1em;
}
.primaryButton:hover {
background: #a1a1a1;
cursor: pointer;
}
.secondaryButton:hover {
background: #bfbfbf;
cursor: pointer;
}
.none {
display: none;
}
.inlb {
display: inline-block !important;
}
<button class="primaryButton" id="p1">A</button>
<div class="none">
<button class="secondaryButton">1</button>
<button class="secondaryButton">2</button>
<button class="secondaryButton">3</button>
</div>
<button class="primaryButton" id="p2">B</button>
<div class="none">
<button class="secondaryButton">1</button>
<button class="secondaryButton">2</button>
</div>
<button class="primaryButton" id="p3">C</button>
<div class="none">
<button class="secondaryButton">1</button>
<button class="secondaryButton">2</button>
</div>
如图所示,辅助按钮不像主按钮那样占据全宽。为什么会这样?如何纠正它?
相反,将inline-block
s 设置为block
s 可以解决问题:
let lastSelectButton;
document.querySelectorAll('.primaryButton').forEach(button => {
button.addEventListener('click', event => {
if (lastSelectButton) document.querySelector(`#${lastSelectButton} + div`).classList.toggle('inlb');
lastSelectButton = event.currentTarget.getAttribute('id');
document.querySelector(`#${lastSelectButton} + div`).classList.toggle('inlb');
}, false);
});
button {
text-align: left;
}
.primaryButton {
display: block;
background: #bfbfbf;
border: none;
width: 100%;
padding: 5px;
}
.secondaryButton {
background: #d4d4d4;
border: none;
width: 100%;
text-indent: 1em;
}
.primaryButton:hover {
background: #a1a1a1;
cursor: pointer;
}
.secondaryButton:hover {
background: #bfbfbf;
cursor: pointer;
}
.none {
display: none;
}
.inlb {
display: block !important;
}
<button class="primaryButton" id="p1">A</button>
<div class="none">
<button class="secondaryButton">1</button>
<button class="secondaryButton">2</button>
<button class="secondaryButton">3</button>
</div>
<button class="primaryButton" id="p2">B</button>
<div class="none">
<button class="secondaryButton">1</button>
<button class="secondaryButton">2</button>
</div>
<button class="primaryButton" id="p3">C</button>
<div class="none">
<button class="secondaryButton">1</button>
<button class="secondaryButton">2</button>
</div>
当我这样做可以解决问题时会发生什么?
编辑:这个问题不是这个display: inline-block
问题的重复,我的问题的主要问题是按钮采用全宽,而另一个问题要求和之间的区别display: block
。
解决方案
推荐阅读
- mysql - 用 MySQL 查询替换 html 样式属性
- android - Glide v4 RecyclerView 预加载图像未显示
- azure-storage - 如何使用 Azure Datalake Gen2 Rest API 重命名 Blob 存储中的文件
- angular - 如何从ionic4中的离子选择中删除小插入符
- excel - 根据特定单元格值将数据从一个工作表传输到另一个工作表
- c# - 获取变量的原始名称(...)?
- gnuplot - Gnuplot通过频率点平滑曲线+曲线下的填充区域
- c# - 如何避免表单提交按钮
- python - Google Cloud Composer BigQuery Operator - 获取作业 API HTTPError 404
- laravel - Docker Laravel 不加载资产