这里是可工作的代码片段: http://jsfiddle.net/WyXLB/1/
当一个HTML元素包含多行文本时,我想逐行扫描。目前,我只能扫描整个元素的边框矩形。
一些代码:
function run_scan(el,mask,callback) {
// we need to go over each line of text in here
// or somewhere
var el_font_size = $(el).css('font');
$('body').append(sizer);
sizer.css({
'position': 'absolute',
'font' : el_font_size,
'white-space' : 'pre' } );
var real_box = window.getComputedStyle(sizer[0]);
var real_width = parseFloat(real_box.width);
var real_height = parseFloat(real_box.height);
var lines = Math.round($(el).height()/real_height);
var mask_offset = $(mask).offset();
var origin_left = mask_offset.left;
var duration = parseFloat($(mask).width())/2.0;
$(mask).animate( {
'left':origin_left+$(mask).width()
},
{
duration:duration,
complete:callback
} );
}
我该如何让动画覆盖整个边界矩形,以便逐行扫描。我尝试在上面的函数中放置一个animation->callback递归,每次调用将掩码下降一个real_height,但得到了不可预测/混乱的行为。
<span>
标签之间,这样你就不用编辑扫描函数了。 - Brainfeeder