美文网首页
0.5像素边框

0.5像素边框

作者: 一蓑烟雨任平生_cui | 来源:发表于2017-06-28 13:01 被阅读0次

“度学金”1.0版本中,UI要求列表边框是0.5像素。在IOS手机上border设置成0.5px是可以的,但是在安卓手机上0.5px不显示。如果统一设置成1px,那在IOS手机上线条就会显得非常粗,如果设置成0.5px,那么在安卓手机不显示。

当时采用的方式是全局判断手机的userAgent,如果是ios手机,那么border设置成0.5px,否则,设置成1px。这样做其实还是没有实现安卓手机显示0.5px的效果。

一、先看当时采用的方式:

1、全局做处理

window.G = {
    isIOS : function() {
    let IOSVersions = [8, 9, 10, 11, 12, 13, 14];
    for (let i in IOSVersions) {
        if (~navigator.userAgent.toLowerCase().indexOf('iphone os ' + IOSVersions[i])) {
            return true;
        }
    }
    return false;
    }()
};

先说~符号的意思:按位取反(按位非)运算符,简单的理解就是改变运算数的符号并减去1,当然,这是只是简单的理解能转换成number类型的数据。

定义一个全局变量G,设置一个属性isIOS,值是一个自执行函数,通过判断手机的userAgent,返回值是true或者false。

2、然后在组件实例的data中,通过window.G.isIOS判断,如果是true,border为0.5px,反之。

这样做其实还是没有实现在所有手机上border为0.5px的效果。

二、CSS3实现0.5像素边框

1、首先将目标元素设置成相对定位。

.div{
    position: relative;
    width: 100%;
    line-height: 40px;
}

2、给目标元素加一个伪元素(after或before),设置成绝对定位

.div::after{
    content: "";
    position: absolute;
    left: 0; 
}

3、宽高设置成目标元素的两倍,边款设置成1px

width: 200%;
height: 200%;
border: 1px solid red;

4、缩小0.5倍

transform-origin: 0 0;
transform: scale(0.5,0.5);

5、设置box-sizing(最关键的)

box-sizing: border-box; //至关重要

这样安卓手机也是可以显示0.5px的。

效果如下:

兼容各个主流浏览器的完整代码

div {
    position: relative;
    width: 100%;
    height: 40px;
}
div:after {
    content: "";
    position: absolute;
    left: 0;
    width: 200%;
    height: 200%;
    border: 1px solid #ff0000;
    border-radius:5px;/* 也可以设置圆角 */
    -webkit-transform-origin: 0 0;
    -moz-transform-origin: 0 0;
    -ms-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: scale(0.5, 0.5);
    -ms-transform: scale(0.5, 0.5);
    -o-transform: scale(0.5, 0.5);
    transform: scale(0.5, 0.5);
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

0.5px直线

方式一:

.box{
  position:relative;
}
.box::after{
  content: "  ";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 1px;
  background-color: #ccc;
  /* 如果不用 background-color, 使用 border-top:1px solid #ccc; */
  -webkit-transform: scaleY(.5);
  transform:scaleY(.5);
}

方式二(微信团队使用的weiui

    content: " ";
    position: absolute;
    left: 0;
    top: 0;
    height: 1px;
    border-top: 1px solid #e5e5e5;
    color: #e5e5e5;
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: scaleY(0.5);
    transform: scaleY(0.5);
    z-index: 2;

这种方式不管是什么手机都会显示0.5px效果。

相关文章

  • CSS盒子模型

    边框:环绕在标签周围的边条 设置边框一:-连写格式:同时设置4条边框{border:边框宽度 边框样式 边框颜色;...

  • 25.边框圆角渐变

    边框 什么是边框圆角?将直角的边框变为圆角的边框 边框圆角的格式?border-radius: 左上 右上 右下 ...

  • 07-CSS盒模型

    边框属性 边框属性的格式连写(同时设置四条边的边框)border: 边框的宽度 边框的样式 边框的颜色;快捷键:b...

  • 边框border

    边框的组成:边框的粗细,边框的样式,边框的颜色 border: 1px solid red 边框的粗细:单位为px...

  • SwiftUI 设置边框、透明度、阴影

    前言 1、设置边框 1.1 设置边框颜色 默认为1的边框 解释 1.2 设置边框颜色、宽度 设置边框颜色、宽度 2...

  • 2.css盒模型

    1 盒子模型的概念 2.边框属性 3.边框属性—设置边框样式(border-style) 4.边框属性—设置边框样...

  • CSS边框圆角--跟着李南江学编程

    1.什么是边框圆角? 就是把矩形边框变成圆角边框,就叫做边框圆角。 2.设置边框圆角的格式 2.1 border-...

  • 盒模型

    内容区 内边距 边框 指定边框圆角 边框风格 外边距

  • 盒子模式之边框属性

    一、边框属性 什么是边框? 边框就是环绕在标签宽度和高度周围的线条。 边框属性的格式 连写. 同时设置四条边的边框...

  • CSS 边框样式

    本节我们来学习边框样式,主要包括如何设置边框的宽度、边框的颜色、边框的样式等。当我们给某个元素设置边框时,可以分为...

网友评论

      本文标题:0.5像素边框

      本文链接:https://www.haomeiwen.com/subject/xxlucxtx.html