Uncrops and expands Twitter image previews to their original ratios while browsing. View media pages in full-width and uncover rounded edges for a better viewing experience. Written in SCSS.
- // ==UserScript==
- // @name Expandify Twitter Media
- // @version 4.9.1a
- // @description Uncrops and expands Twitter image previews to their original ratios while browsing. View media pages in full-width and uncover rounded edges for a better viewing experience. Written in SCSS.
- // @author Neuvalence, JayeVisual.com
- // @match https://*.twitter.com/*
- // @match https://*.x.com/*
- // @grant GM_addStyle
- // @license MIT
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
- // @require https://code.jquery.com/ui/1.13.3/jquery-ui.js
- // @icon https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Logo_of_Twitter.svg/292px-Logo_of_Twitter.svg.png
- // @namespace https://greasyfork.org/users/1275871
- // ==/UserScript==
- (function () {
- 'use strict';
- function onElementAvailable(selector, callback) {
- const observer = new MutationObserver(mutations => {
- if (document.querySelector(selector)) {
- observer.disconnect();
- callback();
- }
- });
- observer.observe(document.body, {
- childList: true,
- subtree: true
- });
- }
- const rafraichir = 2000;
- setInterval(() => {
- const ogTwt__Header = document.querySelector("header");
- let ogTwt__HeaderSubArea = document.querySelector("header > div:nth-child(1) > div:nth-child(1)");
- ogTwt__Header.id = "ogTwt__Header";
- ogTwt__HeaderSubArea.id = "ogTwt__HeaderSubArea";
- $(ogTwt__Header).append(ogTwt__HeaderSubArea);
- }, rafraichir);
- (function () {
- let css = `
- header {
- overflow: hidden !important;
- height: 100vh !important;
- max-height: 100vh !important;
- display: block !important;
- .r-pt392 {
- margin-left: unset !important;
- }
- #ogTwt__HeaderSubArea {
- width: unset !important;
- transform: scale(0.9) !important;
- max-width: unset !important;
- min-width: unset !important;
- }
- }
- header *, header,
- header::-webkit-scrollbar,
- header *::-webkit-scrollbar {
- -ms-overflow-style: none;
- scrollbar-width: none;
- }
- main {
- width: 100% !important;
- max-width: 100% !important;
- display: block !important;
- position: relative !important;
- & > div:nth-child(1),
- & > div > div:nth-child(1),
- & > div > div > div:nth-child(1) {
- width: 100% !important;
- max-width: 100% !important;
- display: block !important;
- position: relative !important;
- }
- }
- article *,
- article [aria-label] img,
- article [aria-label] div *,
- article [aria-label] *,
- [data-testid='tweet'] * {
- border: unset !important;
- border-radius: unset !important;
- clip-path: unset !important;
- border-style: none !important;
- }
- [data-testid="cellInnerDiv"] * {
- border: none;
- }
- article {
- border: #ffffff11 0.3px solid !important;
- border-radius: 3px !important;
- }
- article [aria-label] img {
- border-radius: 2px !important;
- }
- [data-testid='Tweet-User-Avatar'] a * {
- border-radius: 10rem !important;
- }
- main > div:nth-child(1),
- main > div:nth-child(1) > div:nth-child(1),
- main > div:nth-child(1) > div:nth-child(1) > div:nth-child(1)
- {
- width: 100% !important;
- max-width: 100% !important;
- }
- main div[data-testid*='primary'] > div > div:nth-child(3) > div > div > div:nth-child(1),
- main div[data-testid*='primary'] > div > div:nth-child(3) > div > div > nav,
- main div[data-testid*='primary'] section
- {
- width: 100% !important;
- max-width: 875px !important;
- margin: 0 auto !important;
- margin-left: 10vw !important;
- }
- main div[data-testid*='primary'] > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1),
- main div[data-testid*='primary'] > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) nav {
- max-width: calc(100% - 350px) !important;
- }
- main div[data-testid*='primary'],
- main div[data-testid*='primary'] > div,
- main div[data-testid*='primary'] > div > div, /* all 3 */
- main div[data-testid*='primary'] .r-1ye8kvj,
- main div[data-testid*='primary'] > div > div,
- main div[data-testid*='primary'] > div > div > div,
- main div[data-testid*='primary'] > div > div > div > div,
- main div[data-testid*='primary'] > div > div > div > .r-1ye8kvj, /* troisième */
- main div[data-testid*='primary'] > div > div > div > div > .r-1ye8kvj, /* troisième avc sous-mâitre */
- main:has(a[href*="/media"]) div[data-testid*='primary']:has(div[data-testid*="ScrollSnap-List"] > div:last-child > a[aria-selected*="true"]) section
- {
- width: 100% !important;
- max-width: 100% !important;
- }
- main div[data-testid*='primary'] section:has([id*='verticalGridItem']),
- main div[data-testid*='primary']:has([id*='verticalGridItem'])
- {
- width: 100% !important;
- min-width: 100% !important;
- max-width: 100% !important;
- margin: 0 auto !important;
- margin-right: 0% !important;
- }
- main div[data-testid*='primary'] li img {
- inset: unset !important;
- opacity: 1 !important;
- border-radius: 2px !important;
- position: relative !important;
- left: unset !important;
- top: unset !important;
- width: 100% !important;
- height: auto !important;
- object-fit: contain !important;
- min-height: auto !important;
- max-height: 100% !important;
- max-width: 100% !important;
- }
- div[data-testid*='primary'] [data-testid="tweetPhoto"] > img,
- div[data-testid*='primary'] [aria-label] > img {
- width: auto !important;
- height: 100% !important;
- background: none !important;
- position: relative !important;
- z-index: 1 !important;
- inset: unset !important;
- opacity: 1 !important;
- object-fit: contain !important;
- }
- div[data-testid*='primary'] li a > div > div:nth-child(2) > div > div:nth-child(1),
- div[data-testid*='primary'] [aria-label]:has(> img) > div:nth-child(1),
- div[data-testid*='primary'] [data-testid="tweetPhoto"]:has(> img) > div:nth-child(1) {
- background: none !important;
- display: none !important;
- visibility: hidden !important;
- }
- [data-testid="tweetText"] span {
- font-size: 1.2rem !important;
- line-height: 1.1 !important;
- }
- div[data-testid*='sidebar'] {
- position: absolute !important;
- right: 2rem !important;
- top: 0 !important;
- height: 80px !important;
- z-index: 9000;
- margin: 0 !important;
- padding: 5px !important;
- background-color: unset !important;
- div[aria-label] > div:nth-child(1) > div:nth-child(1) {
- margin-top: 5px !important;
- }
- & > div > div:nth-child(2) {
- padding: 10px;
- }
- & > div > div:nth-child(2) > div > div > div > div {
- display: none;
- }
- & > div > div:nth-child(2) > div > div > div > div:nth-child(1) {
- display: block !important;
- }
- & > div > div:nth-child(2) > div > div > div > div:nth-child(1) {
- background: none !important;
- }
- &:hover {
- height: 100% !important;
- div[aria-label],
- div:nth-child(1) > div,
- div:nth-child(1) > div > div,
- div > div:nth-child(2) > div > div > div > div:nth-child(1) {
- background-color: #000000 !important;
- border-radius: 20px;
- }
- & > div > div:nth-child(2) > div > div > div > div {
- display: block !important;
- }
- }
- }
- `;
- if (typeof GM_addStyle !== "undefined") {
- GM_addStyle(css);
- } else {
- let styleNode = document.createElement("style");
- styleNode.appendChild(document.createTextNode(css));
- (document.querySelector("head") || document.documentElement).appendChild(styleNode);
- }
- })(); /* End CSS*/
- })(); /* End ALL */