Update von 00_FlyVertToolbarWithButton_lite.uc.js vom 2025-11-07 gibt es jetzt (und für zukünftige Versionen nur noch) in Beitrag #1 in diesem Thema:
Schaltbare vertikale Overlay-Zusatzleiste !
Seitennavigation - Fly Out Menü
-
Dicken -
19. März 2024 um 22:28 -
Erledigt
-
-
Nur als Variante, hier eine weitere einfache Version.
Position rechts/ links lässt sich im Script fest einstellen, die Leiste lässt sich per Button komplett ausschalten, fährt ansonsten bei hover über dem Reiter/Pfeil aus, und dann nach Wunsch verzögert wieder ein.JavaScript
Alles anzeigen//Toggle newtoolbar 8 rechts/links (function() { if (location.href !== 'chrome://browser/content/browser.xhtml') return; let ButtonIcon = 'flower-satt32.png'; let Fly_Position = 0; // 0 = right , 1 = left let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)); let IconPath = '/chrome/icons/'; let ImagePath = ProfilePath + IconPath + ButtonIcon; let flybox_new = document.createXULElement('toolbox'); flybox_new.setAttribute('orient','horizontal'); flybox_new.setAttribute('id','flybox_new'); let tb = document.createXULElement('toolbar'); let tb_label = "New Toolbar"; tb.id = 'new_flybar'; tb.setAttribute('customizable', true); tb.setAttribute("class","toolbar-primary chromeclass-toolbar browser-toolbar customization-target"); tb.setAttribute('orient', 'vertical'); tb.setAttribute('mode', 'icons'); tb.setAttribute("toolboxid","navigator-toolbox"); tb.setAttribute('context', 'toolbar-context-menu'); tb.setAttribute("toolbarname", tb_label); tb.setAttribute("label", tb_label); flybox_new.appendChild(tb); document.getElementById('browser').parentNode.appendChild(flybox_new); CustomizableUI.registerArea('new_flybar', {legacy: true}); CustomizableUI.registerToolbarNode(tb); try { CustomizableUI.createWidget({ id: 'NewToolbar_fly_button', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton'); let props = { id: 'NewToolbar_fly_button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', removable: true, label: 'Toggle New Toolbar', tooltiptext: 'Toggle New toolbar', style: 'list-style-image: url("' + ImagePath + '");', }; for(let p in props) toolbaritem.setAttribute(p, props[p]); return toolbaritem; } }); } catch(e) { }; document.getElementById('NewToolbar_fly_button').addEventListener( "click", flybar ); function flybar() { if (event.button === 0 ) { new_flybar.classList.toggle("fly_off_mode"); } }; if (Fly_Position === 1) { flybox_new.classList.add("fly_left"); } else { flybox_new.classList.remove("fly_left"); }; const css =` :root { --ug-newbar_width: 0px; --ug-newbar_inner_width: 38px; --ug-newbar_max_width: calc(var(--ug-newbar_inner_width) + 2*var(--ug-fly_border)); --ug-arrow_width: 20px; --ug-arrow_height: 64px; --ug-newbar_bg_color: lightblue; --ug-newbar_radius: 8px; --ug-fly_border: 0px; --ug-fly_border_color: orange; --ug-fly_delay: 0.5s; /* animation delay when closing */ } #flybox_new { position: fixed; display: flex; top: 50%; right: 0; transform: translateY(-50%); z-index: 4 !important; height: fit-content; width: fit-content; } #new_flybar { display: flex; min-width: 0px !important; width: var(--ug-newbar_width); overflow: hidden !important; justify-content: center !important; padding-block: 4px; background-color: var(--ug-newbar_bg_color) !important; border-color: var(--ug-fly_border_color); border-style: solid !important; border-width: var(--ug-fly_border); border-radius: 0 0 0 var(--ug-newbar_radius); margin-inline: 0px calc(0px - 2*var(--ug-fly_border)); transition: width 0.5s ease, margin 0.5s ease; transition-delay: var(--ug-fly_delay); } #new_flybar:not([customizing]):hover { width: var(--ug-newbar_max_width); margin-inline: 0px calc(0px - 1*var(--ug-fly_border)); transition-delay: 0s; } #new_flybar:not([customizing]).fly_off_mode { display: none !important; } #new_flybar > :is(.toolbarbutton-1, toolbaritem), #new_flybar toolbarpaletteitem > :is(.toolbarbutton-1, toolbaritem) { margin-block: 2px !important; padding: 0px !important; opacity: 0 !important; transition: opacity 0.25s ease; transition-delay: var(--ug-fly_delay); } #new_flybar:not([customizing]):hover > :is(.toolbarbutton-1, toolbaritem) { opacity: 1 !important; transition: opacity 0.5s ease; transition-delay: 0s; } /*--- arrow ---*/ #new_flybar::before { content:""; display: flex; position: absolute; background-color: lightblue; top: 0px; left: calc(-0px - var(--ug-arrow_width) - 1*var(--ug-fly_border)); height: var(--ug-arrow_height); width: calc(var(--ug-arrow_width) + 1*var(--ug-fly_border)); background-image: url(chrome://global/skin/icons/arrow-left.svg); background-repeat: no-repeat; background-size: 16px; background-position-x: left calc(50% - 0.5*var(--ug-fly_border)) ; background-position-y: calc(50% - 10px); border-right-width: 0px !important; border-radius: var(--ug-newbar_radius) 0 0 var(--ug-newbar_radius); border: var(--ug-fly_border) solid var(--ug-fly_border_color); transition: right 0.5s ease, left 0.5s ease, margin 0.5s ease; transition-delay: var(--ug-fly_delay); } #new_flybar:hover::before { background-image: url(chrome://global/skin/icons/arrow-right.svg); transition-delay: 0s; } /*--- left ---*/ :root:not([customizing]) #flybox_new.fly_left { left: 0; } #flybox_new.fly_left #new_flybar:not([customizing]) { border-radius: 0 0 var(--ug-newbar_radius) 0; margin-inline: calc(0px - 2*var(--ug-fly_border)) 0px; } #flybox_new.fly_left #new_flybar:not([customizing]):hover { width: var(--ug-newbar_max_width); margin-inline: calc(0px - 1*var(--ug-fly_border)) 0px; } #flybox_new.fly_left #new_flybar::before { left: unset; right: calc(-0px - var(--ug-arrow_width) - 1*var(--ug-fly_border)); border-left-width: 0px !important; border-right-width: var(--ug-fly_border) !important; border-radius: 0 var(--ug-newbar_radius) var(--ug-newbar_radius) 0; background-image: url(chrome://global/skin/icons/arrow-right.svg); background-position-x: right calc(50% - 0.5*var(--ug-fly_border)) ; } #flybox_new.fly_left #new_flybar:hover::before { background-image: url(chrome://global/skin/icons/arrow-left.svg); } /*--- customizing ---*/ #new_flybar[customizing] { min-width: var(--ug-newbar_max_width) !important; min-height: var(--ug-newbar_max_width) !important; padding-bottom: 48px !important; border-radius: var(--ug-newbar_radius) 0 0 var(--ug-newbar_radius) !important; } #new_flybar toolbarpaletteitem > :is(.toolbarbutton-1, toolbaritem) { opacity: 1 !important; } #customization-content-container { margin-right: var(--ug-newbar_max_width) !important; } #new_flybar[customizing]::before { display: none !important; } `; const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); })();Test Icon: flower-satt.png.zip
-
Horstmann Cool, das ist ja fast so, wie ich mir das vorgestellt habe!
-