JS处理

首先,可以通过 window.devicePixelRatio 拿到设备的像素比,然后给 html 标签加上的相应的样式。

function retina () { // 高分辨率屏幕处理
if (navigator.userAgent.toUpperCase().indexOf('IPHONE OS') !== -1) return; // IOS会缩放,不处理
var classNames = [];
var pixelRatio = window.devicePixelRatio || 1;
classNames.push('pixel-ratio-' + Math.floor(pixelRatio));
if (pixelRatio >= 2) {
classNames.push('retina');
} var html = document.getElementsByTagName('html')[0]; classNames.forEach(function (className) {
html.classList.add(className);
});
}

这样一来我们可以通过, html.pixel-ratio-2 给不同分辨率的屏幕加上特殊的样式

单个边的1px方案

由于andorid不能设置0.5px像素的边框,所以需要通过伪元素来模拟边框,先使伪元素的高度为1px,然后使用transform: scale(.5)缩小相应的大小即可。具体实现代码如下:

.item {
position: relative;
&:before{
content: '';
position: absolute;
left: 0;
top: 0;
bottom: auto;
right: auto;
width: 1px;
height: 100%;
padding: 0px; color: green;">@color;
display: block;
z-index: 1;
html.pixel-ratio-2 & {
.transform(scaleX(0.5));
}
html.pixel-ratio-3 & {
.transform(scaleX(0.33));
}
}
}

然后不同方向的边框,只需要跳转伪元素的位置和缩放位置即可。该实现方案来自Framework7

终极解决方案:

参考有赞的vant 解决方案: https://github.com/youzan/vant/blob/dev/packages/style/hairline.less

参考:

https://www.cnblogs.com/libin-1/p/6639310.html

https://www.w3cplus.com/css/fix-1px-for-retina.html

1px实现方案的更多相关文章

  1. 深入研究-webkit-overflow-scrolling:touch及ios滚动

    1. -webkit-overflow-scrolling:touch是什么? MDN上是这样定义的: -webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效 ...

  2. 转:如何在Vue项目中使用vw实现移动端适配

    https://www.w3cplus.com/mobile/vw-layout-in-vue.html 有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flex ...

  3. 使用vw做移动端页面的适配

    Flexible到今天也有几年的历史了,解救了很多同学针对于H5页面布局的适配问题.而这套方案也相对而言是一个较为成熟的方案.简单的回忆一下,当初为了能让页面更好的适配各种不同的终端,通过Hack手段 ...

  4. 在Vue项目中使用vw实现移动端适配

    有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着viewport单位越来越 ...

  5. 如何在Vue项目中使用vw实现移动端适配(转)

    有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着viewport单位越来越 ...

  6. 如何在Vue项目中使用vw实现移动端适配

    有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在< 使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着 viewport 单位 ...

  7. web开发中移动端适配

    这个话题有些复杂,说起来有些琐碎,因为和移动端适配相关的问题太多了. 1. 概念 1.1 设备像素 设备像素被称为物理像素,它是显示设备中一个最小的物理部件.每个像素可以根据操作系统设置自己的颜色和亮 ...

  8. html页面在苹果手机内,safari浏览器,微信中滑动不流畅问题解决方案

    1. -webkit-overflow-scrolling:touch是什么? MDN上是这样定义的: -webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效 ...

  9. 移动端高清适配方案(解决图片模糊问题、1px细线问题)

    本文介绍了移动端适配的3种方法,以及移动端图片模糊问题和1px细线问题的解决方法.当然了,在这之前先整理了与这些方法相关的知识:物理像素.设备独立像素.设备像素比和viewport. >> ...

随机推荐

  1. iOS弹出UIViewController小视图

    在TestViewController1中弹出TestViewController2 在TestViewController中点击按钮或者什么触发方法里面写入以下代码 TestViewControll ...

  2. 洛谷模拟NOIP考试反思

    洛谷模拟NOIP考试反思 想法 考了这么简单的试qwq然而依然emmmmmm成绩不好 虽然本次难度应该是大于正常PJ难度的但还是很不理想,离预估分数差很多qwq 于是就有了本反思嘤嘤嘤 比赛链接 原比 ...

  3. 关于陌生的依赖模块,如withStyles、react-apollo等

    有自己不认识的依赖,可参考的学习方式: 1.各大技术分享网站的文章(最快) 2.npm官网下的文档(最全)

  4. D - Counting Test Gym - 101532D 字符串

    Yousef has a string s that is used to build a magical string w by repeating the string s infinitely ...

  5. md5之守株待兔

    第一个实验吧的题目,不太会做,参考了很多大佬的经验,最后发现这个题目很简单,大概这就是入门的感觉吧!如果你多次尝试点开题目给的连接,就会发现,系统的密钥一直会变,可是我的密钥却保持一个,这就让我们联想 ...

  6. google colab 使用指南

    重启colab !kill - - 输出ram信息 !cat /proc/meminfo 输出cpu信息 !cat /proc/cpuinfo 更改工作文件夹 一般,当你运行下面的命令: !ls 你会 ...

  7. Linux Driver 开发 eclipse工程找不到头文件

    如下添加头文件路径, 右键单击工程,选择 Properties  >  C/C++ Build  >  Settings  >  >  GCC C/C++ Compiler  ...

  8. 初学Python——装饰器

    一.什么是装饰器 当我们做好一个产品之后,需要对它进行不断地维护,对某些函数增加一些功能.这个时候如果去修改源代码将是非常不合适的.(原因:1.原则上已经写好的函数尽量不去修改它,因为一旦修改可能会导 ...

  9. Google机器学习课程基于TensorFlow : https://developers.google.cn/machine-learning/crash-course

    Google机器学习课程基于TensorFlow  : https://developers.google.cn/machine-learning/crash-course         https ...

  10. 抽取非基本验证到规则文件 - A2D规则引擎

    基本验证与业务验证,基本验证就是始终保持不变的验证规则,可以通过如下硬编码实现: public class Order { [Required] [Range(")] public deci ...