weex-nuke
Version:
基于 Rax 、Weex 的高性能组件体系 ~~
60 lines (55 loc) • 1.79 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hairLine = undefined;
var _nukeEnv = require('nuke-env');
var _borderSeperate = require('./border-seperate');
var hairLine = {};
/**
* 设备是否支持 0.5px
* decide if container support 0.5px in web env
* @return {boolean} supportFlag
*/
hairLine.detect = function () {
var hairLineFlag = void 0;
if (!_nukeEnv.isWeb) return true;
if (window.OffsetHeightForRxBorder) {
hairLineFlag = window.OffsetHeightForRxBorder;
} else if (window && window.devicePixelRatio && window.devicePixelRatio >= 2) {
var testElem = document.createElement('div');
testElem.style.border = '.5px solid transparent';
testElem.style.height = 0;
testElem.style.boxSizing = 'content-box';
document.body.appendChild(testElem);
if (testElem.offsetHeight === 1) {
hairLineFlag = true;
} else {
hairLineFlag = false;
}
window.OffsetHeightForRxBorder = hairLineFlag;
document.body.removeChild(testElem);
}
return hairLineFlag;
};
/**
* 高清 0.5px 样式
* 0.5px hairline style
* @param {object} style
* @return {object} style
*/
hairLine.fixBorder = function (style) {
if (!_nukeEnv.isWeb) return style;
var borderWidthHair = hairLine.detect() ? '0.5px' : '1px';
style = (0, _borderSeperate.borderSeperate)(style, ['Width']);
['Top', 'Left', 'Right', 'Bottom'].map(function (direction) {
if (style['border' + direction + 'Width'] && parseFloat(style['border' + direction + 'Width'], 10) === 1) {
style['border' + direction + 'Width'] = borderWidthHair;
}
});
if (style.borderWidth && parseFloat(style.borderWidth, 10) === 1) {
style.borderWidth = borderWidthHair;
}
return style;
};
exports.hairLine = hairLine;
;