视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
前端页面绘制0.5像素方法介绍
2020-11-27 18:50:20 责编:小采
文档

这篇文章主要介绍了Web前端绘制0.5像素的几种方法,通过采用meta viewport、border-image、background-image和transform: scale()的方式实现,,需要的朋友可以参考下

最近完成了公司安排的移动web触屏开发,期间涉及到在移动设备上显示线条,最开始采用PC常用的css board属性来显示1个像素的线条,但是发现在移动设备上并不美观,参考淘宝、京东的触屏发现它们均是采用浅细的线条来显示在移动设备上。

  以下纪录了比较方便的4种绘制0.5像素线条方式

一、采用meta viewport的方式,这个也是淘宝触屏采用的方式

常用的移动html viewport的设置如下

<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
具体意思就不多提,它就是让页面的高宽度即为设备的高宽像素,而为了方便绘制0.5像素的viewport的设置如下

<meta name="viewport" content="initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no" />
这样html的宽高就是设备的2倍,此时依然使用css board为1像素的话,肉眼看到页面线条就相当于transform:scale(0.5)的效果,即为0.5像素

但是这种方式涉及到页面整体布局规划以及图片大小的制作,所以若采用这个方式还是事先确定为好

二、采用 border-image的方式

这个其实就比较简单了,直接制作一个0.5像素的线条和其搭配使用的背景色的图片即可

<!DOCTYPE html>
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
 <title>boardTest</title>
 <style>
 p{
 margin: 50px auto;
 padding: 5px 10px 5px 10px;
 color: red;
 text-align: center;
 width: 60px;
 }
 p:first-child{
 border-bottom: 1px solid red;
 }
 p:last-child{
 border-width: 0 0 1px 0; border-image: url("img/line_h.gif") 2 0 round;
 }
 </style>
<body>
 <p>
 <p>点击1</p>
 <p>点击2</p>
 </p>
</html>

三、采用background-image的方式

我这里采用的是渐变色linear-gradient的方式,代码如下

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
 <title>boardTest</title>
 <style>
 p{
 margin: 50px auto;
 padding: 5px 10px 5px 10px;
 color: red;
 text-align: center;
 width: 60px;
 }
 p:first-child{
 border-bottom: 1px solid red;
 }
 p:last-child{
 background-image: -webkit-linear-gradient(bottom,red 50%,transparent 50%);
 background-image: linear-gradient(bottom,red 50%,transparent 50%);
 background-size: 100% 1px;
 background-repeat: no-repeat;
 background-position: bottom right; 
 </style>
</head>
<body>
 <p>
 <p>点击1</p>
 <p>点击2</p>
 </p>
</body>
</html>

linear-gradient(bottom,red 50%,transparent 50%);的意思是从底部绘制一个渐变色,颜色为红色,占比为50%,而总宽度已经设置为100%而总高度为一个像素background-size: 100% 1px;

这样显示出来就是0.5像素的线条

四、采用transform: scale()的方式

就是将绘制出来的线条的高度进行半倍的缩放,代码如下

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
 <title>boardTest</title>
 <style>
 p{
 margin: 50px auto;
 padding: 5px 10px 5px 10px;
 color: red;
 text-align: center;
 width: 60px;
 }
 p:first-child{
 border-bottom: 1px solid red;
 }
 p:last-child{
 position: relative;
 }
 p:last-child:after {
 position: absolute;
 content: '';
 width: 100%;
 left: 0;
 bottom: 0;
 height: 1px;
 background-color: red;
 -webkit-transform: scale(1,0.5);
 transform: scale(1,0.5);
 -webkit-transform-origin: center bottom;
 transform-origin: center bottom
 }
 
 </style>
</head>
<body>
 <p>
 <p>点击1</p>
 <p>点击2</p>
 </p>
</body>
</html>

下载本文
显示全文
专题