根据字数设置字体大小

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费积分!

在我的小型 Quotes on Design 项目中,一些引言比其他的长。我认为如果将较短的引言的字体大小增大,较长的引言的字体大小减小,这样它们在屏幕上占据的大小会更匹配,这可能会很不错。

我使用 JavaScript 而不是在每个引言中使用硬编码数字来实现这一点。这样可以更轻松地进行后续调整,并且很好地将内容和表现形式分离开来。

计划

  • 设置您要定位的段落的对象
  • 将段落拆分为一个单词数组,在每个空格处断开
  • 计算数组的长度
  • 根据该计数设置字体大小。

使用 MooTools 实现

window.addEvent('domready',function() {
	
	$quote = $$('.post p')[0];
    
        var $numWords = $quote.get('text').split(' ').length; 
    
        if (($numWords >= 1) && ($numWords < 10)) {
                $quote.setStyle('font-size','36px');
        }
        else if (($numWords >= 10) && ($numWords < 20)) {
                $quote.setStyle('font-size','32px');
        }
        else if (($numWords >= 20) && ($numWords < 30)) {
                $quote.setStyle('font-size','28px');
        }
        else if (($numWords >= 30) && ($numWords < 40)) {
                $quote.setStyle('font-size','24px');
            }
        else {
                $quote.setStyle('font-size','20px');
        };
});

使用 jQuery 实现

$(function() {

    var $quote = $(".post p:first");
    
    var $numWords = $quote.text().split(" ").length;
    
    if (($numWords >= 1) && ($numWords < 10)) {
        $quote.css("font-size", "36px");
    }
    else if (($numWords >= 10) && ($numWords < 20)) {
        $quote.css("font-size", "32px");
    }
    else if (($numWords >= 20) && ($numWords < 30)) {
        $quote.css("font-size", "28px");
    }
    else if (($numWords >= 30) && ($numWords < 40)) {
        $quote.css("font-size", "24px");
    }
    else {
        $quote.css("font-size", "20px");
    }    
	
});

示例

Quotes on Design 正在使用 jQuery 版本。MooTools 此处示例(请注意代码中的一些细微变化,以适应一个页面上的两个引言)。这是我第一次真正使用 MooTools。我很高兴学习更多。我显然在这里非常以 jQuery 为中心,但它绝对不是唯一的主角。感谢 @mootools