如何:如果换行,请减小字体大小
How to: Reduce font-size if a line breaks
我在div中有一个span,div必须保持200px宽,文本必须放在div中的一行上。span中的文本是动态生成的,所以我不可能知道哪些内容会换行,哪些不会换行。
<div style="width:200px">
<span style="font-size:12px;">This sentence is too large to fit within the div.</span>
</div>
如果我使用CSS属性white-space:nowrap;
,单词将溢出到div的外部,这当然是我们不希望的。
如何根据换行与否来减小字体大小(或缩放)?我更喜欢CSS的答案,但我理解这是否超出了CSS的能力。
一种相当讨厌的方法:循环减少溢出跨度,直到其小于div宽度;
var divWidth = $("#theDiv").width();
var text = $("#text");
var fontSize = 12;
while (text.width() > divWidth)
text.css("font-size", fontSize -= 0.5);
text.css("display", "inline");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="theDiv" style="width:200px; border:1px solid red;">
<span id="text" style="display:none;white-space:nowrap;">This sentence is too large to fit within the div.</span>
</div>
我建议阅读CSS视口单元。这可能是一个很好的解决方案,就像你在纯CSS中找到的一样。
1vw = 1% of viewport width
1vh = 1% of viewport height
1vmin = 1vw or 1vh, whichever is smaller
1vmax = 1vw or 1vh, whichever is larger
http://css-tricks.com/viewport-sized-typography/
一个非常特殊的情况-如果您有固定的div大小并使用Angular.js:
-
定义一个函数来测试是否有一个单词将被换行(因为你知道一行可以包含多少个字符),并返回一个字符串来指定一个字体较小的css类:
$scope.longWordSubstepTitleResize = function(title){ var longestWord = title.split(' ').reduce(function(longest, currentWord) { return currentWord.length > longest.length ? currentWord : longest; }, ""); if (longestWord.length>13){ return "long-word-title"; }else{ return; } }
-
在你的模板中,添加一个css类,它将调用你定义的这个函数,这样你的类"长单词标题"就可以在需要的地方应用:
<div class="noselect sub-step-title {{longWordSubstepTitleResize(title)}}">
-
将较小文本的css规则添加到样式表
尝试并添加文本以查看结果
<HTML>
<HEAD>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var count = $("span").text().length;
var y = 1000/count ;
$('span').css('font-size',y);
});
</script>
</HEAD>
<BODY>
<div style="width:200px; border:1px solid black;">
<span style="font-size:12px;">This sentence is too large to fit within the div</span>
</div>
相关文章:
- 如果 a 为 false,则 if(a) === if(false)
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 用Javascript更改我网站上的字体大小
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 如果href包含X,请更改href
- 如果localstorage为空,则显示欢迎消息
- 点击后隐藏潜水?(但如果Div是一面旗帜呢?)
- 如果元素's的ID以数字开头
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 不同字体的字母间距不同
- 字体调整器(如果不是)
- 如何:如果换行,请减小字体大小
- 如果字体不可用,则用图像替换文本
- 如果选择了另一个li,则设置字体粗细
- 如果字体下载被阻止,从FontAwesome后退
- 如果列表项存在,不要追加,而是更改字体颜色