这个问题涉及使用相同html的静态html页面和使用PHP动态生成的页面的样式之间的CSS行为差异。
在静态页面中,悬停效果由单独样式表中定义的以下样式应用:
div.selectable_class { background-color:white}
div.selectable_class:hover { background-color:blue }
静态HTML片段如下:
<div class="selectable_class" onclick="event handler here">
<div class="ano_class">
<!-- Contents-->
</div>
</div>
当我使用此代码加载静态页面时,悬停效果如预期一样工作,颜色从白色变为蓝色,再变回白色。
然后,我使用了相同的样式表,并使用PHP动态生成HTML,注意到悬停效果已经消失,但颜色的变化是通过点击div触发的。
为了确认我正确地生成了动态HTML,我做了一个View Source,并将生成的HTML复制到一个单独的文件中,然后将其加载到中
神奇的是,悬停效果在那个版本中运行得很好!
我在这个网站的其他地方看到了提到的文档类型的影响。在这两种情况下,我的文档类型指定如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
请参阅Safari 5.1.2版本。
如果有人能揭露这种行为,我将不胜感激。
PHP在服务器上运行,对web浏览器如何显示生成的HTML、CSS没有任何了解或影响。如果有差异,那就意味着用PHP生成的HTML/CSS与静态页面中包含的HTML/CSS不同。
这不一定是你问题的答案,但请记住,早期版本的IE并不理解:将鼠标悬停在不是链接的元素上。我不确定在哪一个版本中,这一点从我的脑海中消失了。
如果你正在寻找一个跨浏览器的解决方案,那么,你可能不得不求助于一个javascript函数,比如jQuery的.hooper()。这也可能是解决当前问题的一种方法。