javascript - Javascript 重置我现有的 CSS 对齐方式
问题描述
下面是我为隐藏/显示表格而编写的一些 javascript 按钮。默认情况下,表格以 margin: auto 为中心,并且可以正常工作。
但是,每当我单击按钮隐藏/显示表格时,它都会重置自动边距,并使表格左对齐。
如果我禁用 display:none,它会显示表格居中,如果我删除 javascript,它会正常显示。我已经尝试再次设置它
document.getElementById("vcontrols").style.margin = "0 auto"
但它不起作用
这是使用的CSS。
<style>
body {
background-color: #111;
}
.container {
max-width: 80%;
margin: auto;
background: #333;
color: #fff;
text-align: center;
}
.tabela {
margin: 0 auto;
}
#vcontrols {
display: none;
}
</style>
这是脚本
function toggleControls() {
var Skrivalica = document.getElementById('vcontrols');
var displaySetting = Skrivalica.style.display;
var hideshow = document.getElementById('hideshow');
if (displaySetting == 'block') {
Skrivalica.style.display = 'none';
hideshow.innerHTML = 'Full Details';
}
else {
Skrivalica.style.display = 'block';
hideshow.innerHTML = 'Hide Details';
}
}
这是主体,表格
<div class="container">
<button onclick="toggleControls()" id="hideshow">Full Details</button>
<table class="tabela" id="vcontrols">
<tr>
<th>Action 1</th>
<th>Action 2</th>
<th>Action 3</th>
<th>Action 4</th>
<th>Action 5</th>
</tr>
<tr>
<td>Item 1</td>
<td>Item 2</td>
<td>Item 3</td>
<td>Item 4</td>
<td>Item 5</td>
</tr>
</table>
</div>
解决方案
function toggleControls() {
var Skrivalica = document.getElementById('vcontrols');
var displaySetting = Skrivalica.style.display;
var hideshow = document.getElementById('hideshow');
if (displaySetting === 'block') {
Skrivalica.style.display = 'none';
hideshow.textContent = 'Full Details';
}
else {
Skrivalica.style.display = 'block';
hideshow.textContent = 'Hide Details';
}
}
body {
background-color: #111;
}
.btn-container {
display: flex;
justify-content: center;
}
.container {
max-width: 80%;
margin-left: auto;
margin-right: auto;
background: #333;
color: #fff;
text-align: center;
display: flex;
}
.tabela {
margin: 0 auto;
}
#vcontrols {
display: none;
}
<div class="btn-container">
<button onclick="toggleControls()" id="hideshow">Full Details</button>
</div>
<div class="container">
<table class="tabela" id="vcontrols">
<tr>
<th>Action 1</th>
<th>Action 2</th>
<th>Action 3</th>
<th>Action 4</th>
<th>Action 5</th>
</tr>
<tr>
<td>Item 1</td>
<td>Item 2</td>
<td>Item 3</td>
<td>Item 4</td>
<td>Item 5</td>
</tr>
</table>
</div>
也许是一种更简单的方法,但我更改了一些 HTML 和 CSS。让 JS 一个人呆着。似乎为我工作。让我知道它是否不是您想要的!
推荐阅读
- python - 在 json 中保存 PIL 图像的最佳方法是什么
- r - 如何使用数据集的特定行顺序?
- c# - 获取当前控制台字体信息
- bash - Bash脚本逐行遍历文件的所有行并计算新行与前一行不同的次数
- python - 如何使用 PySpark 获取父 XML 节点
- xtext - 如何将导入(importURI)限制为某些文件类型
- c# - 检查协方差时是否忽略约束?
- kubernetes - 为什么 kube-dns 在 kubernetes 中找不到 API 服务器?
- java - 如何在 json 对象的列表视图中搜索?
- java - 来自 Jackson 的 kotlin 的自定义 json 序列化 java 原语