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新特性应用之过渡与动画
Jan 10 HTML / CSS
用CSS3实现Win8风格的方格导航菜单效果
Apr 10 HTML / CSS
CSS3实现多重边框的方法总结
May 31 HTML / CSS
CSS3 实现弹幕的示例代码
Aug 07 HTML / CSS
详解如何在css中引入自定义字体(font-face)
May 17 HTML / CSS
HTML5新表单元素_动力节点Java学院整理
Jul 12 HTML / CSS
传统HTML页面实现模块化加载的方法
Oct 15 HTML / CSS
HTML5实现锚点时请使用id取代name
Sep 06 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
Sep 19 HTML / CSS
使用SVG实现提示框功能的示例代码
Jun 05 HTML / CSS
css animation配合SVG制作能量流动效果
Mar 24 HTML / CSS
5个HTML5的常用本地存储方式详解与介绍
Mar 27 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
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
python mysqldb连接数据库
2009/03/16 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
《跨越百年的美丽》教学反思
2014/02/11 职场文书
李敖北大演讲稿
2014/05/24 职场文书
专科生就业求职信
2014/06/22 职场文书
委托书格式
2014/08/01 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
员工工作表扬信
2015/05/05 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
《灰雀》教学反思
2016/02/19 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
详解Redis复制原理
2021/06/04 Redis
Python基础 括号()[]{}的详解
2021/11/07 Python
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记