有没有办法突出书签的目标? (www.site.com/page.htm#bookmark)?

Posted

技术标签:

【中文标题】有没有办法突出书签的目标? (www.site.com/page.htm#bookmark)?【英文标题】:Is there a way to highlight the target of a bookmark? (www.site.com/page.htm#bookmark)? 【发布时间】:2010-09-08 10:16:57 【问题描述】:

我想链接到页面上的书签 (mysite.com/mypage.htm#bookmark) 并在视觉上突出显示已添加书签的项目(可能有红色边框)。自然地,会有多个项目被添加书签。因此,如果有人点击了#bookmark2,那么 that 其他区域将被突出显示)。

我可以看到如何使用 .asp 或 .aspx 来做到这一点,但我想做得比这更简单。我想也许有一个聪明的方法可以用 CSS 做到这一点。

我为什么感兴趣: - 我想让我们的程序链接到列出所有程序的购物页面。我正在使用书签,因此他们会跳转到特定的程序区域 (site.com/shoppingpage#Programx),但只是为了使其明显我想真正突出显示链接到的页面.

【问题讨论】:

我不太确定你在问什么,也许你可以澄清一下? 【参考方案1】:

在你的css中你需要定义

a.highlight border:1px solid red;

或类似的东西

然后使用jQuery,

$(document).ready ( function ()  //Work as soon as the DOM is ready for parsing
    var id  = location.hash.substr(1); //Get the word after the hash from the url
    if (id) $('#'+id).addClass('highlight'); // add class highlight to element whose id is the word after the hash
);

要突出显示鼠标悬停的目标,还需要添加:

$("a[href^='#']")
    .mouseover(function() 
        var id  = $(this).attr('href').substr(1);
        $('#'+id).addClass('highlight');
    )
    .mouseout(function() 
        var id  = $(this).attr('href').substr(1);
        $('#'+id).removeClass('highlight');
    );

【讨论】:

这很好 - 您可能还想选择锚的父元素,而不是锚本身。 在现代 html 中,哈希应该指向 id 属性,而不是 name 属性。 感谢 Ryan 的提示,修复了代码以在 ids 而不是名称属性上工作,因此现在更简洁了。【参考方案2】:

您也可以在 CSS 中使用 target 伪类:

<html>
<head>

<style type="text/css">
div#test:target 
 background-color: yellow;

</style>

</head>
<body>

<p><b><a href="#test">Link</a></b></p>

<div id="test">
Target
</div>

</body>
</html>

不幸的是,IE 或 Opera 不支持目标伪类,因此如果您在这里寻找通用解决方案,这可能还不够。

【讨论】:

【参考方案3】:

使用您最喜欢的 JS 工具包向包含(或包含在)锚点的项目添加“突出显示”(或其他)类。

类似:

jQuery(location.hash).addClass('highlight');

当然,如果您希望页面上的其他链接触发它,您需要调用它 onready 或单击,并且您需要定义 .highlight 类。您还可以根据要突出显示的容器使 jQuery 选择器向上或向下遍历。

【讨论】:

这不起作用,因为它试图找到具有哈希 ID 的元素,而不是具有 NAME 属性的锚。 samjudson,你不应该有带有 name 属性的锚。哈希锚应该指向现代 HTML 中的 id 属性。【参考方案4】:

我猜你是否可以使用 javascript 和 cookie 存储这些信息,以实现记住书签的功能,如果你想与数据库交互,甚至可以添加一点 Ajax。

CSS 只能做样式。您必须为带有书签的锚点提供一个在您的 CSS 文件中找到的类。

CSS 还具有 a:visited 选择器,用于对浏览器历史记录中的链接进行样式设置。

【讨论】:

以上是关于有没有办法突出书签的目标? (www.site.com/page.htm#bookmark)?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法告诉浏览器为与地址栏中不同的 URL 添加书签?

有没有办法突出显示 (g)Vim 中的多个搜索?

有没有办法在 Visual Studio 2010 中突出显示当前活动的代码块?

有没有办法永久保留 Okular 突出显示工具? [关闭]

有没有办法改善 Visual Studio Code 中突出显示的 linting 错误?

有没有办法在 VB.Net 中突出显示 If - End If 语句