Как бы вы масштабировали размер текста на основе размера контейнера. Другие вопросы говорят, что это невозможно сделать с помощью 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. UnicodeDecodeError по сравнению текста
- 3. Как масштабировать/изменять размер текста в соответствии с TextView?
- 4. Размер битового поля по сравнению с полукокса
- 5. Размер файла Rdata по сравнению с csv
- 6. Редактор текста по сравнению с редактором Shopify
- 7. Как разместить изображение по сравнению с текстом
- 8. Текст, который изменяет размер с его контейнером
- 9. Как определить размер точекGrob (по сравнению с одним из textGrob)?
- 10. Невозможно масштабировать размер текста на разных разрешениях экрана
- 11. Масштабировать размер графического апплета
- 12. растрового размер файла по сравнению байт [] размера
- 13. PIL как увеличить размер текста по отношению к размеру изображения
- 14. SVG Масштабирование текста в соответствии с контейнером
- 15. Как масштабировать размер изображения в спрайте
- 16. Изменить размер текста по предпочтениям
- 17. Как ограничить размер изображения его родительским контейнером
- 18. Размер текста EditText и размер макета
- 19. Как масштабировать размер шрифта в iOS?
- 20. размер загрузочного изображения для загрузки в размер экрана с контейнером
- 21. Размер в БПФ JTransform по сравнению с MATLAB
- 22. Как уменьшить размер изображения в соответствии с контейнером?
- 23. C++: станд :: вектор :: изменить размер по сравнению с «нормальными» распределениями
- 24. Шрифты 2x размер на iPhone по сравнению с симулятором браузера?
- 25. Изменить размер изображения по сравнению с разными размерами изображения
- 26. Почему размер моих страниц такой большой по сравнению с Википедией?
- 27. Сравнение производительности сфинкса: поиск полного текста по сравнению с атрибутом
- 28. Типичный размер модульных тестов по сравнению с тестовым кодом
- 29. по сравнению с датами?
- 30. по сравнению с строкой
Следует отметить, что этот сценарий должен быть загружен после текста, который вы хотите преобразовать (например, в нижнем колонтитуле). Я использую шрифт google, и это создает ошибку, которую мне нужно изменить размер моего браузера, чтобы текст заполнился. –