【问题标题】:PHP conditions depending on window width (media queries?)PHP 条件取决于窗口宽度(媒体查询?)
【发布时间】:2013-09-24 06:21:18
【问题描述】:

我有一个响应式网站,我需要一些 PHP 条件,具体取决于窗口宽度(或媒体查询)。

例子:

if ($window_width > 1400px) {
    echo 'Your window is wider than 1400px';
}

elseif ($window_width > 1000px) AND ($window_width < 1399px) {
    echo 'Your window is between 1000px and 1399px';
}

else {
    echo 'Your window is narrower than 1000px.';
}

感谢您的帮助!

【问题讨论】:

  • 我不认为你可以这样做,因为 PHP 在服务器上而不是在客户端上运行。为什么不使用简单的 CSS @media 查询?甚至是Javascript?
  • 我需要根据窗口宽度运行不同的 PHP 脚本。

标签: php media-queries conditional-statements


【解决方案1】:

在视图中,您可以显示/隐藏 div,如下所示:

<style>
    #web {display: block;}
    #mobile {display: none;}

    @media screen and (max-width: 320px) {
        #web {display: none;}
        #mobile {display: block;}
    }
</style>

<div id="mobile">
    <?php echo "is mobile"; //include("page_mobile.phtml"); ?>
</div>

<div id="web">
    <?php echo "is web"; //include("page_web.phtml"); ?>
</div>

【讨论】:

    【解决方案2】:

    这是诀窍: 使用 js 评估窗口宽度,然后将 PHP 加载到框架中并将宽度放入参数中。然后,您的 PHP 脚本可以读取该参数并根据该值执行不同的条件。

    这里是js部分:

    <script type="text/javascript">
        var width = window.innerWidth;
        document.write('<iframe src="content.php?w='+width+'"></iframe>');
    </script>
    

    在您的 content.php 文件中,只需读取宽度参数并对其进行处理:

    <?php
        //Get width of browser window
        $width = $_GET['w'];
        echo ('width: '.$width);
    ?>
    

    【讨论】:

      【解决方案3】:

      不,你不能用 php 做到这一点。 php 是严格的服务器端

      用户 javascript 代替。 下面是我使用 javascript 获取设备分辨率的代码

      <script>
           screenWidth = window.screen.width,
           screenHeight = window.screen.height;
          console.log(screenWidth);
          console.log(screenHeight);
      </script> 
      

      【讨论】:

        【解决方案4】:

        我假设这是用于设备检测。我不确定您是否可以单独使用 PHP 检测窗口宽度。如果可以,那么此信息将出现在 HTTP 标头中。我建议使用为此构建的开源 PHP 类:http://mobiledetect.net/

        【讨论】:

        • 这无济于事,因为我还需要脚本检测何时仅在桌面上调整了窗口的大小。
        • 那你看错了技术。 PHP 在服务器端执行。您可以使用 CSS 媒体查询来实现这一点。 css-tricks.com/css-media-queries
        • 我知道 CSS 的媒体查询,但我需要根据窗口宽度执行不同的 PHP 脚本,而这对于纯 CSS 媒体查询是不可能的。
        • PHP 不是合适的技术。如果您希望在客户端发生某些事情,即如果用户调整其浏览器窗口的大小,则需要使用客户端技术。 CSS 媒体查询,或 javascript。
        【解决方案5】:

        检查一下

        Goolgle Mobile Detect

        尝试使用 http://www.php.net/get_browser 并检查 isMobileDevice 字段。当然,只有在 php.ini 中设置了 browscap.ini 的路径时,它才会有所帮助。如果没有,你可以使用像https://github.com/garetjax/phpbrowscap这样的php类

        【讨论】:

        • 这无济于事,因为我还需要脚本检测何时仅在桌面上调整了窗口的大小。
        • 那么你可以帮助这个代码getbootstrap.com/css/#responsive-utilities-classes
        • 啊,有时候解决办法就是这么简单!实用程序类在我的情况下工作 - 感谢您的提示!
        猜你喜欢
        • 2012-07-03
        • 1970-01-01
        • 2012-12-26
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-08
        相关资源
        最近更新 更多