【H5开发基础】移动端1像素边框问题的解决方案

自从乔帮主提出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>

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

时间: 2024-10-11 22:54:37

【H5开发基础】移动端1像素边框问题的解决方案的相关文章

H5开发基础之像素、分辨率、DPI、PPI

H5开发基础之像素.分辨率.DPI.PPI  html5 阅读约 4 分钟 ?2016-09-03于坝上草原 背景知识: 目前绝大部分显示器都是基于点阵的,通过一系列的小点排成一个大矩形,通过每个小点显示不同的颜色来形成图像,我们把每个小点称为一个像素 (pixel). 概念点: 1. Dot:物理属性的一个点,打印机或屏幕通过这些点把图片print出来.一块屏幕的Dot的点是固定的.对于一台具体的显示器,多个点(dots)排列起来之后,构成的一个整体的宽度和高度,我们称之为显示器的“物理尺寸

移动端,h5页面1px 1像素边框过粗解决方案

//h5有个小bug 1像素边框过粗,其实有个解决方案,就是利用伪元素:after,结合css3中的scale在y轴方向缩放0.5就行了 //父元素 //删除border-bottom,添加position:relative,伪元素定位用. - border-bottom:1px solid yellow: + position:relative; //为父元素添加:after伪类 :after { content: ''; height: 1rpx; background: $colorE3;

移动端1像素边框问题与CSS媒体查询

做移动端页面开发时,我们是按照UI设计图上的尺寸来做的. 比如说,UI给的图是750x1344(Iphone6标准),我们在浏览器做适配时,按照375x667来裁切,设计图上30像素的高度,开发时使用的是15px,这是因为Iphone6的设备像素比为2,css中的1px在设备中的像素为2px.当我们需要实现设计图中1px高度的边框时,在css中的1px实际上变成了2px边框,由此产生了1像素边框问题. 1.window.devicePixelRatio设备像素比 定义: window.devic

移动端1像素边框

通常我们会有伪类和定位来解决1像素的问题,但是使用伪类也是有问题的,但是你可以换一种方式实现1像素边框的问题,box-shadow 1. 实现下边框 box-shadow: inset 0 -1px 0 0 #000; 2. 实现右边框 box-shadow: inset -1px 0 0 0 #000; 3. 实现左边框 box-shadow: inset 1px 0 0 0 #000; 4. 实现上边框 box-shadow: inset 0 1px 0 0 #000; 使用阴影设置1像素边

移动web 1像素边框

实现方法 border-image 图片 实现 这篇文章是腾讯github上的解决方案border-image来实现的 链接走起 <使用border-image实现类似iOS7的1px底边>,缺点是,你需要制作图片,圆角的时候会出现模糊. .border-image-1px { border-width: 1px 0px; -webkit-border-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAE

移动web 1像素边框 瞧瞧大公司是怎么做的

前言 移动端web项目越来越多,要求也越来越高,好多设计师都发现了,你们前端实现的边线为什么是糊的,根本不是1像素,好吧,我只能找参考,要么征服设计,要么征服自己. 关于为什么设置的是1px,而显示出来却不是呢,这里我就不多做介绍了:放出几个链接, 设备像素比devicePixelRatio简单介绍,还有 移动端高清.多屏适配方案 以及 iPhone 6 屏幕揭秘,相信大家看完这几个自己也就能想出解决的办法了. 哪些项目实现了 一般遇到问题,都是找一下成熟项目他们公司的代码看看,自己也翻看了好多

移动端 h5开发相关内容总结——CSS篇

移动端 h5开发相关内容总结——CSS篇 标签: css移动 2016-01-06 15:59 5536人阅读 评论(3) 收藏 举报  分类: HTML+CSS(17)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1.移动端开发视窗口的添加 h5端开发下面这段话是必须配置的 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=n

移动端webapp开发基础

(1) CSS pixels与device pixels CSS pixels: 浏览器使用的抽象单位, 主要用来在网页上绘制内容. device pixels: 显示屏幕的的最小物理单位,每个dp包含自己的颜色.亮度. 等值的 CSS pixels在手机屏幕上占多大的位置,这不是固定的,这取决于很多属性.经过分析和总结,我们可以得出这么一条公式: 1 CSS pixels = (devicePixelRatio)^2 device pixels  . (2) PPI/DPI PPI,有时也叫D

PC端页面开发基础-问题总结(一)

本人在做前端开发相关工作时,遇到过也解决过很多技术性问题.今天起,就从PC端页面开发开始,理一理新手们可能会遇到的那些坑. 本文非教学文章,仅供有前端开发基础的同学同僚们一起讨论与总结,本人将从零开始持续更新,欢迎大家的批评指正. 高度塌陷问题: 父元素的高度会被子元素撑开,当子元素都设置了浮动时,由于子元素半脱离文档流,父元素失去子元素的高度,便会产生高度塌陷 hack1:父元素overflow:hidden; hack2:子元素下方加一个空div,并设置height:0;clear:both