最近想写一个js控制打印的插件,发现通常网页布局单位用px,而我们打印设置的时候通常使用cm、mm作为单位,必须进行单位转化,但网上的方法不够完美,自己就用js封装了一个模块,进行cm、mm、px之间的转换。
js代码
;(function(root, factory){
if(typeof define === 'function' && define.amd){
define(['pluc'], factory);
}else if(typeof exports === 'object'){
module.exports = factory(require('pluc'));
}else{
root.pluc = factory('pluc');
}
})(this, function(pluc){
'use strict';
var ratio = 0;
var div = document.createElement('div');
div.style.width = '1cm';
div.id = 'puc';
document.body.appendChild(div);
var w = getComputedStyle(div, null).width;
ratio = w.substr(0, w.length - 2);
div.parentNode.removeChild(div);
return {
px2cm :function(px) {
return Math.round(px * 10 / ratio) / 10;
},
px2mm : function(px) {
var r = ratio / 10;
return Math.round(px / r);
},
cm2px : function(cm) {
return Math.round(cm * ratio);
},
mm2px : function(mm) {
var r = ratio / 10;
return Math.round(mm * r);
}
}
})
示例
pluc.px2cm(100) //将100px转化为单位为cm的长度值,结果取1位小数
pluc.px2mm(100) //将100px转化为单位为mm的长度值,结果取整数
pluc.cm2px(10) //将10cm转化为单位为px的长度值,结果取整数
pluc.mm2px(10) //将10mm转化为单位为px的长度值,结果取整数
效果如下:
pluc效果图.png
结语
语言是死的,只要灵活运用,达到效果即是好!