bootstrap/site/_includes/example.html
Patrick H. Lauke c031584bcd
SVG accessibility fixes (#27826)
* SVG accessibility fixes

- add `focusable="false"` to all SVGs, to stop IE from including the `<svg>` in its default focus cycle
- completely hide decorative SVGs using `aria-hidden="true"`
- add `role="img"` to meaningful/"content" SVGs, ensure they have an appropriate `<title>` and/or `aria-label`
- simplify placeholder default title

* Simplify usage of placeholder.svg in the docs

- in most cases, no need for separate/redundant text and title (now that we make text itself part of the alternative text explicitly)
- no need (expect in rare cirumstances) to describe the placeholder image (unless the look of the image is important/the actual content, as is the case with the image thumbnail class)

* Simplify example.html rewriting of <svg> to <img> code sample

- as the `alt` for the placeholder isn't really important, just add an ellipsis instead (otherwise, to be correct, we'd have to construct the whole "title+text" construct like we do now in the
placeholder.svg itself

* Change svgo configuration to retain role attribute and add/force focusable=false

- regarding `focusable=false`, see https://github.com/svg/svgo/issues/1011 (which would be the "proper" SVGO fix) and the (hacky) solution https://github.com/svg/svgo/pull/817
2018-12-13 13:09:47 +00:00

51 lines
1.8 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{%- comment -%}
Usage: include example.html content=markup [args],
where content is a capture with the HTML content
args can be one of the following:
id - null (default)
class - "bd-example" (default)
optional: hide_preview - disabled (default)
optional: hide_markup - disabled (default)
{%- endcomment -%}
{%- assign id = include.id -%}
{%- assign class = include.class -%}
{%- if include.hide_preview == null -%}
<div{% if id %} id="{{ id }}"{% endif %} class="bd-example{% if class %} {{ class }}{% endif %}">
{{- include.content -}}
</div>
{%- endif -%}
{%- if include.hide_markup == null -%}
{%- highlight html -%}
{%- if include.content contains '<svg class="bd-placeholder-img' -%}
{%- assign modified_content = include.content
| replace: '<svg class="bd-placeholder-img', '<svg class="bd-placeholder-img'
| replace: '</svg>', '</svg>✂️'
| split: '✂️' -%}
{%- if include.content contains 'bd-placeholder-img ' -%}
{%- assign image_class = include.content
| replace_first: 'bd-placeholder-img', 'bd-placeholder-img ✂️'
| replace: '" width="', '✂️" width="'
| split: '✂️' -%}
{%- assign image_class = image_class[1] | replace: 'bd-placeholder-img-lg', '' | strip -%}
{%- endif -%}
{%- for content_chunk in modified_content -%}
{%- if content_chunk contains '<svg class="bd-placeholder-img' -%}
{%- capture img_placeholder -%}
<img src="..." {% if image_class %}class="{{ image_class }}" {% endif %}alt="...">
{%- endcapture -%}
{{- img_placeholder -}}
{%- else -%}
{{- content_chunk -}}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{- include.content -}}
{%- endif -%}
{%- endhighlight -%}
{%- endif -%}