Retina真实还原1px边框的解决方案

射鸡师给你设计图是这样的!

然后你 boder:1px solid #ccc,然后到手机上一看,又粗又大,又长

然后,测试的妹子,受不了了……

然后,你说是的啊
……

于是,你一张图片上去一看……

确实,不对呀!

<img src="img/bg.png" style="position: fixed;top:0;left: 0;width: 100%;z-index: 999;opacity: .5;">

然后,怎么办了呢

第一:你想到的是:

设计图是750px,然后在iphon6上显示是375px

因为retina下1个 CSS 像素对应2个物理像素(多数是2个), 那么我们只需要想办法把border的宽度变为0.5px, 那么展现就是1个物理像素了.

那我设置

@media (min--moz-device-pixel-ratio: 2), (-webkit-min-device-pixel-ratio: 2), (min-device-pixel-ratio: 2), (min-resolution: 144dpi), (min-resolution: 2dppx), (-ms-high-contrast:active), (-ms-high-contrast:none) {
    *{
        border-width: .5px;
    }
}

然后,其它屏幕,不整除呢……0.x0x px

^^

这个有点扯蛋::因为,像素的定义:1px,就是显示的最小单位

定义:

像素是指基本原色素及其灰度的基本编码。[1]  像素是构成数码影像的基本单元,通常以像素每英寸PPI(pixels per inch)为单位来表示影像分辨率的大小。

例如300x300PPI分辨率,即表示水平方向与垂直方向上每英寸长度上的像素数都是300,也可表示为一平方英寸内有9万(300x300)像素。[2]

巴拉拉,省去xxxx万字哈……

我不喜欢科普哈!!!

然后,又怎么办呢!

我用图片:

1.BASE64:2像素图片,里面只有像素;

  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAAXNSR…hZcwAADsMAAA7DAcdvqGQAAAAQSURBVBhXY5g5c+Z/BhAAABRcAsvqBShzAAAAAElFTkSuQmCC);  
  background-position: 0 0;   
  background-repeat: repeat-x;   
  background-size: 1px 1px;

2.渐变背景图片:

