【问题标题】:How to have my web application render using different stylesheet on mobile device browser?如何让我的 Web 应用程序在移动设备浏览器上使用不同的样式表呈现?
【发布时间】:2010-10-15 17:22:52
【问题描述】:

我有一个 Java Web 应用程序正在运行,当通过移动设备(例如 iPhone 上的 safari 浏览器)访问时,JSP 页面呈现不佳。设备屏幕不适合该页面,因此我正在寻找解决此问题的方法

经过一番谷歌搜索,我发现了可以添加到 JSP 的以下行

<link href="/css/global.css" rel="stylesheet" type="text/css" media="handheld" />

这是确保网络应用程序可以在桌面和移动浏览器上运行的充分方法,还是我完全忽略了这一点?

有人建议我看看 Spring MVC 可以使用什么,但我认为这可能是一条红鲱鱼建议,因为上面会更简单

【问题讨论】:

    标签: java jsp web-applications mobile-safari


    【解决方案1】:

    Spring MVC 提供了一种基于 HttpServletRequest 的 change "Themes" on the fly 非常简单的方法 - 因此您可以想象有一个标准主题,然后是另一个基于用户代理激活的“手持”主题。

    然后,Spring MVC 库允许您根据当前请求的主题在您的视图层中使用不同的 CSS 文件,不同的任何东西。但是,如果您当前没有使用 Spring MVC,那么将您的应用程序迁移到它可能不值得。

    另一方面,您可以简单地让您的 JSP 根据用户代理呈现不同的 <link> 标记,以根据条件逻辑使用不同的 CSS 文件。如果您的应用程序架构良好,并且您有设置 HTML 标头和 CSS 包含在一个地方的逻辑,那么只需在一个地方添加此逻辑并使其适用于所有地方应该很容易。

    【讨论】:

      【解决方案2】:

      只需指定这两种样式。客户完全知道根据media type 选择哪一个。确实在手机上使用handheld(至少是300~400px宽屏的设备)。

      <link rel="stylesheet" href="css/global.css" media="screen,projection">
      <link rel="stylesheet" href="css/mobile.css" media="handheld">
      <link rel="stylesheet" href="css/print.css" media="print">
      

      您看,它还可以为打印设备添加特定的样式表。这也经常被忽视。

      【讨论】:

        【解决方案3】:

        css 媒体查询做你想做的事

        <link rel="stylesheet" media="all and (max-device-width: 480px)" href="iphone.css">
        <link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait)" href="ipad-portrait.css">
        <link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape)" href="ipad-landscape.css">
        <link rel="stylesheet" media="all and (min-device-width: 1025px)" href="ipad-landscape.css"> 
        

        【讨论】:

          【解决方案4】:

          CakePHP 具有类似的函数来处理基于 HTTP 标头用户代理的请求。您可以将整个网站委托给不同的视图。

          http://book.cakephp.org/view/1292/Obtaining-Request-Information

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-10-07
            • 1970-01-01
            • 2021-03-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多