Fix focus outline on links containing images

In some cases, like SDG icons and the proposals map, the image was
bigger than the link containing it, resulting in a funny-looking outline
on focus.

For reasons I don't understand, using `&:active,&:focus:active` didn't
compile to the CSS I was expecting, so I'm repeating the same code for
these two separate cases.
This commit is contained in:
Javi Martín
2023-09-27 17:34:04 +02:00
parent b15512f025
commit d3eeffded1
4 changed files with 59 additions and 11 deletions

View File

@@ -1,3 +1,43 @@
@mixin focus-outline-on-img {
&:focus {
outline: none;
img {
outline: $outline-focus;
}
}
&:focus-visible {
outline: none;
img {
outline: $outline-focus;
}
}
&:focus:not(:focus-visible) {
img {
outline: none;
}
}
&:active {
outline: none;
img {
outline: $outline-focus;
}
}
&:focus:active {
outline: none;
img {
outline: $outline-focus;
}
}
}
@mixin card { @mixin card {
position: relative; position: relative;

View File

@@ -24,6 +24,10 @@
a:hover .sdg-goal-icon { a:hover .sdg-goal-icon {
filter: brightness(90%); filter: brightness(90%);
} }
a {
@include focus-outline-on-img;
}
} }
%sdg-goal-list { %sdg-goal-list {
@@ -47,12 +51,8 @@
width: 100%; width: 100%;
} }
a:focus { a {
outline: none; @include focus-outline-on-img;
img {
outline: $outline-focus;
}
} }
} }
} }

View File

@@ -0,0 +1,5 @@
.proposals-geozones {
a {
@include focus-outline-on-img;
}
}

View File

@@ -1,6 +1,9 @@
<div class="sidebar-divider"></div> <div class="sidebar-divider"></div>
<h2 class="sidebar-title"><%= t("shared.tags_cloud.districts") %></h2>
<br> <div class="proposals-geozones">
<%= link_to map_proposals_path, id: "map", title: t("shared.tags_cloud.districts_list") do %> <h2 class="sidebar-title"><%= t("shared.tags_cloud.districts") %></h2>
<br>
<%= link_to map_proposals_path, id: "map", title: t("shared.tags_cloud.districts_list") do %>
<%= image_tag(image_path_for("map.jpg"), alt: t("shared.tags_cloud.districts_list")) %> <%= image_tag(image_path_for("map.jpg"), alt: t("shared.tags_cloud.districts_list")) %>
<% end %> <% end %>
</div>