我正在使用此代码根据元素标题内的文本长度调整文本大小。这很有效,直到用户调整浏览器的大小。如果用户的窗口变小,可以做些什么来允许调整文本大小。比如说窗口宽度小于600像素,比改变字体大小。
如何在页面加载时执行,执行代码现在执行的操作 - 还可以在调整浏览器大小时更改字体大小?
$(".title").css('font-size', function () { // get length of text for title and adjust font size
var $numWords = $(this).text().length;
if (($numWords >= 1) && ($numWords < 40)) {
return "26px";
}
else if (($numWords >= 40) && ($numWords < 60)) {
return "24px";
}
else if (($numWords >= 60) && ($numWords < 100)) {
return "22px";
}
else if (($numWords >= 100)) {
return "20px";
}
});
答案 0 :(得分:0)
您可以使用jQuery的resize()
函数(http://api.jquery.com/resize/)
$(document).ready(function() {
onResize()
});
onResize = function() {
if(window.width() < 600){
// Do stuff
}
}
$(window).bind('resize', onResize);
答案 1 :(得分:0)
您可以像这样测量文本的实际渲染大小:
var text = $(this).text();
var tmp = $("<div/>").css({position: "absolute"}).text(text);
$("BODY").append(tmp);
var width = tmp.width();
tmp.remove();
如果您确保div
的样式与页面上的样式相同(相同的字体,重量,大小),那么这可以告诉您它的大小。应该可以迭代这个以搜索适合可用空间的大小(具有一些合理的截止值)。如果你在一个页面上有数百或数千个这样的话,这将会很慢,但对于几个标题,它应该没问题。
答案 2 :(得分:0)
<div id="cont" style="font-family: Verdana; background-color: #ccc;">
<div id="textContent">fox jump over the lazy dog...fox jump over the lazy dog...fox jump over the lazy dog</div>
</div>
<script>
var textContainer = document.getElementById('cont');
var text = document.getElementById('textContent');
var textLength = text.innerText.length;
var firstLoadWidth;
if (textLength >= 1 && textLength < 40) {
cont.style.fontSize = '26px';
}
else if (textLength >= 1 && textLength < 60) {
cont.style.fontSize = '24px';
}
else if (textLength >= 1 && textLength < 100) {
cont.style.fontSize = '22px';
}
else if (textLength > 100) {
cont.style.fontSize = '20px';
}
window.addEventListener('load', function () {
firstLoadWidth = window.innerWidth;
});
window.addEventListener('resize', function () {
var getSize = window.innerWidth / firstLoadWidth;
getSize <= 1 ? text.style.fontSize = getSize + 'em' : text.style.fontSize = '1em';
}, false);
</script>
答案 3 :(得分:0)
只使用字体大小的百分比
p {
font-size:200%;
}
百分比是由父标签&#34; div&#34;
的宽度决定的