自从乔帮主提出retina屏以来。可练就了不少前端兄弟的像素眼,有强迫症的伙伴们日子可就煎熬了。为了画出真正的1像素边框,前端猿们也是受尽各浏览器的虐待了。

关于什么是移动端1像素边框问题,先上两张图,大家就明白了。

图1

图2

实现1PX边框的方法有很多,各有优缺点,比如通过背景图片实现、通过transform: scale(0.5)实现。本次实现的是通过VIEWPORT+rem实现的,优点是可以自适应已知的各类手机屏幕,且不存在其它方法存在的变颜色困难、圆角阴影失效问题。缺点嘛,这方法适全新项目,如果老项目想用这种方法,改动量估计会比较大。

<span style="font-size:18px;"><html>

    <head>
<title>1px question</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name="viewport" id="WebViewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<style>
html {
font-size: 1px;
}
* {
padding: 0;
margin: 0;
} .bds_b {
border-bottom: 1px solid #ccc;
} .a,
.b {
margin-top: 1rem;
padding: 1rem;
font-size: 1.4rem;
} .a {
width: 30rem;
} .b {
background: #f5f5f5;
width: 20rem;
}
</style>
<script> var viewport = document.querySelector("meta[name=viewport]");
//下面是根据设备像素设置viewport
if (window.devicePixelRatio == 1) {
viewport.setAttribute('content', 'width=device-width,initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no');
}
if (window.devicePixelRatio == 2) {
viewport.setAttribute('content', 'width=device-width,initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no');
}
if (window.devicePixelRatio == 3) {
viewport.setAttribute('content', 'width=device-width,initial-scale=0.3333333333333333, maximum-scale=0.3333333333333333, minimum-scale=0.3333333333333333, user-scalable=no');
}
var docEl = document.documentElement;
var fontsize = 10 * (docEl.clientWidth / 320) + 'px';
docEl.style.fontSize = fontsize; </script>
</head> <body>
<div class="bds_b a">下面的底边宽度是虚拟1像素的</div>
<div class="b">上面的边框宽度是虚拟1像素的</div>
</body> </html></span>

想看效果的,直接将代码复制下来放服务器,用手机浏览就可以看到效果了。

最新文章

  1. C#基础知识四之override和new的区别
  2. 《C++ API设计》作者Martin Reddy访谈问题征集
  3. PHP_01之PHP概述、数据、语法
  4. linux系统中errno与error对照表
  5. ATMEL处理器自带USB CDC的Win7驱动问题
  6. 去除list集合中重复项的几种方法
  7. PAT 1075. PAT Judge (25)
  8. android更新SDK时候丢失annotations.jar 导致支持库报错
  9. 常用的HTTP状态码如下
  10. 去掉CI框架默认url中的index.php
  11. 通过CSS显示垂直文本
  12. Linux(Ubuntu)使用日记------vim复制内容到其他应用
  13. Oracle 12c 创建新的数据库实例、用户
  14. 3DES 加、解密
  15. Python基础-python变量(三)
  16. linux定时任务调度定系统——opencron
  17. 使用 WinDbg 分析dump文件
  18. python-day71--django多表操作
  19. oracle 收集的一些图
  20. 通过Js对电话和姓名身份证等进行部分隐藏处理

热门文章

  1. 7-http1.1和2.0的区别?
  2. Canvas画椭圆的方法
  3. c-函数指针(求奇数偶数的和)
  4. XML 标记使用的特殊字符对应内置实体
  5. 启动php-fpm报错:please specify user and group other than root
  6. PHP MySQL 读取数据
  7. ASP.NET菜鸟之路之实现新闻列表增删改
  8. 【USACO 1.4.1】铺放矩形块
  9. android 9Path图片的使用
  10. 利用C++ RAII技术自动回收堆内存