移动项目开发中,安卓或者IOS等高分辨率屏幕会把1px的border渲染成2px来显示,网上搜了一下,解决方法如下:

一、利用css中的transform的缩放属性解决,推荐这个。如下面代码。

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>解决1px边框问题</title><meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"/><style>.line {position:relative;}.line:after {width:200%;height:200%;position:absolute;top:0;left:0;z-index:0;content:"";-webkit-transform:scale(0.5);-webkit-transform-origin:0 0;transform:scale(0.5);transform-origin:0 0;}.list {width:100%;margin:auto;list-style:none;padding:0;}.list:after {border:1px solid #ccc;border-radius:10px;}.item {padding:10px;}.item:after {border-bottom:1px solid #ccc;}.item:last-child:after {display:none;}</style>
</head>
<body><ul class="list line"><li class="item line">item001</li><li class="item line">item002</li><li class="item line">item003</li><li class="item line">item004</li><li class="item line">item005</li><li class="item line">item006</li><li class="item line">item007</li><li class="item line">item008</li><li class="item line">item009</li><li class="item line">item010</li>
</ul></body>
</html>

这个主要利用after伪类进行缩放。调用公共class,还是很方便的。

二、JS判断是否支持0.5px边框,是的话,则输出类名hairlines

if (window.devicePixelRatio && devicePixelRatio >= 2) {var testElem = document.createElement('div');testElem.style.border = '.5px solid transparent';document.body.appendChild(testElem);if (testElem.offsetHeight == 1){document.querySelector('html').classList.add('hairlines');}document.body.removeChild(testElem);
}

.hairlines .box {}

目前在用这个方法,使用很方便,无须多余的class,可惜支持的不是很好,IOS8+以上才可以。

三、box-shadow 阴影

-webkit-box-shadow:0 1px 1px -1px rgba(0, 0, 0, 0.5);

最先用的就是这个方法,IOS没问题。很多安卓机显示就是坨翔,黑乎乎的描边。。

四、background-image

.border {background-image:linear-gradient(180deg, red, red 50%, transparent 50%),linear-gradient(270deg, red, red 50%, transparent 50%),linear-gradient(0deg, red, red 50%, transparent 50%),linear-gradient(90deg, red, red 50%, transparent 50%);background-size: 100% 1px,1px 100% ,100% 1px, 1px 100%;background-repeat: no-repeat;background-position: top, right top,  bottom, left top;padding: 10px;}

也能实现效果,使用很不方便

五、图片

.border-image{border-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAYAAABP2FU6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiPnH8zH/GMzAxAAHTyRNn/wMEGABpvQm9g9TJ1QAAAABJRU5ErkJggg==") 2 0 stretch;
border-width: 0px 0px 1px;
}

显示效果有点模糊,而且万一以后要修改个颜色,那不坑爹了。

所以,目前推荐第一种方法。

