jquery - 与另一个 div 相对应的固定宽度元素的动态字体大小调整

标签 jquery css fixed-width

我正在寻找一种解决方案,它可以自动调整固定宽度 div 中某些文本的大小以适合。

唯一棘手的是,在其中一些上,我需要两种字体大小都与最小的大小相匹配(以确保两个元素的大小始终相同。)我认为这可以通过以下方式实现给他们相同的类名或其他东西来表明相关性。

谢谢!

最佳答案

因此,给定一堆输入和输出:

<div class="inputs">
    <input type="text" value="John Smith">
    <input type="text" value="Jane Doe">
</div>

<ul class="outputs">
    <li></li>
    <li></li>
</ul>

使用此函数将输出绑定(bind)到输入:

function sync( inputs, outputs ) {
    var max_width, max_size, curr_size;

    function curr_max_width() {
        return Math.max.apply( null, $( outputs ).map( function () {
            return $( this ).width();
        }).get() );
    }

    outputs = $( outputs ).wrapInner( '<span />' ).children().get();
    max_width = $( outputs ).parent().width();
    max_size = parseInt( $( outputs ).css( 'font-size' ), 10 );

    $( inputs ).bind( 'keyup change', function ( e ) {      
        $( outputs ).text( function ( i ) {
            return $( inputs ).eq( i ).val();
        });

        curr_size = 0;        
        do {
            curr_size += 1;
            $( outputs ).css({ 'font-size': curr_size + 'px' });
        } while ( curr_max_width() < max_width && curr_size < max_size );

        $( outputs ).css({ 'font-size': ( curr_size - 1 ) + 'px' });
    }).triggerHandler( 'change' );
}

用法:

var inputs = $( 'input:text', '.inputs' ).get();
var outputs = $( 'li', '.outputs' ).get();

sync( inputs, outputs );

现场演示: http://jsfiddle.net/HF4W4/18/

因此,sync函数需要一个 <input> 的数组元素作为第一个参数, block 元素数组作为第二个参数。请注意,输出元素应具有 white-space: nowrap放。 sync函数内部包装 <span> 中的输出元素元素,以便它可以读取内容的宽度。

关于jquery - 与另一个 div 相对应的固定宽度元素的动态字体大小调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980054/

相关文章:

Javascript - 选择 DIV 内的 H1

css - 使固定宽度的 flexbox 元素正确包装

javascript - 为什么 serializeArray() 返回小回车箭头而 val() 不返回?

javascript - 如何使用 D3 在最后一个栏/项目的右端设置圆圈

HTML - 图像框阴影不覆盖图像边框

html - CSS 位置 : absolute screen resolution problem

html - 如何缩小 flex 元素高度以适应容器高度

c - 哪些固定宽度整数类型可用

java - 定宽 float 格式

javascript - 当模态在 vue 实例之外定义时,Bootstrap 模态不起作用