查看: 568|回复: 5
打印 上一主题 下一主题

[求助] 怎么样在css里根据设备/平台来适配不同的样式?

[复制链接]

该用户从未签到

11

主题

118

回帖

2067

积分

解元

Rank: 5Rank: 5

积分
2067
跳转到指定楼层
1
发表于 2019-6-14 10:01:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 5dhtml 于 2019-6-14 10:02 编辑

我发现PC上goldendict和安卓上比如欧路对css的解析有时候有无法接受的差异,导致同一个词典在不同设备显示有问题,我对CSS、HTML之类的是外行,只会根据别人的CSS做一些简单的修改,我看到FF大佬制作的词典里似乎有根据平台来适配,但是自己实际测试却无效,这是什么原因呢?我感觉要根据设备适配总得根据useragent什么的吧,像这样直接写可以吗?

FF的collins词典
  1. /* set automatically by script embedded in HTML */
  2. .windowsnt.goldendict{
  3.         font-size: 120%;
  4. }
  5. .windowsnt.goldendict .word_entry{
  6.     margin-top: 20px;
  7. }
  8. .windowsnt.goldendict .tab_multiwords{
  9.     margin-bottom: -20px;
  10. }
复制代码

LDOCE5:
  1. .mobile .lm5pp_popup {
  2.     bottom: 50px;
  3.     right: 10px;
  4. }
复制代码


评分

1

查看全部评分

本帖被以下淘专辑推荐:

  • TA的每日心情
    开心
    2019-6-23 00:02
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    43

    主题

    391

    回帖

    5万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    54723
    推荐
    发表于 2019-6-14 15:14:42 | 只看该作者
    直接这样写不行,想要让您的词典在不同平台都显示的很好,需要针对不同平台写特定的CSS,但是仅仅用CSS是不行的,要配合 JavaScript。一般做法是这样的:
    比如你的一个词条HTML是这样的:

    <p id="entry">
        <span class="headword">apple</span>
        <p class="meaning">a round fruit</p>
    </p>
    在 JavaScript里根据 useragent 判断当前是什么平台,然后用 JavaScript 给 <p id="entry"> 加上一个特定的 class, 比如是 Windows 平台,可能最后结果是 <p id="entry" class="windows">。然后在 CSS 里面就可以用类似您示例中的CSS来针对Windows平台写一些特定的样式了:

    p#entry.windows {
    ....
    }

    我有点印象F大大的词典好像就是这么做的,您可以参考看看。

    点评

    哦,我的疑问被解答了,明白了,他的css里windowsnt和goldendict这些类都是有js配合的,难怪  发表于 2019-6-14 22:48
  • TA的每日心情
    慵懒
    2023-3-2 10:50
  • 签到天数: 207 天

    [LV.7]常住居民III

    42

    主题

    1038

    回帖

    13万

    积分

    版主

    Rank: 10Rank: 10Rank: 10

    积分
    137827

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    推荐
    发表于 2019-6-14 15:25:58 | 只看该作者
    简单的办法就是根据屏幕宽度来判断。
    1. .wordhead { padding-bottom: .2875rem; word-break: break-all; border-bottom: .08rem dashed #002047; }
    2. @media screen and (max-width: 480px) { .wordhead { border-bottom: .08rem dashed transparent; } }
    复制代码
    更进一步的解决办法是 “自适应设计” 或 “弹性设计”,要看 CSS 的书。

    点评

    明白了,这个办法简单,多谢指点!  发表于 2019-6-14 22:50