如何根據容器大小縮放文字大小。其他問題表明它不能用CSS來完成,如果不是,你會怎麼做呢?如何縮放與容器相比的文字大小
回答
這裏是設置文本以適應容器的寬度的方法。它的工作方式是逐漸增加隱藏div的字體大小,直到它小於要將文本放入其中的容器的寬度。然後它將容器的字體大小設置爲隱藏的div的字體大小。
這有點低效,可以通過緩存容器的舊寬度,然後根據容器的寬度如何改變從舊字體大小增加到更大或更小的值來優化。
的jsfiddle:http://jsfiddle.net/sarathijh/XhXQk/
<div class="scale-text styles">
This is a test of scaling text to fit the container. Lorem Ipsum Dolor Sit Amet.
</div>
<div id="font-metrics"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
var fontMetrics = document.getElementById('font-metrics');
var scaleTexts = $('.scale-text');
$(window).on('resize', updateFontSize);
updateFontSize();
function updateFontSize()
{
scaleTexts.each(function()
{
var $scaleText = $$(this);
fontMetrics.innerHTML = this.innerHTML;
fontMetrics.style.fontFamily = $scaleText.css('font-family');
fontMetrics.style.fontWeight = $scaleText.css('font-weight');
fontMetrics.style.fontStyle = $scaleText.css('font-style');
fontMetrics.style.textTransform = $scaleText.css('text-transform');
var fontSize = 50; // max font-size to test
fontMetrics.style.fontSize = fontSize + 'px';
while ($$(fontMetrics).width() > $scaleText.width() && fontSize >= 0)
{
fontSize -= 1;
fontMetrics.style.fontSize = fontSize + 'px';
}
this.style.fontSize = fontSize + 'px';
});
}
/**
* A simple caching function for jQuery objects.
*/
function $$(object)
{
if (!object.jquery)
object.jquery = $(object);
return object.jquery;
}
</script>
你應該能夠做到這一點使用jQuery - 像..
$('#cooldiv').css('font-size', '100%')
和
$("#cooldiv").animate({
'width' : (xWidth * (35/100)) + 'px',
'minWidth' : (xWidth * (35/100)) + 'px',
'maxWidth' : (xWidth * (35/100)) + 'px',
'fontSize' : (xWidth * (35/100)) + '%'
}, 1000);
我不能工作了如何使用CSS做,所以我用純JS(不需要jquery)。
var els = document.getElementsByClassName('abc')
for (var i = 0; i < els.length; i++){
els[i].style.fontSize = els[i].clientHeight + 'px'
}
如果容器的大小不斷變化,它會工作嗎? – user3304179
是否這樣? http://jsfiddle.net/nickg1/H64mQ/2/ - 是的,如果您記得每次調整容器時剪切的代碼。 –
這很好,但如果容器水平變小,我還希望文本縮小。 – user3304179
下面是如何實現它 - 我包裹在一個跨距中的文本,並調整下來用CSS變換:
<div id="fit-text-in-here">
<span>Scale this text to fit inside the parent div.</span>
</div>
的jQuery:
$(function(){
var textWidth = $('#fit-text-in-here span').width(),
fitWidth = $('#fit-text-in-here').width();
if (textWidth > fitWidth) {
var scaleTo = fitWidth/textWidth,
offset = (fitWidth - textWidth)/2;
$('#fit-text-in-here span').css({
'-moz-transform': 'scale('+scaleTo+')',
'-webkit-transform': 'scale('+scaleTo+')',
'-o-transform': 'scale('+scaleTo+')',
'transform': 'scale('+scaleTo+')',
'margin-left': offset,
'display': 'inline-block'
});
}
});
- 1. 調整內部容器中的字體大小/縮放比例
- 2. Matlab - 放大縮小文字
- 3. 可調Div容器的文字(放大和縮小)
- 4. 如何將文字居中放大比容器大?
- 5. 在容器中放大/縮小
- 6. 放大或縮小相機
- 7. 如何使相對容器的大小字體大小
- 8. 如何將HTML5畫布縮放爲包裝容器的大小?
- 9. 在Canvas上縮放文字的大小
- 10. 與csv相比Rdata文件的大小
- 11. orbitcontrols.js:如何放大/縮小
- 12. 如何重新縮放文本大小?
- 13. 如何設置縮小放大和縮小放大縮小尺寸?
- 14. 相對於容器的字體大小百分比
- 15. 圖像相同的大小 - 縮放比例
- 16. 自動縮放字體大小以適應容器
- 17. 防止文字被放大/縮小
- 18. 是否可以使用css3 scale縮放容器大小(不縮放內容)?
- 19. 縮放CALayer內容的大小
- 20. 如何縮放文本的字體大小以適應div的大小,該大小在調整瀏覽器窗口大小時也會縮放?
- 21. 如何根據div大小縮放字體大小?
- 22. 響應式大小和縮放比例
- 23. 如何按比例縮放/調整視圖及其內容的大小?
- 24. UIPinchGestureRecognizer中捏放大的最大/最小縮放比例 - iPhone iOS
- 25. 按照相對比例縮放圓圈大小維恩圖
- 26. 修復瀏覽器上的容器縮放和調整大小
- 27. Flash AS3 - 在縮放和縮小時縮放播放器中的相機(縮放)
- 28. 如何計算縮放比例的像素大小
- 29. 字體大小相對於容器
- 30. 圖像縮放懸停放大容器
應該指出,這個腳本應該加載在你想要轉換的文本之後(如在頁腳中)。我使用谷歌字體,這造成了一個錯誤,我需要調整我的瀏覽器的文本以適當填充。 –