移动端实现border:1px的解决方案

1、利用device-pixel-ratio


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41


//元素正常设置border,增加一个类border-1px

@media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5){

.border-1px{

&::after{

content: ‘‘;

position: absolute;

top: 0;

left: 0;

border: 1px solid #ddd;

-webkit-box-sizing: border-box;

box-sizing: border-box;

width: 200%;

height: 200%;

-webkit-transform: scale(0.7);

transform: scale(0.7);

-webkit-transform-origin: left top;

transform-origin: left top;

}

}

}

@media (-webkit-min-device-pixel-ratio: 2), (min-device-pixel-ratio: 2){

.border-1px{

&::after{

content: ‘‘;

position: absolute;

top: 0;

left: 0;

border: 1px solid #ddd;

-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;

}

}

}

devicePixelRatio = 2

<meta name="viewport" content="initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no">

devicePixelRatio = 3

<meta name="viewport" content="initial-scale=0.3333333333333333, maximum-scale=0.3333333333333333, minimum-scale=0.3333333333333333, user-scalable=no">

2、使用box-shadow


1

box-shadow: inset 1px -1px 1px -1px #fff,inset -1px 1px 1px -1px #fff;

优点:满足所有场景,包括圆角,代码量少。
缺点:边框有阴影,颜色变浅。

3、使用伪类+transform 实现


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35


//单条border

.border-1px{

position: relative;

&:after{

content: ‘‘;

display: block;

position: absolute;

width: 100%;

left: 0;

bottom: 0;

height: 1px;

-webkit-transform: scaleY(0.5);

transform: scaleY(0.5);

}

}

//四条border

.border-1px{

position: relative;

&:after{

content: ‘‘;

position: absolute;

top: 0;

left: 0;

border: 1px solid #fff;

-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;

}

}

优点:所有场景都满足,支持圆角(伪类和本类都需要加border-radius)
缺点:对于已经使用伪类的元素,可能需要多层嵌套

4、利用背景渐变


1

2

3

4

5

6

7

8

9

10

11

12


.background-gradient-1px {

background:

linear-gradient(180deg, #fff, #fff 50%, transparent 50%) top left / 100% 1px no-repeat,

linear-gradient(90deg, #fff, #fff 50%, transparent 50%) top right / 1px 100% no-repeat,

linear-gradient(0, #fff, #fff 50%, transparent 50%) bottom right / 100% 1px no-repeat,

linear-gradient(-90deg, #fff, #fff 50%, transparent 50%) bottom left / 1px 100% no-repeat;

}

/* 或者 */

.background-gradient-1px{

background: -webkit-gradient(linear, left top, left bottom, color-stop(.5, transparent), color-stop(.5, #fff), to(#fff)) left bottom repeat-x;

background-size: 100% 1px;

}

优点:可以实现单条、多条边框,颜色可随意设置
缺点:代码量大,圆角无法实现,兼容性问题

转自:http://www.jianshu.com/p/7e63f5a32636

时间: 2024-10-18 23:31:37

移动端实现border:1px的解决方案的相关文章

移动端1px细线解决方案总结

移动端1px变粗的原因 为什么移动端css里面写了1px, 实际看起来比1px粗. 其实原因很好理解:这2个'px'的含义是不一样的. 移动端html的header总会有一句 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> 这句话定义了本页面的viewport的宽度为设备宽度,初始缩放值和

html移动端1px细线解决方案汇总

现在的PM和UI总以看app的眼光看html5, html页面要做的专业美观,而且必须很精细. 去年的时候UI就告诉我h5上的边框线太粗,把整站都给拉low了. 当时工期紧就没太在意1px粗细, 好在那个版本没上线就迭代掉了,后面的版本针对这个问题做了些尝试, 这里总结下1px细线的处理方法 移动端1px变粗的原因 为什么移动端css里面写了1px, 实际看起来比1px粗. 其实原因很好理解:这2个'px'的含义是不一样的. 移动端html的header总会有一句 <meta name="

移动端 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等元素,也会按照逻辑像素来渲染,整个页面的清晰度会打折: 先看看  “诸子百家 ”  是如何实

再谈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兼容老旧系统. 三

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

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

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

移动端弹性滑动以及滑动出界解决方案

移动端弹性滑动以及滑动出界解决方案 移动端开发经常会遇到两个问题,滑动不灵敏,滑动到哪里就到哪里,这就是常说的:弹性滑动.在一个就是移动开发在真机中经常会遇到滑动出界从而能看见浏览器的背景了,这个在微信是非常常见的.先就这几个问题做一个总结: 首先要搞明白两个概念 1.全局滑动: 滚动条在body节点或者更高层. 2.局部滚动 滚动条在body节点下边的某一个dom节点上.例如:页面有头部和底部固定的. 弄清楚这两个概念还要了解在安卓和ios上这几个问题的解决都是不一样的. 一.首先说滑动不流畅

css 中border: 1px solid rgba(0, 0, 0, 0.1); 是什么意思?

border:1px solid rgba(0,0,0,0.1);意思是 设定元素的边框为1像素宽,实线,颜色使用rgba来表达.其中,rgba是CSS3中的属性,rgba括号中前3个数字代表着 red green blue三种颜色的rgb值,0-255,最后一个是设定这个颜色的透明度即alpha值.范围从0到1,越接近1,代表透明度越低.

移动端像素border的实现

知识点一.如何在手机上看我们制作的移动端页面. 正常我们在电脑上都是按如下图来制作手机页面的: 如果要在手机上面看就不能用localhost了.所以,进入命令行,输入ipconfig查看本地ip地址: 然后返回本地页面,把localhost替换成这个地址.然后把整体输入在手机上,就能看到页面在手机上的样子了. 接下来制作我们的像素border. 第一步: mixin.less 代码: .border-1px(@color){ position:relative; &:after{ display