将图像设置为背景图像确实没有令人信服的理由。将图像放在两个包装器中会更好地为您服务(无论视口如何,都需要保证垂直和水平绝对居中)。
您可以通过使用对象填充数组来扩展数组,以便它可以保存图像和主体样式的可能值。这样,即使您想稍后添加其他更改,您也可以使用相同的方法(循环遍历数组)来挑选出您想要的所有更改。
此外,虽然 Web 浏览器的标准相当宽松,但符合简单的 HTML 5 要求并仍然保留功能确实是微不足道的。
最后,我强烈建议您避免使用我所说的“时髦编码”。虽然用晦涩的名称命名函数、变量等很有趣,以使少数检查源代码的人感到高兴,但这会导致不必要的钝化语言和较低的可维护性。简而言之,即使您是唯一的维护者,这也是一种不好的做法。
根据下面的这些评论(带有缩进清理)观察您的源代码的新版本。
<html>
<head>
<title>Something Amazing Will Happen</title>
<style type="text/css">
body.light {
background-color: white;
}
body.dark {
background-color: black;
}
div.outside-wrapper {
position: absolute;
top: 50%;
width: 100%;
height: 1px;
overflow: visible;
}
div.inside-wrapper {
position: absolute;
top: 50%;
left: 50%;
width: 381px;
height: 393px;
margin: -197px 0 0 -191px;
cursor: pointer;
}
</style>
<script type="text/javascript">
styleIndex = 0;
var states = [{style: "light", image: "soon1a.png"}, {style: "dark", image: "soon2a.png"}];
function nextStyle() {
if (++styleIndex >= states.length)
styleIndex = 0;
var state = states[styleIndex];
document.body.className = state.style;
document.getElementById("clickme").src = state.image;
}
var tap = true;
document.addEventListener('touchstart',function(e) {
tap = true;
});
document.addEventListener('click',function(e) {
nextStyle()
tap = false;
});
document.addEventListener('touchmove',function(e) {
tap = false;
});
document.addEventListener('touchend',function(e) {
if(tap)
nextStyle();
});
</script>
</head>
<body class="light">
<div class="outside-wrapper">
<div class="inside-wrapper">
<img src="soon1a.png" id="clickme">
</div>
</div>
</body>
</html>
<!-- Don't ask me what it is. -->