我有一个背景图像作为CSS中的体类的一部分:
- body.soon1 {
- background-color: white;
- background-image: url(soon1a.png);
- background-position: center;
- background-repeat: no-repeat;
- }
然后我有一个javascript函数,将改变身体类.
我在后台运行图像的原因是,当脚本激活时,背景颜色和背景图像将在完全相同的时间发生变化,您无法选择图像.
是否有可能只在将鼠标悬停在背景图像上时更改光标类型?我明白我可以放
- cursor: pointer;
在体型中,但这使光标出现在整个页面上.
单击页面上的任意位置时,可以查看背景更改的live page,currently,.
编辑:我现在有一些对我有用的东西.我添加了一个没有任何内容的居中div:
- div.clickme {
- width:300px;
- height:400px;
- position:absolute;
- left:50%;
- top:50%;
- margin:-150px 0 0 -200px;
- cursor: pointer;
- }
这对我有用,因为我可以设置自己的任意区域,但如果有人有更好的解决方案,请告诉我.
解决方法
实际上没有令人信服的理由使图像成为背景图像.将图像放在两个包装器中(无论视口是什么,都需要保证垂直和水平的绝对居中),这样会更好.
您可以通过使用对象填充数组来扩展数组,以便它可以保存图像和正文样式的可能值.这样,即使您希望稍后添加其他更改,也可以使用相同的方法(循环遍历数组)来选择所需的所有更改.
此外,虽然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. -->