The <switch>
SVG element evaluates the requiredFeatures
, requiredExtensions
and systemLanguage
attributes on its direct child elements in order, and then processes and renders the first child for which these attributes evaluate to true. All others will be bypassed and therefore not rendered. If the child element is a container element such as a <g>
, then the entire subtree is either processed/rendered or bypassed/not rendered.
Note that the values of properties display
and visibility
have no effect on switch
element processing. In particular, setting display
to none on a child of a switch
element has no effect on true/false testing associated with switch
element processing.
Usage context
Categories | Container element |
---|---|
Permitted content | Any number of the following elements, in any order: Animation elements Descriptive elements Shape elements <a> , <foreignObject> , <g> , <image> , <svg> , <switch> , <text> , <use> |
Attributes
Global attributes
- Conditional processing attributes
- Core attributes
- Graphical event attributes
- Presentation attributes
class
style
externalResourcesRequired
transform
DOM Interface
This element implements the SVGSwitchElement
interface.
SVG <switch> example
This example demonstrates showing different text content depending on the browser's language settings. The switch
element will display the first of its child elements whose systemLanguage
attribute matches the user's language, or the element with no systemLanguage
attribute if none of them matches.
HTML Content
<svg width="100%" viewBox="0 -20 100 50"> <switch> <text systemLanguage="ar">مرحبا</text> <text systemLanguage="de,nl">Hallo!</text> <text systemLanguage="en">Hello!</text> <text systemLanguage="en-us">Howdy!</text> <text systemLanguage="en-gb">Wotcha!</text> <text systemLanguage="en-au">G'day!</text> <text systemLanguage="es">Hola!</text> <text systemLanguage="fr">Bonjour!</text> <text systemLanguage="ja">こんにちは</text> <text>☺</text> </switch> </svg>
Result
Specifications
Specification | Status | Comment |
---|---|---|
Scalable Vector Graphics (SVG) 2 The definition of '<switch>' in that specification. |
Candidate Recommendation | Clarified the evaluation of the systemLanguage attribute |
Scalable Vector Graphics (SVG) 1.1 (Second Edition) The definition of '<switch>' in that specification. |
Recommendation | Initial definition |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 1.0 | (Yes) | 1.8[1] | 9.0 | 8.0 | 3.0.4 |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | 3.0 | ? | (Yes) | 1.8[1] | No support | ? | 3.0.4 |
[1] Starting with Firefox 50 (Firefox 50.0 / Thunderbird 50.0 / SeaMonkey 2.47) and the latest SVG specification, the allowReorder
attribute has been dropped and the behavior it was setting is now the default.
The chart is based on these sources.