8

在网上找不到任何东西,想把问题扔在那里。

是 CSS 媒体查询的 PHP 版本吗?

4

5 回答 5

2

不,没有。

浏览器不会向服务器发送有关其任何媒体功能的信息,因此 PHP 没有实现此功能所需的信息。

于 2011-04-06T17:46:43.653 回答
2

我假设您希望这样做是为了检测移动浏览器 - 如果不是,那么这个答案有点无关紧要。

您可以查看Mobile ESP以获取移动用户代理检测库。它使用起来非常简单,并且在我的经验中效果很好。

于 2011-04-06T18:33:38.750 回答
2

我使用了一种方法(在http://php.net/manual/en/faq.html.php Example #4 上找到)结合了 javascript 和 php 来实现媒体查询的替代方案。我通过使用嵌入在我的 php 中的 javascript 来发布一个变量(screen.width)来实现这一点,然后 php 使用该变量来确定加载样式表的断点。将以下代码段包含到您的 head 标签中:

<?php
  if (isset($_GET['width'])) {
    $width = $_GET['width'];
    if ($width <= 480) { //mobile devices
      $style = '<link rel="stylesheet" href="mobile.css" type="text/css">';
    } elseif ($width <= 720){ //tablets
      $style = '<link rel="stylesheet" href="tablet.css" type="text/css">';
    } else { //desktops
      $style = '<link rel="stylesheet" href="desktop.css" type="text/css">';
    }
    echo $style;
  } else {
      echo "<script language='javascript'>\n";
      echo "  location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}" . "&width=\" + screen.width; \n";
      echo "</script>\n";
      exit();
  }
?>

我发现使用这种方法在页面的内容加载上也更有效,这与媒体查询不同(即使没有必要,它也会为所有设备加载 CSS 样式 - 即移动设备仍会加载桌面样式)。此方法可确保仅加载特定于设备的样式表,假设您有一个具有所有媒体设备通用样式的样式表。

于 2012-05-25T14:38:23.587 回答
1

您也许可以$_SERVER['HTTP_USER_AGENT']根据在那里找到的内容进行检查并做出决定。那里可能有一个图书馆已经处理了这个问题,但我不知道有一个在我的脑海中。

于 2011-04-06T17:38:52.367 回答
1

您可以使用get_browser php 函数来确定某些浏览器功能。但这与媒体查询不同。css 媒体查询取决于设备显示测量。php 函数不返回此类信息。

于 2011-04-06T18:50:32.870 回答