在Less中使用条件判断

  好几个月都没写点什么东西了,被外派到Gov开发项目,老旧的系统让开发痛苦不堪,接口文档甚至是2011年的,感觉这几个月的时间都被浪费在做兼容处理上了,并且没学到什么东西,心里挺不是滋味。回到公司后才知道之前负责的Vue项目黄了,本来还想把微信的H5支付做一做,但服务器上的开发环境已经被撤掉了,就只好作罢。最近组里的人又离职了,只剩下我一个人,于是开始招人。。。各种琐事之后,新的项目开始,而我又回归老本行——切页面了。

  对于切页面,我是比较烦的,因为始终找不到提高效率的方法,有时候似乎有些门路了,再开始另一个项目时又没有坚持下来。最近打算用Less把页面常用的样式提取出来,做成一个公共文件,方便复用。在做CSS箭头的时候遇到了一些小问题。我想通过如下形式来生成上下左右四个方向的箭头:

.arrow(up,color)
.arrow(down)
.arrow(left)
.arrow(right)

如果按照常规的逻辑,四种情况只要写四个if条件语句就行了,但Less中没有提供这种语法,查阅了一下文档,Less支持when关键字,这下思路就有了,先把公共样式命名为.arrowSet

.arrowSet(@pixel){
    width:0;
    height:0;
    overflow: hidden;
    border-width:@pixel;
}

 然后针对四个方向的箭头写四个样式:

.arrowUp(@color){
    border-style:dashed dashed solid dashed;
    border-color:transparent transparent @color transparent; 
}
.arrowDown(@color){
    border-style:solid dashed dashed dashed;
    border-color:@color transparent transparent transparent; 
}
.arrowLeft(@color){
    border-style:dashed solid dashed dashed;
    border-color:transparent @color transparent transparent;
}
.arrowRight(@color){
    border-style:dashed dashed dashed solid;
    border-color:transparent transparent transparent @color;
}

接着就是使用条件判断来使用这四个样式:

.arrow(@direction,@color,@pixel:5px) when (@direction = up) {
    .arrowUp(@color);
    .arrowSet(@pixel);
}
.arrow(@direction,@color,@pixel:5px) when (@direction = down) {
    .arrowDown(@color);
    .arrowSet(@pixel);
}
.arrow(@direction,@color,@pixel:5px) when (@direction = left) {
    .arrowLeft(@color);
    .arrowSet(@pixel);
}
.arrow(@direction,@color,@pixel:5px) when (@direction = right) {
    .arrowRight(@color);
    .arrowSet(@pixel);
}

最后在调用的时候可以通过

div.d1{
    .arrow(right,red);
}
div.d2{
    .arrow(down,#000,10px);
}

这种方式。至于最终生成什么代码,就不用操心了,交给Less编译器去处理,这样或多或少提升了一点效率。

 

P.S. 有一些零散的知识点总觉得很简单,不用总结,到后来又不记得了还得到处找,所以我还是得时刻提醒自己,常常把一些想法和知识记录下来,不管质量高低,都是前进的证明。

posted @ 2018-07-19 22:41  逐影  阅读(14211)  评论(4编辑  收藏  举报