如何将像素转换为英寸?

时间:2015-08-12 18:27:40

标签: javascript width pixel

我需要以“英寸”显示“宽度”。我目前正在尝试读取用户的输入文本并测量其宽度。

请告知

JS:

//change text width based on text input
    $('#text').on('change', function() {            
    function getTextWidth(text, font) {
        var canvas = getTextWidth.canvas || 
            (getTextWidth.canvas = document.createElement("canvas"));
        var context = canvas.getContext("2d");
        context.font = font;
        var metrics = context.measureText(text);
        return metrics.width;
    };

    //display text width to html
    $(".textWidth")
    .text("Width: " +
        getTextWidth(
                 $("#prev").text()) + " px");

2 个答案:

答案 0 :(得分:1)

我不知道是否有一种简单的方法可以做到这一点,但您可以使用下面的函数将计算出的样式作为您想要的任何单位(用法为.inch)并返回一个对象你可以使用它的(function(){ // pass to string.replace for camel to hyphen var hyphenate = function(a, b, c){ return b + "-" + c.toLowerCase(); } // get computed style property var getStyle = function(target, prop){ if(window.getComputedStyle){ // gecko and webkit prop = prop.replace(/([a-z])([A-Z])/, hyphenate); // requires hyphenated, not camel return window.getComputedStyle(target, null).getPropertyValue(prop); } if(target.currentStyle){ return target.currentStyle[prop]; } return target.style[prop]; } // get object with units var getUnits = function(target, prop){ var baseline = 100; // any number serves var item; // generic iterator var map = { // list of all units and their identifying string pixel : "px", percent : "%", inch: "in", cm : "cm", mm : "mm", point : "pt", pica : "pc", em : "em", ex : "ex" }; var factors = {}; // holds ratios var units = {}; // holds calculated values var value = getStyle(target, prop); // get the computed style value var numeric = value.match(/\d+/); // get the numeric component if(numeric === null) { // if match returns null, throw error... use === so 0 values are accepted throw "Invalid property value returned"; } numeric = numeric[0]; // get the string var unit = value.match(/\D+$/); // get the existing unit unit = (unit == null) ? map.pixel : unit[0]; // if its not set, assume px - otherwise grab string var activeMap; // a reference to the map key for the existing unit for(item in map){ if(map[item] == unit){ activeMap = item; break; } } if(!activeMap) { // if existing unit isn't in the map, throw an error throw "Unit not found in map"; } var temp = document.createElement("div"); // create temporary element temp.style.overflow = "hidden"; // in case baseline is set too low temp.style.visibility = "hidden"; // no need to show it target.parentElement.appendChild(temp); // insert it into the parent for em and ex for(item in map){ // set the style for each unit, then calculate it's relative value against the baseline temp.style.width = baseline + map[item]; factors[item] = baseline / temp.offsetWidth; } for(item in map){ // use the ratios figured in the above loop to determine converted values units[item] = numeric * (factors[item] * factors[activeMap]); } target.parentElement.removeChild(temp); // clean up return units; // returns the object with converted unit values... } // expose window.getUnits = this.getUnits = getUnits; })(); 属性:

some_variable_1, \
    some_variable_2, \ 
    some_variable_3, \
    some_variable_4, \
    some_variable_5 = sort_of_long_function_name(parameter_1, parameter_2,
    parameter_3, parameter_4)

some_variable_1, some_variable_2, some_variable_3, some_variable_4, \
    some_variable_5 = sort_of_long_function_name(parameter_1, parameter_2,
    parameter_3, parameter_4)

来自:web MVC

答案 1 :(得分:0)

要获得每英寸的实际像素,您需要知道您正在显示的显示器的大小。 如果你的分辨率为1920 x ......而你的可见宽度为20英寸,则结果为每英寸96px。