解决CSS移动端1px边框问题相关推荐

  1. [css] 移动端1px像素的问题及解决方案是什么?

    [css] 移动端1px像素的问题及解决方案是什么? viewport结合rem解决像素比问题 比如在devicePixelRatio=2设置meta <meta name="view ...

  2. 移动端1px边框实现

    Retina屏幕,设备像素比,移动端的边框在这些屏幕上1px  会表现处2px,3px像素的宽度,所以出现各种解决方案,今天只总结一种,以后慢慢补充..通过伪类 ::after.,原理就是通过tran ...

  3. 移动端视网膜(Retina)屏幕下1px边框线的解决方法

    本文主要介绍几种 移动端视网膜(Retina)屏幕下1px边框线的解决方法. 1.通过viewport + rem的方式来兼容. 目前这种兼容方案相对比较完美,适合新项目(老项目改用REM单位成本会比 ...

  4. 7种方法解决移动端Retina屏幕1px边框问题

    造成边框变粗的原因 其实这个原因很简单,因为css中的1px并不等于移动设备的1px,这些由于不同的手机有不同的像素密度.在window对象中有一个devicePixelRatio属性,他可以反应cs ...

  5. 移动端的1px边框问题

    最近在做一个移动端项目,涉及到1像素问题 其实质就是移动端的css里写1px,看起来比1px粗,这就是物理像素和逻辑像素的区别.物理像素和逻辑像素之间存在一个比例关系,在Javascript中可以用w ...

  6. 移动端采用Flexible将PX转换REM适配及开发中Retina屏1px边框的两种解决方案

    移动端采用Flexible将PX转换REM适配及开发中Retina屏1px边框的两种解决方案 说明:两个方案均基于Webpack构建. 方案一: 搭建环境及相关配置 webpack 3,需要loade ...

  7. vue-cli、脚手架创建、eslint、alias别名配置、proxy代理配置、axios、scoped、穿透、媒体查询、12栅格、动态rem、1px边框、移动端事件、300ms延迟问题(六)

    vue-cli的使用 现在使用前端工程化开发项目是主流的趋势,也就是说,我们需要使用一些工具来搭建vue的开发环境.一般情况下我们都会选择使用webpack进行项目的构建,在这里我们直接使用vue官方 ...

  8. css像素px,物理像素(pt),设备像素比(dpr),1px边框问题,viewport自适应

    关于 css像素px,物理像素(pt),设备像素比(dpr),1px边框问题,viewport自适应等问题. 目录 **关于 css像素px,物理像素(pt),设备像素比(dpr),1px边框问题,v ...

  9. 移动端1px像素问题及解决办法

    在移动端web开发中,UI设计稿中设置边框为1像素,前端在开发过程中如果出现border:1px,测试会发现在某些机型上,1px会比较粗,即是较经典的移动端1px像素问题.首选先看一下,pc时代和移动 ...

最新文章

  1. Scala vs. Groovy vs. Clojure [已结束]
  2. ArcGIS中的三种查询
  3. GDCM:gdcm::PhotometricInterpretation的测试程序
  4. SuperMap.IS.AjaxScript缓冲区分析及专题图制作
  5. 程序猿生存指南-38 枯木逢春
  6. 工作一年后,我有些感悟(写于2017年)
  7. 关于信贷业务中常用的模型说明
  8. linux 运行程序的方法,linux 长期运行程序的 四种方法
  9. 为什么Uber宣布从Postgres切换到MySQL?
  10. 自媒体运营,你要的小工具来了
  11. vue element-ui实现input输入框金额数字添加千分位
  12. ESP32编程使用OLED屏
  13. TWaver三维可视化管理软件、3D和2D开发工具软件的试用(申请试用的回复邮件)
  14. 我的理想作文400字计算机,我的理想作文400字5篇
  15. Keil 和 IAR静态库生成和使用方法
  16. 使用hutool工具导出Excel标题自定义顺序
  17. python hasattr()函数详解
  18. C++ 设计模式(8大设计原则、23种设计模式)李建忠
  19. 一种利用微小信号放大器进行放大的红外成像仪
  20. ENVI下的Landsat8图像融合

热门文章

  1. 汇编语言的程序设计方法(循环结构和分支结构)
  2. 用户名或用户域名_给自己的Hexo+GitHub静态博客绑定自己的专属域名
  3. 交大世界大学排名 计算机专业,2018考研:计算机专业全球院校排名公布,上海交通大学竟排第一?...
  4. win7 php mysql扩展名_win7下MySQL 5.1.73安装过程(图解)并在php.ini中启用相关扩展。...
  5. 饿了么研发总监马尧:外卖推荐算法中有哪些机制与手段?
  6. 几分钟了解阿里云云服务器ECS
  7. Nutanix 将社区版代码带入云中
  8. 三元运算 三个数取最大的
  9. 渴望尽快能找到工作,开始上班
  10. SqlServer中从字符串中获取项目指标方法charindex月substring结合