鼠标悬停时突出显示文本行
Highlight lines of text on mouseover
我目前正在开发一个网站,该网站将提供一堆故事供人们阅读(基本上是一个博客)。我想使它们尽可能易于阅读,我认为用光标"突出显示"文本行会很有用。有点像在读书时用手指跟随文本行。
我偶然发现了这个答案,但是我似乎无法让它适用于我的页面。这也是一个非常古老的答案,所以也许有一个改进的版本?
如果有人能帮助我,我将永远感激不尽!
编写了一些jQuery代码,至少对我来说,这些代码的外观和效果都比您所指的帖子中的代码更好。希望它符合您的需求:)
还有一个现场演示在 http://jsfiddle.net/gFTrS/2/
.HTML
<div class="textWrapper">
<div class="highlight"></div>
<p>Your text goes here</p>
</div>
.CSS
.textWrapper
{
position: relative;
width: 600px;
padding: 0px 10px;
margin: 0 auto;
cursor: default;
}
.textWrapper p
{
font: normal 12px Arial;
color: #000000;
line-height: 18px;
padding: 0;
margin: 0;
}
.highlight
{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 18px;
background: yellow;
z-index: -1;
display: none;
}
jQuery
$(document).ready(function()
{
var lineHeight = 18;
$('.textWrapper').hover(function()
{
$('.highlight', this).show();
$(this).mousemove(function(e)
{
var relativePos = e.pageY - this.offsetTop;
var textRow = (Math.ceil(relativePos / lineHeight) * lineHeight) - lineHeight;
if (textRow => 0)
{
$('.highlight', this).css('top', textRow + 'px');
}
});
}, function()
{
$('.highlight', this).hide();
});
});
关于SO的旧帖子中的大多数答案和建议都参考了尝试通过为每行添加跨度或div来操纵DOM。但这实际上不是一种防水方法,因为它不兼容跨浏览器,尤其是与移动浏览器不兼容。你应该使用一个动态 jquery 控制的div,它跳到行后面。div 应该动态定位,在鼠标移动时触发 jquery 函数,根据鼠标光标位置计算div 在行高上跳跃
相关文章:
- xmlhttp.responseText不显示文本
- 如何在MVC中使用jQuery在文本框旁边显示文本
- 根据页面的位置突出显示文本中的字符
- 当选择值x时,Javascript需要在正确的位置显示文本区域,从而循环通过具有选择选项的表单
- 操作javascript变量[HTML]以只显示文本
- 如何显示文本长度,即使它超过ng最大长度
- 如何在悬停时显示文本而不移动页面上的内容
- ASP.NET MVC,在文本框旁边显示文本
- 可单击滚动图像以显示文本框
- 使用鼠标悬停JavaScript/HTML显示文本
- 延迟高亮显示文本区域中的文本
- 选择“选择选项”时显示文本.怎么做
- 无法使用JavaScript在画布上显示文本
- 在不更改HTML源代码的情况下,在管理员TinyMCE编辑器中突出显示文本
- 将鼠标悬停在图像上时显示文本
- javascript:在for循环中使用settimeout来定期显示文本
- 一页主题搜索/用下一个按钮突出显示文本
- JavaScript 在更改选择时不显示文本区域
- 用于突出显示文本的JQuery/JavaScript插件
- 模式显示文本区域内容不是字符串