Web前端绘制0.5像素的几种方法


Posted in HTML / CSS onAugust 11, 2017

最近完成了公司安排的移动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>
    <div>
        <p>点击1</p>
        <p>点击2</p>
    </div>
</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>
    <div>
        <p>点击1</p>
        <p>点击2</p>
    </div>
</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>
    <div>
        <p>点击1</p>
        <p>点击2</p>
    </div>
</body>
</html>

 以上就是小编为大家整理出来的Web前端绘制0.5像素的几种方法,希望对大家的学习能够起到帮助~

HTML / CSS 相关文章推荐
css3简单练习实现遨游浏览器logo的绘制
Jan 30 HTML / CSS
css3的transform中scale缩放详解
Dec 08 HTML / CSS
css3实现的多级渐变下拉菜单导航效果代码
Aug 31 HTML / CSS
HTML5 canvas基本绘图之绘制矩形
Jun 27 HTML / CSS
H5仿微信界面教程(一)
Jul 05 HTML / CSS
HTML5实现的震撼3D焦点图动画的示例代码
Sep 26 HTML / CSS
html5 标签
Jul 16 HTML / CSS
html5 canvas 画图教程案例分析
Nov 23 HTML / CSS
html5在移动端的屏幕适应问题示例探讨
Jun 15 HTML / CSS
HTML5为输入框添加语音输入功能的实现方法
Feb 06 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
Aug 12 HTML / CSS
AmazeUI的下载配置与Helloworld的实现
Aug 19 HTML / CSS
css3 box-shadow阴影(外阴影与外发光)图示讲解
Aug 11 #HTML / CSS
css3之UI元素状态伪类选择器实例演示
Aug 11 #HTML / CSS
CSS3系列之3D制作方法案例
Aug 14 #HTML / CSS
全面解析CSS Media媒体查询使用操作(推荐)
Aug 15 #HTML / CSS
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
Aug 18 #HTML / CSS
详解CSS3开启硬件加速的使用和坑
Aug 21 #HTML / CSS
前端面试必备之CSS3的新特性
Sep 05 #HTML / CSS
You might like
在PHP中利用XML技术构造远程服务(上)
2006/10/09 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
python实现windows下文件备份脚本
2018/05/27 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
Keras loss函数剖析
2020/07/06 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
WiFi云数码相框:Nixplay
2018/07/05 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
自考生毕业自我鉴定
2013/10/10 职场文书
爱情保证书范文
2014/02/01 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
Python使用scapy模块发包收包
2021/05/07 Python