The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Как автоматически отключить закреплённые шапки на сайтах в Firefox
Последнее время дизайнеры всё чаще используют CSS-свойство "position: fixed"
для закрепления шапки и футера, что создаёт дискомфорт при просмотре страниц и
съедает драгоценное экранное пространство на широкоформатных экранах.

Для автоматического отключения "position: fixed"  можно использовать дополнение
greasemonkey
вместе с простым скриптом  unfix-all-the-toolbars.user.js:


   // ==UserScript==
   // @name        unfix-all-the-toolbars
   // @description Removes "position: fixed" style from elements, unfixing "toolbars" and the such.
   // @namespace   http://inf.ufrgs.br/~vbuaraujo/
   // @include     *
   // @version     1
   // @grant       none
   // ==/UserScript==


   /* 
   Based on https://stackoverflow.com/questions/13696100/greasemonkey-script-to-make-fixed-positioned-elements-static
   2015-02-17: Original version.
   2016-05-01: Added the styleWidth threshold heuristic.
   The big problem here is we want to avoid unfixing *all* "position: fixed"
   elements, because some of them are fake popup windows which become quite
   unusable if you change them to "position: static". So we need some heuristic
   to distinguish "legitimate" fixed elements from gratuitous ones like navbars.
   */

   function numPixels(str) {
     if (str.endsWith("px"))
       return Number(str.slice(0, -2));
     else {
       console.log("unfix-all-the-toolbars: Computed width is not in pixels! " + width);
       return null;
     }
   }

  function unfixAll() {
     var bodyStyle = window.getComputedStyle(document.body);
     var pageWidth = numPixels(bodyStyle.width);
     var pageHeight= numPixels(bodyStyle.height);
     var toolbarWidthThreshold = 0.8 * pageWidth;
  
     Array.forEach(
       /* Assorted selection of likely fixed elements, to avoid querying all elements */
       document.querySelectorAll("h1, h2, ul, ol, li, div, nav, header, footer"),
       function (el) {
         var style = window.getComputedStyle(el);
         if (style.position === "fixed") {
           /* Avoid unfixing JavaScript popus like Twitter's "confirm retweet" window */
           if (style.display === "none" || style.visibility === "hidden") return;
           if (numPixels(style.width) < toolbarWidthThreshold) return;
        
           // Try to select the best replacement for 'fixed'. Still breaks lots of things, though.
          if (numPixels(style.bottom) === 0 && numPixels(style.top) > 0)
             el.style.position = "static";    // Use static for footers.
           else
             el.style.position = "absolute";
         }
      });
   }

   window.addEventListener("load", unfixAll);



Другими вариантами могут  стать Firefox-дополнения unstickall, [[https://addons.mozilla.org/en-US/firefox/addon/hide-fixed-elements/ Hide Fixed
Elements]] и Bar Breaker, которые позволяют отключить закрепление любого
блока через клик на нём.
 
11.05.2018
Ключи: firefox, css, position, fixed / Лицензия: CC-BY
Раздел:    Корень / Пользователю / Работа с Web и Ftp

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (-), 11:18, 11/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +1 +/
    >  // ==/UserScript==

    лицензия какая?

     
     
  • 2.2, Andrey Mitrofanov (?), 11:38, 11/05/2018 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >>  // ==/UserScript==
    > лицензия какая?

    КуритеТоварищПрапорщикНичьёL.

     
  • 2.7, Аноним (-), 10:21, 16/05/2018 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    wtfpl
     

  • 1.3, Аноним (-), 18:55, 11/05/2018 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    Есть ещё некоторые ополоумевшие от своего величия вендоры, которые иной раз 80% окна нескрываемым анонсом покрывают,я в таких случаях адблоком делаю select element to hide
     
  • 1.4, Аноним (-), 04:26, 12/05/2018 [ответить] [﹢﹢﹢] [ · · · ]      [к модератору]
  • +1 +/
    Вообще-то для таких целей есть сайты типа https://greasyfork.org
     
  • 1.5, A (?), 07:18, 13/05/2018 [ответить] [﹢﹢﹢] [ · · · ]      [к модератору]
  • +/
    Еще бы яндекс-директ научиться прятать, а то они взяли моду все ID элементов менять постоянно, т.е. еще поискать надо, что прятать.
     
     
  • 2.6, Аноним (-), 15:39, 15/05/2018 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    NoScript все это паскудство рубит более-менее успешно.
    Правда, и кое-что нужное при этом под нож идет, но меня лично больше выбешивает их реклама, так что доволен...
     
     
  • 3.8, Аноним (-), 19:57, 20/05/2018 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > NoScript все это паскудство рубит более-менее успешно.

    я в адблок всю эту голландскую организацию добавил, чего и всем рекомендую

     
     
  • 4.10, Аноним (-), 13:51, 21/05/2018 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Покажи правила, если не жалко...
     
  • 3.11, Graff (?), 14:39, 24/05/2018 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    с mMatrix так же работает, вместе с баннерами режется полезный контент, т.к. ушлые сайтовладельцы засовывают в один скрипт загрузку баннеров и загрузку чего-то полезного, там, где это критично приходится терпеть
     
  • 2.12, Аноним (12), 13:35, 31/07/2018 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Практика довольно частая сейчас и говорит о том, что классические блокировщики постепенно уходят в прошлое. Нужен более глубокий подход к определению элемента, чем в CSS. Например - видеть через фильтр все свойства, использовать в ID полноценные регулярные выражения, смотреть на структуру вокруг.
     
     
  • 3.13, Аноним (12), 13:41, 31/07/2018 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Вот что-то примерно подходящее: https://adblockplus.org/ru/filters#elemhide-emulation
     
     
  • 4.14, Аноним (12), 13:44, 31/07/2018 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Вот что-то примерно подходящее: https://adblockplus.org/ru/filters#elemhide-emulation

    И ещё немного интересностей: https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#scriptlet-injectio

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру