我也做过类似的事情,采用简单的方法,根据标题的字符数向标题添加CSS类。然后该CSS类减少letter-spacing
和/或font-size
.
// Count the characters, taking Unicode into account
$chars = mb_strlen($post->post_title);
// For every 10 characters after the first 20, add a size
$size = max(0, ceil(($chars - 20) / 10));
// Generate the CSS class: x-long, xx-long, etc.
$class = ($size) ? str_repeat(\'x\', $size).\'-long\' : \'\';
// Output
echo \'<h1 class="\'.$class.\'">\'.esc_html($post->post_title).\'</h1>\';
不过,这种方法相当幼稚。它不考虑字体呈现的实际字符宽度。为此,您需要一种JavaScript方法。