【问题标题】:Is there a way to specify CSS specifically for Android有没有办法专门为 Android 指定 CSS
【发布时间】:2013-08-22 00:54:50
【问题描述】:

我正在开发一个 Phonegap 应用程序,并且在我的 Android 设备上作为已编译的 Phonegap 应用程序与桌面上的 Chrome 相比,我的 Android 设备上的字形字体的 CSS 行高和边距呈现不同的问题。

有没有办法专门为 Android 的渲染引擎指定 CSS 样式,类似于您在 CSS 中常见的跨浏览器功能(例如 -webkit、-moz 等)?

我使用的字体是http://www.entypo.com/,我遇到问题的 CSS 样式特别是行高和边距。我在整个应用程序中的常规字体没有遇到任何此类问题。

【问题讨论】:

    标签: android css google-chrome fonts cordova


    【解决方案1】:

    如果您可以检测到您的服务对象的设备/环境,那么专门针对该设备上的元素定位就像将一个类附加到页面的 <html> 标记一样简单。然后只需从该根类调用您的样式声明。例如:

    .wrapper {
        background: blue; /* will apply to all documents independent of device */
    }
    
    .android .wrapper {
        background: green; /* will only apply to documents with the .android base class */
    }
    

    至于检测设备,这是一个完全不同的问题,但假设您可以检测到设备,此方法将有效。

    【讨论】:

    • 感谢您的建议。根据您的回答,假设没有办法像针对各种浏览器那样专门为 Android 渲染引擎声明 CSS 样式是否正确?
    • 好吧,您实际上并不是针对设备本身,而是针对该设备的浏览器。因此,如果您知道该浏览器存在限制,并且您知道如何定位该浏览器,那么您可以使用上述方法应用特定样式。但据我所知,Android/Google 移动浏览器没有“Android”前缀。
    • 感谢您的快速响应,我已经实施了您的解决方案,它的工作就像一个魅力。太糟糕了,Android 设备的 CSS 中没有声明:)。
    【解决方案2】:

    在您的 Android 代码中,您可以在 loadUrl() 之后添加到您的 onCreate()

    this.sendJavascript("document.getElementsByTagName('body')[0].className = 'android'");
    

    这将为您的<body> 添加一个“android”类,并允许您为您的应用程序的 Android 版本使用特定的 CSS 选择器。如果您已经在 <body> 中应用了一个类,您可以这样做

    this.sendJavascript("document.getElementsByTagName('body')[0].className += ' android'");
    

    【讨论】:

    • 感谢您的建议。根据您的回答,假设没有办法像针对各种浏览器那样专门为 Android 渲染引擎声明 CSS 样式是否正确?
    • 最接近的可能是使用 -webkit,但正如您可能已经看到的那样,它不仅会影响 Android。据我所知,没有专门针对 Android 设备的 CSS 选择器。
    猜你喜欢
    • 2021-12-08
    • 2021-05-17
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 2019-07-12
    • 2017-11-13
    • 2014-07-19
    • 1970-01-01
    相关资源
    最近更新 更多