移动开发现在占据着越来越大的前端开发比例,所以对于移动端WEB页的要求也越来的越多,比如很多的H5页面,在设计出来时,看起来更像是一个原生的APP页面,而我这里想说的一个点就是,在H5页面中,关于分隔线的问题,我们可以看到,很多的APP中,区域的border的分割线,都是一条很细很细的线,接下来,我们就来说说这些细线的问题。

概述

在这之前,我们要先知道一个问题,那就是在浏览器中,对于元素设置的某些数据设置成浮点型,那么浏览器的表现时不同的,比如,我们可以这样最简单的设置,给一个div元素,设置一个height:0.5px的属性,可以在不同的浏览器下看看到不同的效果,这里不对这个进行总结,我们这里只来说说在移动端的情况。

这个时候,IOS的Safari表现就无疑是更好的,safari是可以支持浮点型的属性的,所以,如果想要在IOS的系统中,出现这样的0.5px的border宽度,是可以直接使用border的,而在Andriod下,就变的麻烦了,Andriod的系统(我见过的一些安卓机)的浏览器,会对浮点型数据执行四舍五入的情况,即你给元素设置border-width:0.5px,那么其表现与你设置border-width:1px;是相同的,而这个时候,就需要一些特殊的方法,来实现这个0.5px的border的值。

解决方案

这里的解决方案,我只把我知道的来说明一下:

1:使用png图片,设置元素的background-image和background-size两个属性来实现。

2:使用png图片,设置border-image来实现。

3:在meta元素的viewport标签中,设置scale属性(h5.m.taobao.com使用该方法,要设置成手机模式才可以)。

这些方法,都涉及到了CSS3的属性,所以,我们假设这个需求只在支持CSS3的浏览器中才能实现,那他们的优劣呢?

使用png的图片,不管是设置在background还是设置在border中,都有一个问题就是,这个元素没有办法设置圆角,当如果我需要改变这个边框的颜色时,需要重新设计图片,需求变更时不灵活。

在meta中设置scale属性,那么接下来的整个页面的实现,就变的更加困难,因为所有的地方,都要考虑到宽高,大小等,都会被scale属性影响的。

所以,我这里想要说的这种方法,是我想到的一个优于以上方法的方法,至于为什么会更优,请接下来继续看看。

新的解决方案

我这里先把方法进行说明,接下来的示例,是按照以下结构来处理的

边框宽度1px

边框宽度0.5px

其中,custom-border对应的div,是直接使用border实现的,这里我们是用来对比的。

scale-border对应的div,是经过处理掉的,边框是0.5px的。

从这里,也可以看出,如果需要使用该方法,那么在每个使用该方法的地方,都需要额外的添加两个额外的标签,所以在可以不使用该方法的时候,尽量不使用。

而对于这个结构,可以设置如下的CSS样式

.custom-border{

width:200px;

margin:10px auto;

height:100px;

border:1px solid #333;

background-color:#eee;

padding:10px;

}

.scale-border{

margin:10px auto;

height:100px;

position:relative;

padding:10px;

width: 200px;

}

.border{

-webkit-transform:scale(0.5);

transform:scale(0.5);

position:absolute;

border:1px solid #333;

top:-50%;

right:-50%;

bottom:-50%;

left:-50%;

border-radius: 10px;

background-color:#eee;

}

.content{

position:relative;

z-index:2;

}

看手机端支持:

至于其中的原理,我这里不进行说明,这个希望看到该文章的您,自己去思考,至于兼容性,我有在IOS和一个Andriod测试了一下,表现良好,唯一的就是,颜色可能有些变化,因为使用了scale属性,这个我觉得可以接受。

扩展

这里,我只给出了一个例子,那就是四周都有边框,并且设置了圆角的例子,如果您需要只是一个下划线,或者某一边的边框,请在上述情况下进行修改,甚至,如果您只需要一个边有边框,那么上述的CSS样式其实是可以更简单的实现,这里就需要您自己去实验,测试了,当然,如果您不愿意做这个实验,只是想要拿来使用的话,那么最简单的方法,是只设置一个边的边框宽度,其他的边border-width:0px;或者把其他边框的颜色设置为透明色都可以。

优势和劣势

我认为该方法的优势在于,可控性强,可以设置圆角,随意变换颜色,不需要改变其他的布局,不需要额外下载图片等。

劣势在于,每一个使用该方法的地方,都会额外的多添加了两个标签。

总结

