Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据文本长度使文本最适合?_Javascript_Html_Css - Fatal编程技术网

Javascript 如何根据文本长度使文本最适合?

Javascript 如何根据文本长度使文本最适合?,javascript,html,css,Javascript,Html,Css,我有一个显示用户公司名称的页面。这家公司可以有一个很长的名字,也可以有一个很短的名字。两者都应自动更改字体大小,使文本完全适合元素: <h1 class="sidebar-compName responsiveText">{{user.companyName}}123456789</h1> {{user.companyName}123456789 (123456789用于测试它是否工作,h1元件的宽度是否为200px) 这就是它的样子: 我创建了一个系统,当你有1个文

我有一个显示用户公司名称的页面。这家公司可以有一个很长的名字,也可以有一个很短的名字。两者都应自动更改字体大小,使文本完全适合元素:

<h1 class="sidebar-compName responsiveText">{{user.companyName}}123456789</h1>
{{user.companyName}123456789
(123456789用于测试它是否工作,h1元件的宽度是否为200px) 这就是它的样子:

我创建了一个系统,当你有1个文本应该是响应的时候,它就可以工作。 (因为它是一个while循环,当它必须循环多次时,它会使浏览器崩溃)

//加载所有内容时调用的angularjs函数
$scope.adjustFontsSize=函数(值){
//使用“responsiveText”类获取所有元素
var elems=document.getElementsByClassName(“responsiveText”);
//循环通过所有元素
对于(变量i=0;ielems[i].offsetWidth){
大小--;
元素[i].style.fontSize=size+px;
}
}
}
这只能减小字体大小。这就是它需要标准尺寸的原因

在我的系统中,它看起来是这样的:

现在,我希望对多个元素(使用“responsiveText”类)执行此操作,并通过增加和减少字体大小使其完全适合。 但我似乎不知道怎么做

这也将是非常好的,有一个抵消它。 所以我给它一个类“rt1”,它适合元素内部尽可能大的文本,“rt2”应该适合文本,但比元素内部的“rt1”小一点

编辑: 这不是一个复制品


我已经有了“while”的可能性,但是当我需要更改很多元素时,这就不起作用了。

你可以使用插件调用。它基于元素的宽度。就像您控制每个
@媒体查询的字体大小一样(小于768px,大于993px,大于1200px,甚至更多)

我使用FitText.js()

我还添加了一个偏移选项,我就是这样使用它的:

var elems = document.getElementsByClassName("responsiveText");
    for(var i = 0; i < elems.length; i++){
        jQuery(elems[i]).fitText();

        var text = elems[i].classList.value;
        var fontSize = elems[i].style.fontSize.split("px")[0];
        var offset = 0;

        if(text.includes("rt")){
            offset = text.slice(text.indexOf("rt") + 2).split(" ")[0];
        }

        elems[i].style.fontSize = (Number(fontSize) + Number(offset)) + "px";
    }
var elems=document.getElementsByClassName(“responsiveText”);
对于(变量i=0;i
要使文本变小,我有如下元素:

<h1 class="sidebar-userName responsiveText rt-*">{{user.companyName}}</h1>
<h1 class="sidebar-userName responsiveText rt*">{{user.companyName}}</h1>
<h1 class="sidebar-userName responsiveText">{{user.companyName}}</h1>
{{user.companyName}
为了使其更大,我有一个如下元素:

<h1 class="sidebar-userName responsiveText rt-*">{{user.companyName}}</h1>
<h1 class="sidebar-userName responsiveText rt*">{{user.companyName}}</h1>
<h1 class="sidebar-userName responsiveText">{{user.companyName}}</h1>
{{user.companyName}
如果它是完美的尺寸而不使用偏移量,我就有这样一个元素:

<h1 class="sidebar-userName responsiveText rt-*">{{user.companyName}}</h1>
<h1 class="sidebar-userName responsiveText rt*">{{user.companyName}}</h1>
<h1 class="sidebar-userName responsiveText">{{user.companyName}}</h1>
{{user.companyName}

(将“*”替换为偏移值(以像素为单位)

我无法使其与FlowTypeJS一起工作。对我来说,它只是使用我提供的smalles字体大小:
$(elems[i]).flowtype({minFont:12,maxFont:100})