【发布时间】:2021-11-07 04:44:07
【问题描述】:
我有一个简单的表,它也有一个偏移的 td 并用作切换。它在 3 种状态之间切换,并且在 Chrome 中运行良好。谁能帮我解释一下为什么它目前不能在 Safari 中运行,我还没有在其他浏览器中测试过,但希望解决方案也能在其他浏览器中运行。
附上图片和代码。
感谢您提供任何帮助和解决方案。
M.
highlight {
background-color: #86C440;
color: white;
}
th {
font-size: 30px;
}
tr {
text-align: left;
}
td {
font-size: 20px;
background-color: #d4d6d3;
cursor: pointer;
}
.center {
margin-left: auto;
margin-right: auto;
}
tr {
position:relative;
transform:scale(1,1);
}
td.last{
position:fixed;
border: 5px solid #d4d6d3;
background-color: #4eafef;
left: -46px;
top: -46px;
height: 7px;
width: 7px;
line-height: 7px;
cursor: pointer;
}
<html>
<body>
<div id="switch">1</div>
<br><br><br><br><br><br><br><br>
<style>
table {border-collapse: collapse; border: 5px solid white; padding: 5px;}
table td {text-align: center; color: black; border: 5px solid white; padding: 10px; height: 66px; width: 66px;}
</style>
<table class="center">
<tr>
<td>1</td>
<td>2</td>
<td id="toggle" class="last" onclick="toggle1()"></td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>6</td>
</tr>
</table>
</body>
<script>
function toggle1() {
var key = document.getElementById("switch").innerHTML;
if (key == 1) {
document.getElementById("toggle").style.backgroundColor = "white";
document.getElementById("toggle").style.backgroundImage = "url('')";
document.getElementById("toggle").style.borderStyle = "solid";
document.getElementById("toggle").style.borderColor = "#d4d6d3";
document.getElementById("toggle").style.borderWidth = "5px";
document.getElementById("switch").innerHTML = 2;
//console.log("toggle clicked 1st time!");
} else if (key == 2) {
document.getElementById("toggle").style.backgroundColor = "#a370f0";
document.getElementById("toggle").style.backgroundImage = "url('')";
document.getElementById("toggle").style.borderStyle = "solid";
document.getElementById("toggle").style.borderColor = "#d4d6d3";
document.getElementById("toggle").style.borderWidth = "5px";
document.getElementById("switch").innerHTML = 3;
//console.log("toggle clicked 2nd time!");
} else if (key == 3) {
document.getElementById("toggle").style.backgroundColor = "#4eafef";
document.getElementById("toggle").style.backgroundImage = "url('')";
document.getElementById("toggle").style.borderStyle = "solid";
document.getElementById("toggle").style.borderColor = "#d4d6d3";
document.getElementById("toggle").style.borderWidth = "5px";
document.getElementById("switch").innerHTML = 1;
//console.log("toggle clicked 3rd time!");
}
}
</script>
</html>
【问题讨论】:
-
当您在 Safari 中说“它不工作”时,它有什么作用吗?您能否描述发生了什么(例如,是否有任何 console.logs 发生?)。
-
我不认为这是你的问题的原因,但只是要注意你有几个 ROW2 的 id。这不是合法的 HTML,id 必须是唯一的。考虑将它们更改为类。
-
在 Safari 中的修复似乎比在 Chrome 中更正确地工作 - 切换 td 在那里,但在屏幕上显示为负的左侧和顶部设置。有理由为此使用 td 吗?它使表格有点奇怪,一行中有 3 个单元格,其他行中有 2 个单元格。你能不能把它分成一个单独的元素,从而避免需要固定?
-
已替换 html,因此没有冲突的 ID。添加了第二张图片,显示了 safari 中正在发生的事情。 (切换消失,白色边框未显示)。正如 A Haworth 指出的那样,切换开关可能不在屏幕上!仍然不确定如何修复。将尝试单独切换,但在实际表格中,在跨越它们的编号单元格上方还有其他单元格。
-
切换开关在 Safari 上,仅在屏幕外。对我来说,Safari 正在做正确的事情,修复了相对于视口的切换。
标签: html css html-table safari