由于受限于个人所有的设备,所以并没有经过很多的测试,只测试过IOS的safari和一个Andriod手机的UC浏览器和微信内置浏览器(Andriod 4.1的版本),表现都很好,没有问题,所以如果您发现兼容性问题,请告知,非常感谢!

html5给div设置单边界,纯CSS实现border的0.5px设置相关推荐

  1. html5简单幻灯片图片转换,用纯CSS实现简单的相册幻灯片

    之前发了两篇关于CSS的文章,大家都比较关注,看来大家对这块东西都是很感兴趣的,现在趁热打铁再来一发~~ 简介 一个用纯CSS实现的简单幻灯片效果,仅供实验,要看Demo请自备Chrome浏览器,勿用 ...

  2. 使html轮廓颜色不同,css中border颜色不同怎么设置?

    层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. css中bord ...

  3. html5border设置彩色,css中border颜色不同怎么设置?

    层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. css中bord ...

  4. 一个div 上下两行_纯CSS实现单一div的正多边形变换

    纯粹利用CSS,让"单一个"div,从正三角形变换为正八边形(单一div最多只能做到正八边形),最后再搭配动画的效果,变成正多边形的变换动画,也由于正多边形需要用到不少的三角函数计 ...

  5. 前端 单标签 纯 CSS 实现红绿灯动画

    使用一个div标签画出一个红绿灯并加上灯光切换的动画. 关键思想在于一个标签的box-shadow属性可以同时设置多个. 效果如下: 代码: html: {<!--warp标签是后面的蓝色背景- ...

  6. css中图片在div中的位置,纯CSS实现任意图片在div中垂直居中

    在苦逼的前端领域,相信许多CSS新手都遇到过图片垂直居中的问题,今天我们就来分享一种实现图片垂直居中的CSS方法. 话不多说,先直接贴上代码: div{ border:1px solid #ccc;  ...

  7. html div 虚线边框样式,纯CSS实现渐变虚线框和边框滚动动画

    渐变虚线边框 如果对边框的样式细节不是很在意,我们可以借助反向镂空的方法实现,也就是虚线原本实色的地方和周围颜色融为一体,看上去透明,而原来虚框透明的部分透出渐变背景色,于是看上去像是渐变色. 以下是 ...

  8. div 边框旋转,纯 css

    div 边框旋转 <!DOCTYPE html> <html lang="en"> <head><meta charset="U ...

  9. border属性 php,如何通过CSS的border属性为图片设置边框效果

    如何为通过css为图片设置一个边框呢,HTML中是通过标记的border属性值,给图片添加边框的,css中是通过border属性,为图片设置各式各样的边框样式,border-style定义边框的样式, ...

最新文章

  1. matlab绘图z=sin(x_「matlab画三维图」Matlab 应用之绘制三维图形(基础篇) - seo实验室...
  2. 感知算法论文(四):Mask Scoring R-CNN (2019)译文
  3. 快速了解 ASP.NET Core Blazor
  4. oracle sum函数返回类型,Oracle / PLSQL SUM函数
  5. 0基础自学Python,有哪些避坑经验?
  6. 探秘采云间:全链路数据处理工具直击传统DW/BI痛点
  7. 华为Mate 30 Pro最新渲染图曝光:六摄造型 越看越顺眼了?
  8. matlab在循环中保存jpg格式_Matlab如何循环读取文件
  9. Ibatis结合MySQL数据库的使用方法
  10. 【AI PC端算法优化】七,RGB和YUV图像颜色空间互转SSE优化
  11. QR 二维码纠错码(三)
  12. js弹窗确认取消php,JS实现删除时的确认弹窗
  13. PHP获取每月第一天与最后一天
  14. [vue学习笔记]数组+事件+v-model的使用
  15. 输入一串字符,统计每个字符数,用字典输出。
  16. Mac上十个必备的效率软件
  17. MySQL三种插入方式
  18. 云图说丨初识云速建站服务
  19. ps简单合成一个微小人像
  20. RSA加密、解密、签名、验签(验证签名)RSA算法原理

热门文章

  1. S4 HANA数据迁移驾驶舱(Migration cockpit )LTMC实操演示
  2. Python学习笔记(3)---B站黑马程序员
  3. SAP ABAP开发规范
  4. 晶振的精度ppm选择
  5. denied 登陆后access_Linux SSH登陆出现Access Denied错误的解决方法
  6. 并查集--武林盟主版
  7. java中的CondVal_请问 java中% 与 / 之间的区别?
  8. extern C _declspec(dllexport)浅析
  9. 研发效能 | DevOps如何改变游戏公司工作方式?
  10. 升级Linux内核(CentOS 7)