Comments 13
Когда-то тоже делал что-то подобное. Рекомендую обратить внимание на «новые» единицы измерения в CSS — vw и vh.
Кстати, rem имеют лучшую поддержку в браузерах и мы уже повсеместно используем их в рабочих проектах, добавляя правила с px для совместимости.
Кстати, rem имеют лучшую поддержку в браузерах и мы уже повсеместно используем их в рабочих проектах, добавляя правила с px для совместимости.
Простите за нескромный вопрос, но зачем здесь jQuery? Указанную функцию можно легко и кроссбраузерно реализовать без jQuery:
function font_size_determination($block,height,width,font_size){
$block.style.fontSize = fontSize + 'px';
var block_height = $block.clientHeight;
var block_width = $block.clientWidth;
if (block_height > height || block_width > width){
font_size = font_size*0.9;
return font_size_determination($block,height,width,font_size);
} else {
return font_size;
}
}
font_size_determination(document.querySelector('.left .frame .frame-content'), 500, 300, 25);
А если вместо константы 0.9 использовать что-то вроде Math.sqrt(height*width/(block_height*block_width)), то количество итераций сократится до парочки.
<div class="contain" style="width: 100px; height: 100px">
<div class="containInner">
Some text inside
Some text inside
</div>
</div>
var increamentRatio = 1.1,
decreamentRatio = 1 / increamentRatio
function textContaint(containerNode, textContainerNode, ratio) {
var width = containerNode.clientWidth,
height = containerNode.clientHeight,
innerHeight = textContainerNode.clientHeight,
innerWidth = textContainerNode.clientWidth
if (width < innerWidth || height < innerHeight) {
ratio = (ratio && ratio > decreamentRatio) ? false : decreamentRatio
}
else if (width > innerWidth || height > innerHeight) {
ratio = (ratio && ratio < increamentRatio) ? false : increamentRatio
}
else {
return false
}
if (!ratio) {
return false
}
var fontSize = parseFloat(getComputedStyle(containerNode).fontSize)
containerNode.style.fontSize = fontSize * ratio + 'px'
return ratio
}
var textNode = document.querySelector('.contain'),
textContainerNode = textNode.querySelector('.containInner'),
fontSizeRatio
while(fontSizeRatio = textContaint(textNode, textContainerNode, fontSizeRatio)) {}
Рекомендую делать контентно-независимую верстку, чем такое.
При чем здесь контенто-независимая верстка? Здесь говорится о том, чтобы вписать текст в блок со строго определенным размером. Как вписать в блоки одного размера текст с разным количеством символов, при этом, чтобы он был видимым?
Например как здесь https://jsfiddle.net/fqzsevfd/3/?
Например как здесь https://jsfiddle.net/fqzsevfd/3/?
Sign up to leave a comment.
Масштабирование текста в блоке с помощью Jquery