Расширитель Пикабу

Надоело мне, читая Пикабу, сводить глаза в кучку и щуриться одновременно, и сделал я себе расширитель. На скриншоте – вид сайта на экране 1920 пк шириной, адаптируемо под другие экраны:

Расширитель Пикабу Userscript, Пикабу

Для скриптовой части требуется аддон Tampermonkey (Greasemonkey, вероятно, тоже сможет), для стилевой части требуется аддон Stylus. В рамках этой заметки я не вдаюсь в детали установки и применения.


Что они делают?


Стиль – расширяет поле чтения до максимума, адаптируется к экрану благодаря функции calc. Правый сайдбар тоже немного поджимается. Для картинок поставлены скругления и бордюр, решайте по своему вкусу

html { font-size: 20px; } /* крупнота */

.app__inner { /* ширина поля */

margin-left: 75px;

max-width: calc(100% - 80px);

}

.sidebar { width: 310px; } /* сайдбар в самое право */

.main { width: calc(100% - 310px); } /* подстыковываем поле */

.story-block_type_video { padding-left: 27px; } /* отбиваем видео слева */

.page-story__rating-pluses, .page-story__rating-minuses { height: 10px; } /* плюсы-минусы покрупнее */

/* картинки */

.story-image__content { position: inherit; }

.story-image__stretch { display: none; }

.story-image__content a { width: 100%; padding: 0 2px; }

.story-image__content img {

border: 6px solid #fafafa;

border-radius: 30px;

}

Скрипт – осматривает все картинки и заменяет их на их же более качественные версии. Если исходно картинка была больше заданного размера wdt (меняйте эту переменную сами), к ней применяется максимальная ширина, работающая в союзе со стилем. Если же картинка была крохотной, в кадре будет лютое "мыло", её нет смысла раздувать до гиганта.

// ==UserScript==

// @name Picabu Pic Beautifier

// @VERSION 2021.02.27

// @Author Rainbow-Spike

// @match https://pikabu.ru/*

// @GrAnt none

// @run-at document-end

// ==/UserScript==


var wdt = 500;


function action ( ) {

document.querySelectorAll ( '.story-image__content img' ).forEach ( function ( e ) {

var dli = e.getAttribute ( 'data-large-image' );

if ( dli != null && e.src != dli ) e.src = dli;

if ( e.width > wdt ) e.style.width = '100%';

} );

}

setInterval ( action, 100 );