微信小程序> 安卓设备1px边框较粗的问题解决

安卓设备1px边框较粗的问题解决

浏览量:943 时间: 来源:lavender_32

背景:设备分辨率dpr,安卓设备一般设备分辨率为2,相当于是2个像素为1px,在iphone5/6/7/8上设备分辨率为2,相当于2个像素为1px,在6p、7p、8p、x等手机上设备分辨率为3,相当于3个像素为1px;要想在设备锁看起来比较细,在二倍分辨率下就需要0.5px,在3倍分辨率下就需要0.33px,以此来构成1像素

flexable.js就是通过判断设备分辨率,控制meta标签进行相应的放缩,达到1px代表1像素的要求,但是由于安卓设备不支持0.5px,flexable.js对所有安卓设备不做缩放处理,1px代表的是2个像素,因此看来1px在安卓手机上看是很粗的

解决方案:
一、使用tranform放缩,根据after属性,绝对定位到元素上,将宽高放大2倍,然后用transform缩小0.5,达到将边框变细的效果

.light-line{  border: none;  box-sizing: border-box;  position: relative;  &:after{    content: '';    position: absolute;    top: 0;    left: 0;    border: 1Px solid rgba(240,50,47,0.5);    box-sizing: border-box;    width: 200%;    height: 200%;    -webkit-transform: scale(0.5);    transform: scale(0.5);    -webkit-transform-origin: 0 0;    transform-origin: 0 0;  }}

优点:边框四周边边框看起来都很细,单个按钮边框展示无影响
缺点:由于是放缩,在一个列表中会导致某些线条出不来;

二、用svg背景图片,画一条1像素的线条作为背景图片

.light-svg-line{  height: 1Px;  background: url("data:image/svg+xml;utf-8,svg xmlns='http://www.w3.org/2000/svg' width='100%' height='1px'line x1='0' y1='0' x2='100%' y2='0' stroke='#000'/line/svg");  background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzFweCc+PGxpbmUgeDE9JzAnIHkxPScwJyB4Mj0nMTAwJScgeTI9JzAnIHN0cm9rZT0nIzAwMCc+PC9saW5lPjwvc3ZnPg==');}

优点:作为只有1像素高度的图片,不管是在安卓还是ios都能展示得很细
缺点:作为背景图,适用于列表底边边框;如果四边需要边框,圆角是实现不了的

注: 火狐浏览器对svg的图形处理不了,因此需要将svg转化成2进制

三、box-shadow

.line-box-shdow{  height: 1Px;  background: none;  box-shadow: 0 1px 0 #e1e1e1;}

优点:看起来是比较细
缺点:在ios上看起来比较模糊

四、line-gradient,一半白色,一半黑色,让边距变小

.line-gradient{  height: 1Px;  background:linear-gradient(0deg, #fff, #000);}

优点:基本能实现
缺点:线比较虚

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