* _addBaselineStyles * Adds baseline styles to the page, used by all AnchorJS links irregardless of configuration.
()
| 297 | * Adds baseline styles to the page, used by all AnchorJS links irregardless of configuration. |
| 298 | */ |
| 299 | function _addBaselineStyles() { |
| 300 | // We don't want to add global baseline styles if they've been added before. |
| 301 | if (document.head.querySelector('style.anchorjs') !== null) { |
| 302 | return; |
| 303 | } |
| 304 | |
| 305 | var style = document.createElement('style'), |
| 306 | linkRule = |
| 307 | ' .anchorjs-link {' + |
| 308 | ' opacity: 0;' + |
| 309 | ' text-decoration: none;' + |
| 310 | ' -webkit-font-smoothing: antialiased;' + |
| 311 | ' -moz-osx-font-smoothing: grayscale;' + |
| 312 | ' }', |
| 313 | hoverRule = |
| 314 | ' *:hover > .anchorjs-link,' + |
| 315 | ' .anchorjs-link:focus {' + |
| 316 | ' opacity: 1;' + |
| 317 | ' }', |
| 318 | anchorjsLinkFontFace = |
| 319 | ' @font-face {' + |
| 320 | ' font-family: "anchorjs-icons";' + // Icon from icomoon; 10px wide & 10px tall; 2 empty below & 4 above |
| 321 | ' src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype");' + |
| 322 | ' }', |
| 323 | pseudoElContent = |
| 324 | ' [data-anchorjs-icon]::after {' + |
| 325 | ' content: attr(data-anchorjs-icon);' + |
| 326 | ' }', |
| 327 | firstStyleEl; |
| 328 | |
| 329 | style.className = 'anchorjs'; |
| 330 | style.appendChild(document.createTextNode('')); // Necessary for Webkit. |
| 331 | |
| 332 | // We place it in the head with the other style tags, if possible, so as to |
| 333 | // not look out of place. We insert before the others so these styles can be |
| 334 | // overridden if necessary. |
| 335 | firstStyleEl = document.head.querySelector('[rel="stylesheet"], style'); |
| 336 | if (firstStyleEl === undefined) { |
| 337 | document.head.appendChild(style); |
| 338 | } else { |
| 339 | document.head.insertBefore(style, firstStyleEl); |
| 340 | } |
| 341 | |
| 342 | style.sheet.insertRule(linkRule, style.sheet.cssRules.length); |
| 343 | style.sheet.insertRule(hoverRule, style.sheet.cssRules.length); |
| 344 | style.sheet.insertRule(pseudoElContent, style.sheet.cssRules.length); |
| 345 | style.sheet.insertRule(anchorjsLinkFontFace, style.sheet.cssRules.length); |
| 346 | } |
| 347 | } |
| 348 | |
| 349 | return AnchorJS; |