$breadcrumb-divider1: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiPjxwYXRoIGQ9Ik0yLjUgMEwxIDEuNSAzLjUgNCAxIDYuNSAyLjUgOGw0LTQtNC00eiIgZmlsbD0iY3VycmVudENvbG9yIi8+PC9zdmc+); $breadcrumb-divider2: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiPjxwYXRoIGQ9Ik0yLjUgMEwxIDEuNSAzLjUgNCAxIDYuNSAyLjUgOGw0LTQtNC00eiIgZmlsbD0iY3VycmVudENvbG9yIi8+PC9zdmc+'); $breadcrumb-divider3: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiPjxwYXRoIGQ9Ik0yLjUgMEwxIDEuNSAzLjUgNCAxIDYuNSAyLjUgOGw0LTQtNC00eiIgZmlsbD0iY3VycmVudENvbG9yIi8+PC9zdmc+"); @function str-replace($string, $search, $replace: '') { $index: str-index($string, $search); @if $index { @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); } @return $string; } // This is the one currently within Bootstrap @function escape-svg($string) { @if str-index($string, 'data:image/svg+xml') { @each $char, $encoded in $escaped-characters { // Do not escape the url brackets @if str-index($string, 'url(') == 1 { $string: url('#{str-replace(str-slice($string, 6, -3), $char, $encoded)}'); } @else { $string: str-replace($string, $char, $encoded); } } } @return $string; } // This one ignores the quotes @function escape-svg2($string) { @if str-index($string, 'data:image/svg+xml') { @each $char, $encoded in $escaped-characters { // Do not escape the url brackets @if str-index($string, 'url(') == 1 { $string: url(#{str-replace(str-slice($string, 5, -2), $char, $encoded)}); } @else { $string: str-replace($string, $char, $encoded); } } } @return $string; } // This one ignores the quotes first, then the rest @function escape-svg3($string) { @if str-index($string, 'data:image/svg+xml') { @each $char, $encoded in $escaped-characters { // Do not escape the url brackets @if str-index($string, 'url("') == 1 or str-index($string, "url('") == 1 { $string: url('#{str-replace(str-slice($string, 6, -3), $char, $encoded)}'); } @elseif str-index($string, 'url(') == 1 { $string: url(#{str-replace(str-slice($string, 5, -2), $char, $encoded)}); } @else { $string: str-replace($string, $char, $encoded); } } } @return $string; } $escaped-characters: (('<', '%3c'), ('>', '%3e'), ('#', '%23'), ('(', '%28'), (')', '%29')); .breadcrumb-item { + .breadcrumb-item { &::before { content: escape-svg($breadcrumb-divider1); } } + .breadcrumb-item2 { &::before { content: escape-svg($breadcrumb-divider2); } } + .breadcrumb-item3 { &::before { content: escape-svg($breadcrumb-divider3); } } } .breadcrumb-item2 { + .breadcrumb-item { &::before { content: escape-svg2($breadcrumb-divider1); } } + .breadcrumb-item2 { &::before { content: escape-svg2($breadcrumb-divider2); } } + .breadcrumb-item3 { &::before { content: escape-svg2($breadcrumb-divider3); } } } .breadcrumb-item3 { + .breadcrumb-item { &::before { content: escape-svg3($breadcrumb-divider1); } } + .breadcrumb-item2 { &::before { content: escape-svg3($breadcrumb-divider2); } } + .breadcrumb-item3 { &::before { content: escape-svg3($breadcrumb-divider3); } } }