hairlines
由于我们在移动开发时,选用的是viewport方案,会导致border定义的1px边框比较粗(实际上可能是屏幕硬件上的2个或2个以上像素点),为了实现较细的边框,我们提供了hairlines工具库,以下class可以直接在html中使用:
四面边框:
.hum-hair
上下边框:
.hum-hair-tb
左右边框:
.hum-hair-lr
上边框
.hum-hair-t
下边框
.hum-hair-b
左边框
.hum-hair-l
右边框
.hum-hair-r
另外,对于上面的class无法满足的情形,比如圆角,边框颜色不一样等,我们也提供一套封装好的less工具库,可以在编写less时调用:
细边框,使用方法:
.search-tbar {
.hum-hairlines(); //调用函数,输出样式,可以传入颜色值,默认是#e5e5e5
}
//PS:需要注意边框的css,别跟外部(.search-tbar)原有css冲突了
//周围四条边框,PS:这里有个副作用,&:after伪类元素会遮住原节点,导致不能滚动、子元素事件失效等
.hum-hairlines(@color:#e5e5e5)
//下述方法没有上述方法中的副作用,不过,由于只能使用before和after伪类,所以最多只能同时绘制两条边框
.hum-hairlines-single(@color:#e5e5e5)
//上边框
.hum-hairlines-t(@color:#e5e5e5)
//下边框
.hum-hairlines-b(@color:#e5e5e5)
//左边框
.hum-hairlines-l(@color:#e5e5e5)
//右边框
.hum-hairlines-r(@color:#e5e5e5)
//上下边框
.hum-hairlines-tb(@color:#e5e5e5)
//左右边框
.hum-hairlines-lr(@color:#e5e5e5)
//设置细边框宽度,用于清除(传入0)或者恢复(不传参数)
.hum-hairlines-width(@width:1px)
//设置上边框宽度
.hum-hairlines-width-t(@width:1px)
//设置下边框宽度
.hum-hairlines-width-b(@width:1px)
//设置左边框宽度
.hum-hairlines-width-l(@width:1px)
//设置右边框宽度
.hum-hairlines-width-r(@width:1px)
//设置圆角
.hum-hairlines-radius(@radius:0)
//设置上圆角
.hum-hairlines-radius-t(@radius:1px)
//设置下圆角
.hum-hairlines-radius-b(@radius:1px)
//设置左圆角
.hum-hairlines-radius-l(@radius:1px)
//设置右圆角
.hum-hairlines-radius-r(@radius:1px)
html示例:
<div class="hum-hair">
细边框
</div>
less示例:
@import (reference) "@alife/hummer-hairlines/hairlines";
.content{
.hum-hairlines();
}
hairlines的less源码:
@import (reference) "@alife/hummer-theme/lib";
//细边框,使用方法:
//.header {
// .hum-hairlines(); //调用函数,输出样式,可以传入颜色值,默认是#e5e5e5
//}
//PS:本文件下面会定义一些常用的class,在html中可以直接使用,例如:.hum-hair、.hum-hair-t等
//PS:需要注意边框的css,别跟外部(.search-tbar)原有css冲突了
//周围四条边框,PS:这里有个副作用,&:after伪类元素会遮住原节点,导致不能滚动、子元素事件失效等bug
.hum-hairlines(@color:#e5e5e5){
position:relative;
&:after{
content: '';
position: absolute;
top: 0;
left: 0;
border: 1px solid @color;
width: 200%;
height: 200%;
.scale(0.5);
.transform-origin(~'left top');
}
}
//下述方法没有上述方法中的副作用,不过,由于只能使用before和after伪类,所以最多只能同时绘制两条边框
.hum-hairlines-single(@color:#e5e5e5){
content: '';
position: absolute;
.scale(0.5);
.transform-origin(~'left top');
}
//上边框
.hum-hairlines-t(@color:#e5e5e5){
position:relative;
&:before{
.hum-hairlines-single(@color);
.transform-origin(~'left top');
top: 0;
left: 0;
width: 200%;
border-top: 1px solid @color;
}
}
//下边框
.hum-hairlines-b(@color:#e5e5e5){
position:relative;
&:after{
.hum-hairlines-single(@color);
.transform-origin(~'left bottom');
bottom:0;
left: 0;
width: 200%;
border-bottom: 1px solid @color;
}
}
//左边框
.hum-hairlines-l(@color:#e5e5e5){
position:relative;
&:before{
.hum-hairlines-single(@color);
top:0;
left: 0;
height: 200%;
border-left: 1px solid @color;
}
}
//右边框
.hum-hairlines-r(@color:#e5e5e5){
position:relative;
&:after{
.hum-hairlines-single(@color);
.transform-origin(~'right top');
top:0;
right:0;
height: 200%;
border-right: 1px solid @color;
}
}
//上下边框
.hum-hairlines-tb(@color:#e5e5e5){
.hum-hairlines-t(@color);
.hum-hairlines-b(@color);
}
//左右边框
.hum-hairlines-lr(@color:#e5e5e5){
.hum-hairlines-l(@color);
.hum-hairlines-r(@color);
}
//设置细边框宽度,用于清除(传入0)或者恢复(不传参数)
.hum-hairlines-width(@width:1px){
&:before,&:after{
border-width:@width;
}
}
//设置上边框宽度
.hum-hairlines-width-t(@width:1px){
&:before,&:after{
border-top-width:@width;
}
}
//设置下边框宽度
.hum-hairlines-width-b(@width:1px){
&:before,&:after{
border-bottom-width:@width;
}
}
//设置左边框宽度
.hum-hairlines-width-l(@width:1px){
&:before,&:after{
border-left-width:@width;
}
}
//设置右边框宽度
.hum-hairlines-width-r(@width:1px){
&:before,&:after{
border-right-width:@width;
}
}
//设置圆角
.hum-hairlines-radius(@radius:0){
&:before,&:after{
.border-radius(@radius);
}
}
//设置上圆角
.hum-hairlines-radius-t(@radius:1px){
&:before,&:after{
.border-radius-t(@radius);
}
}
//设置下圆角
.hum-hairlines-radius-b(@radius:1px){
&:before,&:after{
.border-radius-b(@radius);
}
}
//设置左圆角
.hum-hairlines-radius-l(@radius:1px){
&:before,&:after{
.border-radius-l(@radius);
}
}
//设置右圆角
.hum-hairlines-radius-r(@radius:1px){
&:before,&:after{
.border-radius-r(@radius);
}
}
//常用class,方便直接使用
//四周边框
.hum-hair{
.hum-hairlines();
}
//上下边框
.hum-hair-tb{
.hum-hairlines-tb();
}
//左右边框
.hum-hair-lr{
.hum-hairlines-lr();
}
//上边框
.hum-hair-t{
.hum-hairlines-t();
}
//下边框
.hum-hair-b{
.hum-hairlines-b();
}
//左边框
.hum-hair-l{
.hum-hairlines-l();
}
//右边框
.hum-hair-r{
.hum-hairlines-r();
}