是否可以设置仅在查看链接网页时显示的链接样式?

Posted

技术标签:

【中文标题】是否可以设置仅在查看链接网页时显示的链接样式?【英文标题】:Is it possible to set a style of link that shows only when the linked webpage is being viewed? 【发布时间】:2010-09-16 18:30:56 【问题描述】:

我遇到了这样的问题(这是 html/css 菜单):

网上商城 |另一个eshop |另一个网店

客户希望它像这样工作:

用户访问网站,点击 Eshop。 Eshop 变为带有红色框轮廓的红色。用户决定访问另一个eshop,所以eshop会恢复正常颜色,没有红框轮廓,另一个eshop会再次做红色轮廓的把戏..

我知道有 A:visited 但我不希望所有访问过的菜单链接都显示为红色并带有红色框框。

感谢任何帮助:)

【问题讨论】:

你能澄清一下用例吗,新网站会在新窗口/iframe 中打开吗?您只想突出显示最后选择的链接吗? Eshop网站关闭时是否需要取消选择? 不,它们在同一个窗口中打开,是的,它应该在关闭网站后取消选择。我想突出显示“活动网站的链接”.. 【参考方案1】:

Joe Skora 写的相同,但更具体:

.red 
    outline-color:red;
    outline-width:10px;

现在您可以在 click-event-handler 中使用 javascript(在此示例中使用 jQuery):

$('.red').removeClass('red'); // removes class red from all items with class red
$(this).addClass('red'); // adds class red to the clicked item

另一种方法是使用伪选择器 :target。 有关它的信息:www.thinkvitamin.com

【讨论】:

这依赖于不针对单个页面的链接,虽然可能,但不太可能【参考方案2】:

您可以使用纯 CSS 和 HTML 来做到这一点。我们常用的一种方法是为每个导航项设置一个匹配的 ID 和类选择器。

这样做的好处是您不必修改每个页面的菜单代码,您可以修改页面本身,除非一切都是动态的。

它是这样工作的:

<!-- ... head, etc ... -->
<body>

<ul class="nav">
    <li><a href="home.html" class="nav-home">Home</a></li>
    <li><a href="art.html" class="nav-art">Art</a></li>
    <li><a href="contact.html" class="nav-contact">Contact</a></li>
</ul>

<!-- ... more page ... -->

</body>

然后你像这样设置一些 CSS:

#NAV-HOME .nav-home,
#NAV-ART .nav-art,
#NAV-CONTACT .nav-contact  color:red; 

要更改“当前”菜单项,您只需将相应的 ID 分配给文档结构中较高的元素即可。通常我将它添加到

标记中。

要突出显示“艺术”页面,您只需这样做:

<!-- The "Art" item will stand out. -->
<body id="NAV-ART">

<ul class="nav">
    <li><a href="home.html" class="nav-home">Home</a></li>
    <li><a href="art.html" class="nav-art">Art</a></li>
    <li><a href="contact.html" class="nav-contact">Contact</a></li>
</ul>

<!-- ... more page ... -->

</body>

【讨论】:

【参考方案3】:

您可以使用 CSS 类来做到这一点。例如,selected 类可以识别当前商店,改变颜色和轮廓。然后您可以通过在菜单项中添加/删除类来更改选择。

看一下here,它介绍了有关构建 CSS 菜单的教程。

【讨论】:

你能说得更具体些吗?【参考方案4】:

基本上,它不能单独使用 CSS 完成,必须执行一些脚本(服务器或客户端,最好是服务器)。正如其他人建议的那样,将“选定”类(或类似的东西)添加到活动链接,并在 CSS 中为其定义样式。

例如链接:

 <a href="#">Eshop</a> | <a href="#" class="selected">Another eshop</a> | <a href="#">Another eshop</a>

样式:

.selected 
     font-weight:bold;
     color:#efefef;

链接将动态生成,例如使用 php

 <?php
 foreach(array('eshop' => '#','another eshop' => '#','yet another eshop' => '#') as $title => $url) 
      echo '<a href="' . $url . '"' 
           . ($url == $_SERVER['REQUEST_URI'] ? ' class="selected"' : null) 
           . '>' . $title . '</a>'; 
 

【讨论】:

【参考方案5】:

如果您在相同浏览器窗口中移动到新页面,Zack MulgrewBobby Jack两者都有很好的答案。

如果你是在新窗口打开eshop链接,单靠css是无能为力的,gs除了类名的选择(红色)。

这是什么?

【讨论】:

【参考方案6】:

据我所知,您只能通过为每个页面生成不同的代码(为当前页面设置不同的类)或在页面加载后使用 JavaScript 更改菜单来做到这一点。

【讨论】:

【参考方案7】:

你可以像这样使用和属性选择器...

a[href^="http:\\www.EShop"]:visted  color: red; 

通过这样做,您是在说任何具有以 http:\Eshop.com 开头的 href 并已访问过的链接都应用此样式。

【讨论】:

【参考方案8】:

这取决于你的页面是如何构建的,但经典的 CSS 是在正文和每个导航链接上都有一个 id,所以你可能会有这样的东西:

eshop.html

<body id="eshop">
  <ul>
    <li><a href="" id="link-eshop">Eshop</a></li>
    <li><a href="" id="link-aeshop">Another eshop</a></li>
    <li><a href="" id="link-eshop-three">Another eshop</a></li>
  </ul>
</body>

和相应的CSS:

#eshop #link-eshop, #aeshop, #link-aeshop, #eshop-three #link-eshop-three

    color: red;
    outline: 1px solid red;

导航是一致的;只有正文上的 id 会随着页面的变化而变化。

【讨论】:

以上是关于是否可以设置仅在查看链接网页时显示的链接样式?的主要内容,如果未能解决你的问题,请参考以下文章

CSS设置链接的样式

图像仅在给定链接时显示,而不是路径 [重复]

NatTable 示例中是不是有任何 API 在单击查看源链接时显示源代码?

本地测试网页无法加载css链接文件怎么办

是否可以仅使用 CSS 设置永久动画按钮/链接的样式? [复制]

制作网页时如何去掉超链接文字下的下划线?