在网上找不到任何东西,想把问题扔在那里。
是 CSS 媒体查询的 PHP 版本吗?
不,没有。
浏览器不会向服务器发送有关其任何媒体功能的信息,因此 PHP 没有实现此功能所需的信息。
我假设您希望这样做是为了检测移动浏览器 - 如果不是,那么这个答案有点无关紧要。
您可以查看Mobile ESP以获取移动用户代理检测库。它使用起来非常简单,并且在我的经验中效果很好。
我使用了一种方法(在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 样式 - 即移动设备仍会加载桌面样式)。此方法可确保仅加载特定于设备的样式表,假设您有一个具有所有媒体设备通用样式的样式表。
您也许可以$_SERVER['HTTP_USER_AGENT']
根据在那里找到的内容进行检查并做出决定。那里可能有一个图书馆已经处理了这个问题,但我不知道有一个在我的脑海中。
您可以使用get_browser php 函数来确定某些浏览器功能。但这与媒体查询不同。css 媒体查询取决于设备显示测量。php 函数不返回此类信息。