是否可以仅突出显示鼠标指针悬停的行?假设我有这一段:
receive()
如果我将鼠标悬停在第一行,是否可以突出显示第一行,如果我将鼠标悬停在第二行上,依此类推等等?
插图:
来源:http://www.crossboweducation.us/
我正在寻找适用于多行段落的解决方案。我不必手动在每个单词中添加跨度。
编辑(2016年6月21日): - (解决方案以突出整个段落)
Rory McCrossan的解决方案基本上有效,但当我尝试在我的wordpress博客中实现它时,突出显示有问题,首先它运行良好,我向下滚动一点,高亮位置计算错误。因此,我在网站上找到了一个简洁的解决方案,您需要加载hover.css并将类<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nam in nisi eleifend, efficitur ligula vel, scelerisque risus.
Interdum et malesuada fames ac ante ipsum primis in faucibus.
Nam semper diam sodales eros dictum euismod. Duis ut hendrerit leo. Sed iaculis sem ac est porttitor facilisis.
In convallis facilisis libero ut interdum. Phasellus scelerisque ex in lacus tempus mollis. Integer scelerisque viverra elit id fringilla. Proin nibh arcu, imperdiet a lacus ac, feugiat interdum sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse ultrices vestibulum orci, a varius quam cursus ut. Nulla ut suscipit sapien. Morbi et urna elementum, pretium augue non, tristique nulla. Nulla massa tellus, facilisis at fringilla et, rutrum ac libero.
</p>
添加到每个hvr-fade
标记中...这当然不会处理原始问题,但这是使用一个伟大的css悬停效果集合很容易解决类似问题的另一种方法。希望这有助于某人...
答案 0 :(得分:8)
没有直接的方法可以在更大的元素中获得单行文本。为了达到您的要求,您可以将p
标记的每个单词都包含在自己的span
中。然后在悬停span
标签时,您可以突出显示同一offset().top
的兄弟姐妹。像这样:
$('p').html(function() {
return $(this).text().replace(/\w+[,.]?\s+?/g, "<span>$&</span>")
});
$('p').on('mouseenter', 'span', function() {
var $span = $(this);
$('p span').filter(function() {
return $(this).offset().top == $span.offset().top;
}).toggleClass('hover');
}).on('mouseleave', 'span', function() {
$('p span').removeClass('hover');
})
或者,您可以将单个div
元素附加到p
的父级,当p
悬停在$('.text-block')
.append('<div class="line-marker"> </div>')
.on('mousemove', function(e) {
$(this).find('.line-marker').css('top', e.clientY);
})
上时,它会跟随鼠标移动并充当线阅读指南:
.line-marker {
display: none;
}
.text-block:hover .line-marker {
position: absolute;
width: 100%;
background-color: #CC0;
display: block;
z-index: -1;
}
if( !$.trim( $(this).html() ).length ) {
//do something
}