.border_top {   background-image: -webkit-linear-gradient(right,transparent 50%,#999 50%);   background-image: linear-gradient(to right,transparent 50%,#999 50%);   background-size: 1px 100%;   background-repeat: no-repeat;   background-position: center right;   border-top: 0 none;   padding-top: 1px; }

//下面是sass版本
@mixin boderHash($color:#efefef,$direction:"all"){
    background-repeat: no-repeat;
    @if($direction=="all"){
        border:none;
        padding: 1px;
        background-image:
                -webkit-linear-gradient(top, $color 50%, #999 50%),
                -webkit-linear-gradient(right, transparent 50%, $color 50%),
                -webkit-linear-gradient(bottom, transparent 50%, $color 50%),
                -webkit-linear-gradient(left, transparent 50%, $color 50%);
        background-image:
                linear-gradient(to top, transparent 50%, $color 50%),
                linear-gradient(to right, transparent 50%, $color 50%),
                linear-gradient(to bottom, transparent 50%, $color 50%),
                linear-gradient(to left,transparent 50%, $color 50%);
        background-size:
                100% 1px,
                1px 100%,
                100% 1px,
                1px 100%;
        background-position:
                top center,
                right center,
                bottom center,
                left center;

    }@else {
        border-#{$direction}: 1px solid ;
        background-image: -webkit-linear-gradient($direction, transparent 50%, $color 50%);
        background-image: linear-gradient(to $direction, transparent 50%, $color 50%);
        @if($direction=="left" or $direction=="right"){
            background-size: 100% 1px;
        }
        @if $direction=="top" or $direction=="bottom"{
            background-size:   1px 100% ;
        }

    }
}

第三:使用,伪类元素。

然后绝对定位:个人觉得性能消耗太大1

所以也不不再唧唧歪歪

其实:

我们知道的网站。都没有使用这些东西

不想,看图

如果有人叼你!!

你直接那这些图,干她!!

转载请注明文章来处:Retina真实还原1px边框的解决方案 - css3,css3动画,css3新特性 - 周陆军的个人网站

原文地址:http://blog.51cto.com/zhoulujun/2087578

时间: 2024-09-30 16:16:46

Retina真实还原1px边框的解决方案的相关文章

mobile web retina 下 1px 边框解决方案

http://www.tuicool.com/articles/ZRv6bun 再谈mobile web retina 下 1px 边框解决方案 时间 2015-01-03 12:03:31  Hugo Web前端开发 原文  http://www.ghugo.com/css-retina-hairline/ 主题 WebKitiOSCSS 本文实际上想说的是ios8下 1px解决方案. 1px的边框在devicePixelRatio = 2的retina屏下会显示成2px,在iphone 6

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

在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样.没有办法,只有在后面的版本中去修改了,但是要改的话,需要知道是为什么.所以查了很多资料,终于搞懂了这个问题,并且总结了几种方法. 造成边框变粗的原因 其实这个原因很简单,因为css中的1px并不等于移动设备的1px,这些由于不同的手机有不同的像素密度.在window对象中有一个devicePixe

移动端视网膜(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以

再谈mobile web retina 下 1px 边框解决方案

本文实际上想说的是ios8下 1px解决方案. 1px的边框在devicePixelRatio = 2的retina屏下会显示成2px,在iphone 6 plug 下,更显示成3px.由其影响美感. 还好,时代总是进步的.也许很多人都不知道, 现在IOS8下,已经支持0.5px了. . 那么意味着,在devicePixelRatio = 2下,我们可以使用如下的css代码: 但是在ios7以下,android等其他系统里,0.5px会被显示为0px,即该解决方案需要写hack兼容老旧系统. 三

CSS中的px与物理像素、逻辑像素、1px边框问题

一直不太清楚CSS中的1px与逻辑像素.物理像素是个什么关系(作为一名前端感觉很惭愧 -_-!),今天终于花时间彻底弄清楚了,其实弄清楚之后就觉得事情很简单,但也只有在弄清楚之后,才会觉得简单(语出<禅与摩托车维修艺术>,哈哈哈哈). 两种像素 物理像素:设备屏幕实际拥有的像素点.比如iPhone 6的屏幕在宽度方向有750个像素点,高度方向有1334个像素点,所以iPhone 6 总共有750*1334个物理像素. 逻辑像素:也叫"设备独立像素"(Device Indep

移动端 1px边框 问题

https://segmentfault.com/a/1190000015736900 https://blog.csdn.net/yexudengzhidao/article/details/98480173 本文介绍了解决移动端1px边框问题的5种方法.当然了,在这之前先整理了与这些方法相关的知识:物理像素.设备独立像素.设备像素比和viewport. 物理像素.设备独立像素和设备像素比 在CSS中我们一般使用px作为单位,需要注意的是,CSS样式里面的px和物理像素并不是相等的.CSS中的

1px 边框问题

出现1px边框的原因是:1px使用2dp渲染 IOS8支持0.5px;仅IOS8能用 解决办法sacleY(.5) 例子给li添加1px边框 1 li{ 2 position:relative; 3 color: #ccc; 4 } 5 6 li+li:before{ 7 position: absolute; 8 top: -1px; 9 left: 0; 10 width: 100%; 11 content: ''' 12 height: 1px; 13 border-top: 1px so

解决CSS移动端1px边框问题

移动项目开发中,安卓或者IOS等高分辨率屏幕会把1px的border渲染成2px来显示,网上搜了一下,解决方法如下: 一.利用css中的transform的缩放属性解决,推荐这个.如下面代码. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>解决1px边框问题</title> <meta name="viewport"

CSS设置1PX边框的Table表格

写页面布局时经常会遇到1PX边框的表格,对于罗列显示大量数据来说,table是非常合适的,table本身的意义就在于罗列显示数据,web标准化并非是指不去用table标签,而是说不用table去布局,table本身也是属于标准内的. 本身table设置border:0的话,边框其实是2px.如果想实现1PX边框,可以如下设置: table { border: 1px solid blue; border-width: 1px 0 0 1px; } td { border: 1px solid b