div 的边框绑定到 routerlink 指令?

Border of div bound to routerlink directive?

我遇到了一个问题,即使用 routerLink 的 div 在单击时会出现蓝色边框。我想我遗漏了一些非常明显的东西,甚至可能是我在浏览器中的配置或者一些遗漏的 css 样式,所以如果是的话,请礼貌地解释一下修复方法。

我在这里整理了该问题的基本演示 - https://github.com/DavidStreid/routingIssue。创建此问题的代码片段位于 src/app/allGreetings.component.html,我将其放在下面。只需从根 /routingIssue 下载并 "npm install; npm start",通过单击不同的问候语来查看问题。我在 chrome.

中看到了这个
        <div *ngFor="let greeting of greetings" 
            class="col-xs-12 col-md-6 col-lg-4">
            <div class="paddingDiv"
                [routerLink]="greeting.routerLink">
                        <h3 class="greetingType">{{greeting.title}}</h3>    
            </div>
        </div>

编辑: 这是 unitario 建议的更新版本,我仍然看到蓝色边框 -

        <a *ngFor="let greeting of greetings" 
            class="col-xs-12 col-md-6 col-lg-4">
            <a class="paddingDiv"
                (click)="onSelect(greeting)">
                        <h3 class="greetingType">{{greeting.title}}</h3>    
            </a>
        </a>

解决方案: 来自 Shota Papiashvili。轮廓来自焦点选择器。我不想要边框,所以我删除了它并添加了另一种焦点样式 -

    .paddingDiv:focus {
        outline: 0;
        background-color: black;
    }

不确定您使用的是哪个版本的路由器,但是从第 3 版开始,您不能在 abutton 以外的任何其他元素上使用 routerLink

如果您需要在 div 中使用它,请将 click 事件与 Routernavigate 一起使用。

其 css 大纲 属性,这对于辅助功能非常重要,您可以在以下位置阅读更多信息:http://www.outlinenone.com/

如果您仍然想这样做,只需添加

.paddingDiv:focus {
  outline: 0;
}

给你的css

只需在 css 中添加此样式即可:

.paddingDiv:focus {
   outline: none;
}

您可以将它用于每个使用路由器 link 的 div 或使用:

 .paddingDiv:focus {
    outline: unset;
 }

是的,批准的答案将从特定选择器中删除大纲。

如果您想从整个项目的所有 [routerLink] 中删除大纲,那么下面 CSS 会更有帮助。

 *[ng-reflect-router-link]:focus {
   outline: none;
 }