• 移动前端的一些坑和解决方法(外观表现)


    原文链接:http://caibaojian.com/mobile-web-bug.html

    第一篇是外观表现:

    问题描述环境与频率解决方法
    border-radius百分比失效 Android2.3.x 设置一个较大值如border-radius:9999px
    placeholder属性设置的文字向上偏移的厉害 Android4.x部分机型 line-height:normal
    iOS5及以后版本都支持. iOS4及以下版本不支持,会当做static处理.
    1. Android 2.1 及以下版本不支持.
    2. Android 2.2 滚动过程中不保持fixed的位置,滚动完成后回到fixed的位置.
    3. Android 2.3 支持fixed, 但是要求页面禁止缩放.
    4. Android 3+ 支持fixed.
     
    如果一个应用了css3 transform的元素里面包含fixed定位的元素,在webkit核心的浏览器下,该fixed定位的元素会失效,其实际定位效果类似绝对定位,会跟着滚动条的滚动而滚动! ios 避免在应用了css3 transform的元素内部嵌套fixed定位的元素。
    webkit上的input,button,及select的默认样式可以通过以下代码禁用,然后自定义。   -webkit-appearance:none;
    video标签的父元素(祖辈元素)设置transform样式后,标签会脱离文档流 部分android机型 避免使用transform,如果需要设置位移,可使用绝对定位加top/left代替
    body设置100%高度后,在移动浏览器里面可能会被底部的导航栏挡住: 各移动浏览器经常出现 document.documentElement.style.height = window.innerHeight + 'px'

    字体设置建议:

                    
    body {
            font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;
    }
                    
    

    字体设置·

    iOS 4.0+ 使用英文字体 Helvetica Neue,之前的iOS版本降级使用 Helvetica。

    中文字体设置为华文黑体STHeiTi。

    需补充说明,华文黑体并不存在iOS的字体库中(http://support.apple.com/kb/HT5484?viewlocale=en_US),
    但系统会自动将华文黑体STHeiTi兼容命中系统默认中文字体黑体-简或黑体-繁:

    //code from http://caibaojian.com/mobile-web-bug.html
    Heiti SC Light 黑体-简 细体
    Heiti SC Medium 黑体-简 中黑
    Heiti TC Light 黑体-繁 细体
    Heiti TC Medium 黑体-繁 中黑
    

    原生Android下中文字体与英文字体都选择默认的无衬线字体。

    4.0之前版本英文字体原生Android使用的是Droid Sans,中文字体原生Android会命中Droid Sans Fallback。

    4.0+ 中英文字体都会使用原生Android新的Roboto字体。

    其他第三方Android系统也一致选择默认的无衬线字体。

    参考阅读

    使用border-image实现类似iOS7的1px底边

    iOS7已经发布有一段时间,扁平化设计风格有很多值得称赞的地方,其中有很多设计细节都是值得研究的。

    首先,来看下面iOS设置的截图中的border:

    tip-bd1px-1

    从上面的截图可以看到iOS7的设计是非常精细的,border是一根非常细的线。这篇文章将说明如何使用border-image实现iOS7的border效果。

    在看下面的内容之前,需要先了解devicePixelRatio和border-image,不熟悉的同学请自行脑补:

    border属性实现效果

    我们在实现border时通常都是使用border属性,如下:

    .border-1px {
        border- 1px 0;
        border-style: solid;
        border-color: #333;
    }
    

    显示效果对比:

    tip-bd1px

    上面这张图片可以看到,在手机上border无法达到我们想要的效果。这是因为devicePixelRatio特性导致,iphone的devicePixelRatio==2,而border- 1px描述的是设备独立像素,所以,border被放大到物理像素2px显示,在iPhone上就显得较粗。

    使用border-image属性实现物理1px

    通常手机端的页面设计稿都是放大一倍的,如:为适应iphone retina,设计稿会设计成640*960的分辨率,图片按照2倍大小切出来,在手机端看着就不会虚化,非常清晰。

    同样,在使用border-image时,将border设计为物理1px,如下:

    tip-bd1px

    样式设置:

    .border-image-1px {
        border- 1px 0px;
        -webkit-border-image: url("border.png") 2 0 stretch;
        border-image: url("border.png") 2 0 stretch;
    }
    

    显示效果对比:

    原文来自http://caibaojian.com/mobile-web-bug.html

    这里在手机上的效果和iOS7已经非常接近了。

    实际示例(devicePixelRatio: 1)

    border-1px
    border-image-1px

    Note: border.png也可以直接使用的base64替代哦


    来源:前端开发博客

  • 相关阅读:
    ActionBar认知
    CSS动画-多列
    CSS3动画效果
    GreenDao数据库框架
    Handler介绍
    AsyncTask介绍
    Android中IntentService的原理及使用
    English interview!
    第六章 结构
    结构体中定义函数指针
  • 原文地址:https://www.cnblogs.com/sybboy/p/6437744.html
Copyright © 2020-2023  润新知