在PC端用1px的边框线,看起来还好,但在手机端看起来就很难看;iphone 能够设置border:solid 0.5px red;
;android会把0.5px视为0px,即无边框状态;css
2.利用css3新属性scalehtml
给须要加边框的元素插入一个伪类,伪类采用绝对定位,宽高设为200%,而后再缩放为0.5,天然就是0.5px了android
<div class="test1"></div>
.test1{
width: 100px;
height: 100px;
position: relative;
}
.test1::after{
content:"";
width:200%;
height:200%;
position:absolute;
top:0;
left:0;
border:1px solid red;
-webkit-transform : scale(0.5);
transform : scale(0.5);
-webkit-transform-origin : 0 0;
transform-origin : 0 0;
box-sizing: border-box;
}
复制代码
反作用 - - - 加分题很重要哦!css3
当用伪类的绝对定位实现了边框0.5px后,咱们在test1
类上的点击事件会失效,所以此时的伪类是绝对定位,并且长宽等于父类元素的长宽,是脱离了文档流覆盖在父类上的,伪类不是真实的DOM元素。git
解决方法github
再写一个绝对定位元素,覆盖在父元素上,层级z-index
优先级要高一点web
<div class="test1"></div>
.test1{
width: 100px;
height: 100px;
position: relative;
}
.test1::after{
content:"";
width:200%;
height:200%;
position:absolute;
top:0;
left:0;
border:1px solid red;
-webkit-transform : scale(0.5);
transform : scale(0.5);
-webkit-transform-origin : 0 0;
transform-origin : 0 0;
box-sizing: border-box;
}
.click-test1{
position:absolute;
top:0;
left:0;
z-index:10;
}
复制代码
- 利用
background-image
利用背景渐变linear-gradient来实现,具体代码以下:bash
.test1 {
background-image: -webkit-linear-gradient(0deg,red,red 50%,transparent 50%);
background-image : linear-gradient(0deg,red,red 50%,transparent 50%);
background-size: 100% 1px;
background-repeat: no-repeat;
}
复制代码
同理若是要写border-left
或border-right
同样的原理,只需改变方向就能够了。iphone
方向:0deg 、90deg 、180deg 、-90deg
spa
- 使用
box-shadow
模拟边框
利用css 对阴影处理的方式实现0.5px的效果 样式设置:
.box-shadow-1px {
box-shadow: inset 0px -1px 1px -1px #c8c7cc;
}
// 0px:表明垂直方向。 0表明无线段 1px表明左面 -1px表明右面
-1px:表明水平方向。 0表明无线段 1px表明上面 -1px表明下面
后面的两个分别表明[模糊距离][阴影的大小] 无须改动
复制代码
参考资料: