Less编写函数(mixin/@functions)的小技巧分享

栏目: JavaScript · 发布时间: 6年前

内容简介:开发移动端Web项目的时候,有一种弹性布局的方案是基于rem开发项目。简单来说,应用淘宝rem作用于非根元素时,相对于根元素字体大小;rem作用于根元素字体大小时,相对于其出初始字体大小 —— MDN

开发移动端Web项目的时候,有一种弹性布局的方案是基于rem开发项目。

简单来说,应用淘宝 lib-flexible (虽说有新方案vw,暂时先不讨论)后,会根据窗口宽度大小在 document.body 节点计算生成 font-size 。然后该页面的所有节点元素可以使用rem,依据根节点的font-size计算大小

rem作用于非根元素时,相对于根元素字体大小;rem作用于根元素字体大小时,相对于其出初始字体大小 —— MDN

因为,项目中css基于less预处理,所有开始考虑如何设计一个mixin,让自己不要手动计算设计稿尺寸对应到实际浏览器中的rem,而是可以自动计算~

初期方案 -- mixin

通过接收原设计稿像素尺寸,最后可以计算出相应的rem,mixin简单如下:

@default-w: 375px;
.convert(@px, @width: @default-w) {
  @var: unit(@px / @width) * 10;
  @rem: ~'@{var}rem';
}
复制代码

使用方式:

<div class="el-mixin"></div>
复制代码
.el-mixin {
  width: .convert(300px)[@rem];
  height: .convert(150px)[@rem];
  background: red;
}
复制代码

优雅一点 -- @functions

当然同学们也发现了。 .convert(250px)[@rem] 这种方式略显冗长,还需要属性取值,于是我想起很久以前我用Scss开发的时候,可以很方便编写自定义转换函数(这里不展开),可比这种方式更简洁!那么Less有没有提供函数编写呢?

答案是有的!可以在Less中编写Javascript函数

首先需要在Webpack中对less-loader设置 javascriptEnabled ,使其支持编写Javascript!

// module.rules
...
{
  test: /\.less/,
  exclude: /node_modules/,
  use: ['style-loader', 'css-loader', {
    loader: 'less-loader',
    options: {
      javascriptEnabled: true
    }
  }],
}
...
复制代码

然后就可以开始编写自己的Javascript函数啦!

.remMixin() {
@functions: ~`(function() {
  var clientWidth = '375px';
  function convert(size) {
    return typeof size === 'string' ? 
      +size.replace('px', '') : size;
  }
  this.rem = function(size) {
    return convert(size) / convert(clientWidth) * 10 + 'rem';
  }
})()`;
}

.remMixin();
复制代码

使用方式如下(因为写了convert函数,可以传数值或字符串都行):

.el-function {
  width: ~`rem("300px")`;
  height: ~`rem(150)`;
  background: blue;
}
复制代码

建议大家点击 rem两种方案mixin/function示例效果 看看哦~

这种写法毋庸置疑的更加简洁了。而且在less中引入编写原生Javascript的方式,可以发挥自己的想象力,编写许多转换函数从而减少重复工作量!

谢谢大家的阅读~希望能对大家的日常开发工作带来一点帮助~(●´∀`●)ノ夜深了,写完睡觉~


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

释放潜能:平台型组织的进化路线图

释放潜能:平台型组织的进化路线图

穆胜 / 人民邮电出版社 / 2017-12 / 59.80元

传统的组织模式中,企业逃不出“员工动不起来”和“创新乏力”的宿命。互联网改变商业逻辑的同时也改变了组织逻辑。平台型组织是匹配互联网商业逻辑的组织模式,它赋予了基层员工更多的责权利,能够在需求侧灵敏获取用户刚需、在供给侧灵活整合各类资源、用“分好钱”的机制激活个体去整合各类资源满足用户刚需,形 成供需之间的高效连接。 打造平台型组织有两大主题:一是通过设计精巧的激励机制让每个人都能感受到市场的压力,......一起来看看 《释放潜能:平台型组织的进化路线图》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具