草庐IT

php - 媒体查询在 MediaWiki 中有效吗?

coder 2024-04-07 原文

我正在尝试使用媒体查询在 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:是

如果我将它添加到维基的“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&amp;lang=en&amp;modules=mediawiki.legacy.commonPrint%2Cshared%7Cskins.customskin&amp;only=styles&amp;skin=customskin&amp;*" />

直接链接到主题:

<link rel="stylesheet" href="wiki/skins/customskin/screen.css" />

样式在任何地方都正确应用。

最佳答案

除了将查询添加到 Common.css 之外,还有几种方法可以做到这一点。这两种方法都涉及绕过 MediaWiki 资源加载器的样式预处理,这是 1.17 版的新功能。

方法一:

根据 this thread :

To load a single css file (raw, without minification and other ResourceLoader processing): Use OutputPage::addStyle( url, media, condition ) where url points to a file directly. For example:

$out->addStyle( 'modules/IE70Fixes.css', 'screen', 'IE 7' );

因此,将此行添加到/skins/customskin.php 文件中的 initPage() 函数中:

$out->addStyle( 'customskin/customstyle.css', 'screen');

方法二:

根据 MediaWiki 开发人员对 this bug I filed 的回复:

If you're in a skin and you want something to apply to a specific media type, put it in a separate file and declare the media type in the resource definition. Either that or omit the media type in the resource definition and you'll be able to use @media blocks.

因此,在 resources/resources.php 中,在皮肤的数组构造函数中,将这一行替换为:

'styles' => array( 'customskin/customstyle.css' => array( 'media' => 'screen' ) ),

用这一行:

'styles' => array( 'customskin/customstyle.css' ),

关于php - 媒体查询在 MediaWiki 中有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11593312/

有关php - 媒体查询在 MediaWiki 中有效吗?的更多相关文章

  1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  2. ruby - 如何进行排列以有效地定制输出 - 2

    这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][

  3. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

  4. 怎样用一台手机做自媒体? - 2

    其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时

  5. sql - 查询忽略时间戳日期的时间范围 - 2

    我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时

  6. python - 是否可以使用 Ruby 或 Python 禁用 anchor /引用来发出有效的 YAML? - 2

    是否可以在PyYAML或Ruby的Psych引擎中禁用创建anchor和引用(并有效地显式列出冗余数据)?也许我在网上搜索时遗漏了一些东西,但在Psych中似乎没有太多可用的选项,而且我也无法确定PyYAML是否允许这样做.基本原理是我必须序列化一些数据并将其以可读的形式传递给一个不是真正的技术同事进行手动验证。有些数据是多余的,但我需要以最明确的方式列出它们以提高可读性(anchor和引用是提高效率的好概念,但不是人类可读性)。Ruby和Python是我选择的工具,但如果有其他一些相当简单的方法来“展开”YAML文档,它可能就可以了。 最佳答案

  7. ruby-on-rails - solr 清理查询 - 2

    我在Rails上使用带有ruby​​的solr。一切正常,我只需要知道是否有任何现有代码来清理用户输入,比如以?开头的查询。或* 最佳答案 我不知道执行此操作的任何代码,但理论上可以通过查看parsingcodeinLucene来完成并搜索thrownewParseException(只有16个匹配!)。在实践中,我认为您最好只捕获代码中的任何solr异常并显示“无效查询”消息或类似信息。编辑:这里有几个“sanitizer”:http://pivotallabs.com/users/zach/blog/articles/937-s

  8. ruby-on-rails - Rails 3 在一个查询中包含多个表 - 2

    我正在为锦标赛开发一个Rails应用程序。我在这个查询中使用了三个模型:classPlayertruehas_and_belongs_to_many:tournamentsclassTournament:destroyclassPlayerMatch"Player",:foreign_key=>"player_one"belongs_to:player_two,:class_name=>"Player",:foreign_key=>"player_two"在tournaments_controller的显示操作中,我调用以下查询:Tournament.where(:id=>params

  9. ruby-on-rails - Sunspot:如何对具有不同值的多个字段进行全文查询? - 2

    我想用sunspot重现以下原始solr查询q=exact_term_text:fooORterm_textv:foo*ORalternate_text:bar*但我无法通过标准的太阳黑子界面理解这是否可能以及如何实现,因为看起来:fulltext方法似乎不接受多个文本/搜索字段参数我不知道将什么参数作为第一个参数传递给fulltext,就好像我通过了"foo"或"bar"结果不匹配如果我传递一个空参数,我得到一个q=*:*范围过滤器(例如with(:term).starting_with('foo*')(顾名思义)作为过滤器查询应用,因此不参与评分。似乎可以手动编写字符串(或者可能使

  10. ruby-on-rails - 在不重新查询数据库的情况下重新排序 Rails 中的事件记录? - 2

    例如,假设我有一个名为Products的模型,并且在ProductsController中,我有以下代码用于product_listView以显示已排序的产品。@products=Product.order(params[:order_by])让我们想象一下,在product_listView中,用户可以使用下拉菜单按价格、评级、重量等进行排序。数据库中的产品不会经常更改。我很难理解的是,每次用户选择新的order_by过滤器时,rails是否必须查询,或者rails是否能够以某种方式缓存事件记录以在服务器端重新排序?有没有一种方法可以编写它,以便在用户排序时rails不会重新查询结果

随机推荐