我正在尝试通过媒体查询在 MediaWiki 中使用响应式皮肤,并且正在解决一些奇怪的行为。
如果我将测试 div 添加到 wiki 页面:
<div id="testing">TESTING</div>
然后添加一个媒体查询:
@media screen {
#testing {background-color: green;}
}
...到各个地方,该样式仅适用于某些浏览器。例如:
如果我将它添加到活动皮肤的“screen.css”文件中,所有其他工作风格都在其中:
- iPad:没有
- iPhone4:没有
- Chrome 20.0 XP+Mac:否
- Firefox 14.0.1 XP+Mac:是
如果我将它添加到通用皮肤的“shared.css”文件中,该文件适用于每个皮肤:
- iPad:没有
- iPhone4:没有
- Chrome 20.0 XP+Mac:否
- Firefox 14.0.1 XP+Mac:是
如果我将它添加到 wiki 的“MediaWiki:Common.css”页面:
- iPad:是的
- iPhone4:是的
- Chrome 20.0 XP+Mac:是
- Firefox 14.0.1 XP+Mac:是
注意:常规样式声明在所有这些位置都按预期工作。只有在包含在外部文件中的媒体查询中时,才会出现奇怪的现象。这显然是一个浏览器问题,再加上 MediaWiki 样式处理问题。Firefox 有何不同之处?
在使用 Chrome 的开发人员控制台检查页面时,我还注意到样式似乎是由“load.php”作为一大连贯的样式声明导入的,包括我的媒体查询;但似乎它只是没有被应用,即使在支持它的浏览器中也是如此。
任何人都可以阐明这种行为吗?我更喜欢在独立的样式表中工作,而不是在 wiki 编辑器中工作。
更新:
我还注意到,在 Firefox Web 控制台中检查元素时,样式列在活动样式中,如下所示:
load.php:1 @media screen
#testing {
background-color: green;
}
在 Chrome 的开发工具元素浏览器中以相同的方式检查元素时,样式不会在任何地方列出。
更新 2:
如果我在我的主题中替换这一行:
<link rel="stylesheet" href="/wiki/load.php?debug=false&lang=en&modules=mediawiki.legacy.commonPrint%2Cshared%7Cskins.customskin&only=styles&skin=customskin&*" />
直接链接到主题:
<link rel="stylesheet" href="wiki/skins/customskin/screen.css" />
样式适用于任何地方。