【转载】Retina屏的移动设备如何实现真正1px的线?

文章转载自 酷勤网 http://www.kuqin.com/

原文链接:http://www.kuqin.com/shuoit/20150530/346322.html

原文摘要:前些日子总被人问起 iOS Retina 屏,设置 1px 边框,实际显示 2px,如何解决?

最后找到一个还算好用的方法:伪类 + transform

原理是把原先元素的 border 去掉,然后利用:before或者:after重做 border ,并 transform 的 scale 缩小一半,原先的元素相对定位,新做的 border 绝对定位

  • 单条 border
.hairlines li{     position: relative;     border:none; }
.hairlines li:after{     content: ‘‘;     position: absolute;     left: 0;     background: #000;     width: 100%;     height: 1px;     -webkit-transform: scaleY(0.5);             transform: scaleY(0.5);     -webkit-transform-origin: 0 0;             transform-origin: 0 0; }
  • 四条 border
.hairlines li{     position: relative;     margin-bottom: 20px;     border:none; }
.hairlines li:after{     content: ‘‘;     position: absolute;     top: 0;     left: 0;     border: 1px solid #000;     -webkit-box-sizing: border-box;     box-sizing: border-box;     width: 200%;     height: 200%;     -webkit-transform: scale(0.5);     transform: scale(0.5);     -webkit-transform-origin: left top;     transform-origin: left top; }样式使用的时候,也要结合 JS 代码,判断是否 Retina 屏
if(window.devicePixelRatio && devicePixelRatio >= 2){
    document.querySelector(‘ul‘).className = ‘hairlines‘;
}可以支持圆角,唯一的一点小缺陷是<td>用不了。
时间: 2024-11-05 22:51:48

【转载】Retina屏的移动设备如何实现真正1px的线?的相关文章

移动端 Retina屏 各大主流网站1px的解决方案

Retina屏的移动设备如何实现真正1px的线? 在retina屏下面,如果你写了这样的meta <meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> 你将永远无法写出1px宽度的东西,除此之外,inline的SVG等元素,也会按照逻辑像素来渲染,整个页面的清晰度会打折: 先看看  “诸子百家 ”  是如何实

移动端,多屏幕尺寸高清屏retina屏适配的解决方案

移动端高清.多屏适配方案 背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6的375×667). 对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对i

Retina屏下1px border

layout tltle tags post ios7下移动web开发的几个坑 webapp 1.Retina屏下1px border 由于高清屏的特性,1px是由2×2个像素点来渲染,那么我们样式上的border:1px在Retina屏下会渲染成2px的边框,一般有以下几种方法: 图片 阴影 缩放 移动版开发采用软图片的方法: .border { background-image:linear-gradient(180deg, red, red 50%, transparent 50%), l

【转】Retina 屏幕下,网页图片的显示兼容

感谢 Apple,带来了 Retina 屏幕的革命,让我们可以在电子显示屏上享受到印刷级的分辨率.由于分辨率的提升,网页中的文字.Flash 和 SVG 内容显示得比原来更加精细,但网页中的图片却变得异常模糊,存在非常严重的分辨率兼容问题.自从 2010年6月,iPhone4 的上市开始,网页图片的显示兼容问题就已出现,经过几年的发展,配备 Retina 屏幕的电子产品越来越多,如今 Apple 又将 Retina 技术应用到了 Macbook Pro 上,网页图片在 Retina 屏幕下的显示

让MyEclipse支持mac的Retina屏解决字体模糊的问题

最近在使用MyEclipse时最让我头疼的问题就是MyEclipse并不能很好的支持苹果的Retina屏幕,看着字体会非常模糊,那叫一个心酸,真白瞎了这块好屏幕.(不知道最新的版本有没有支持,反正我的是MyEclipse10是支持不了,四处查了半天资料,发现网上有的太不详细,有的根本不管用,所以特地来分享一下,我的是10.10.3的系统). 首先,需要找到应用程序里的MyEclipse.app右键显示包内容-->Contents-->Profile-->然后右键MyEclipse显示包内

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

原因: 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在devicePixelRatio=2的retina屏下会显示成2px. 但在IOS8中,已经支持0.5px了,那就意味着, 在devicePixelRatio=2的时候,我们可以使用如下的css: div{ border:1px solid #000; } @media (-webkit-min-device-pixel-ratio: 2) { div{ border:0.5px solid #000; } } 但在ios7以

Retina屏幕下 canvas显示模糊的问题

一 什么是Retina 所谓“Retina”是一种显示技术,可以将把更多的像素点压缩至一块屏幕里,从而达到更高的分辨率并提高屏幕显示的细腻程度,以MacBook Pro with Retina Display为例,工作时显卡渲染出2880x1800个像素,其中每四个像素一组,输出原来屏幕的一个像素显示的大小区域内的图像.这样一来,用户所看到的图标与文字的大小与原来的1440x900分辨率显示屏相同,但精细度是原来的4倍,但对于特殊元素,如视频与图像,则以一个图片像素对应一个屏幕像素的方式显示.

使用compass生成能适配retina屏的sprites

原文:https://github.com/Gaya/Retina-Sprites-for-Compass 在compass中增加retina变体可以允许你使用sprites(图片精灵).就像正常的sprites helpers一样工作,而且用mixins已经完成的更佳容易了. 看看这个示例来看一下结果. 问题 你想让你的网站用retina图片对高清屏起作用,而不是非高清屏.compass的混合的解决方案使你用sprite技术变的非常容易,他将让compass生成两种不同尺寸的映射. 因为我们必

box-shadow实现移动端(Retina屏)超细边框

// box-shadow投影方向 // 上 box-shadow: inset 0px 1px 0px 0px #000; // 右 box-shadow: inset -1px 0px 0px 0px #000; // 下 box-shadow: inset 0px -1px 0px 0px #000; // 左 box-shadow: inset 1px 0px 0px 0px #000; 效果如下: 因为css中的1px并不等于移动设备的1px,这些由于不同的手机有不同的像素密度. 在w