Greasy Fork镜像 支持简体中文。

YouTube Live Borderless

Make YouTube Live Borderless

目前為 2023-01-11 提交的版本,檢視 最新版本

  1. /* ==UserStyle==
  2. @name YouTube Live Borderless
  3. @version 0.4.4
  4. @namespace github.com/cyfung1031
  5. @license MIT
  6. @description Make YouTube Live Borderless
  7. @author CY Fung
  8. @supportURL https://github.com/cyfung1031/YouTube-Live-Borderless/
  9. @compatible edge Edge [Blink] >= 105; Stylus (Beta)
  10. @compatible chrome Chrome >= 105; Stylus (Beta); Chrome 101-104 requires "enable-experimental-web-platform-features"
  11. @compatible firefox FireFox >= 103; Stylus; layout.css.has-selector.enabled = true; note: some features might not be very stable!!
  12. @compatible opera Opera >= 91; Stylus (Beta)
  13. @compatible safari Safari >= 15.4; Stylus
  14. @preprocessor stylus
  15. @var select mode-for-two-col "Mode ##TwoColumns" {
  16. "Expanded Panel Only #Recommended": "expanded-panel",
  17. "Expanded Live Chat Only": "expanded-live",
  18. "Expandable Live Chat Only": "expandable-live",
  19. "Always": "always"
  20. }
  21. @var select mode-for-single-col "Mode ##SingleColumn" {
  22. "YT Mobile #Recommended": "mobile",
  23. "Normal": "normal",
  24. "Disabled": "disabled"
  25. }
  26. @var checkbox no-masthead "Top.MastheadBar ::Hide" 0
  27. @var number masthead-hoverable-h "Top.MastheadBar ::Hoverable >>>1_alwaysHide" [4, 1, 8, 1]
  28. @var checkbox disable-cinematics "CinematicsEffect ::Disable" 0
  29. @var range video-enlarging "Video.Enlarging >>>Video.Border.Fine.Tune" [0, 0, 8, 2]
  30. @var range primary-content-margin "PrimaryContent ::Margin" [24, 6, 48, 6, "px"]
  31. @var range video-title-size "VideoTitle ::Size" [2.0, 1.0, 3.0, 0.2, "rem"]
  32. @var checkbox no-bottom-row "Bottom.PrimaryMetaInfoRow ::Hide" 0
  33. @var range min-below-area "BelowArea ::Minimum >>>10px_disable" [120, 10, 240, 10, 'px']
  34. @var range min-below-area-for-theater "WideTheater.BelowArea ::Minimum >>>10px_disable" [120, 10, 240, 10, 'px']
  35. @var number side-panel-width "SidePanel ::Width" [440, 320, 640, 20, "px"]
  36. @var checkbox no-round-border "RoundBorder ::Disable" 1
  37. @var number chat-zoom-for-right-col "RightCol.Chat ::Zoom" [1.0, 0.4, 1.2, 0.05]
  38. @var range chat-btn-height "RightCol.Chat ::SpaceAbove@Zoom >>>4px_disable" [36, 4, 60, 4, 'px']
  39. @var number chat-zoom-for-mobile "YTMobile.Chat ::Zoom" [1.0, 0.4, 1.2, 0.05]
  40. @var range chat-min-height "YTMobile.Chat ::Min.Height" [400, 20, 900, 10, 'px']
  41. ==/UserStyle== */
  42. /*
  43.  
  44. @var range chrome-bottom-bar-margin "Chrome Bottom Bar Margin" [12, 6, 48, 6, "px"]
  45.  
  46. Chrome Bottom Bar Margin is 12px only due to
  47.  
  48. MU = function(a) {
  49. var b = a.u.ag()
  50. , c = a.G.getVideoData().D
  51. , d = 0;
  52. a.u.ag() && a.u.Me() && (d = (a.G.fb().getPlayerSize().width - a.G.getVideoContentRect().width) / 2);
  53. return 12 * (c ? 0 : b ? 2 : 1) + d
  54. }
  55.  
  56. */
  57.  
  58. @-moz-document url-prefix("https://www.youtube.com/watch?v=") {
  59.  
  60. dummy() {
  61. // dummy
  62. border: 0;
  63. }
  64. buildL4(type, args...) {
  65. st1 = join('', ':', type, '(', join('\, ', args), ')')
  66. selector(st1)
  67. }
  68.  
  69. if min-below-area <= 10px {
  70. min-below-area = 0px
  71. }
  72. if min-below-area-for-theater <= 10px {
  73. min-below-area-for-theater = 0px
  74. }
  75. chat-btn-height = chat-btn-height + 1px
  76. if chat-btn-height == 4px + 1px {
  77. chat-btn-height = 0px
  78. }
  79. masthead-hoverable-height = (masthead-hoverable-h - 1) * 2px
  80.  
  81. no-masthead-w = no-masthead //
  82. chrome-bottom-bar-margin = 12px // this cannot be changed
  83.  
  84. single-col-mobile = 0 //
  85. if mode-for-single-col == "mobile" {
  86. single-col-mobile = 1 //
  87. if no-masthead == 0 {
  88. no-masthead-w = 2 //
  89. }
  90. }
  91. chat-zoom-for-mobile-enable = ((chat-zoom-for-mobile < 1) or (chat-zoom-for-mobile > 1))
  92.  
  93. content361(){
  94. html {
  95. --ylb-min-below-area: min-below-area;
  96. }
  97. // general fix
  98. ytd-watch-flexy[theater] #player-theater-container.ytd-watch-flexy{
  99. min-height: unset;
  100. }
  101. #movie_player .ytp-cued-thumbnail-overlay-image {
  102. /* background-size: contain !important; */
  103. background-size: auto 100% !important;
  104. }
  105. ytd-watch-flexy:not([is-two-columns_]) ytd-watch-metadata {
  106. padding-top: var(--ytd-margin-3x);
  107. }
  108. ytd-watch-flexy:not([is-two-columns_]):not([fullscreen]) #primary.ytd-watch-flexy {
  109. padding-top: 0;
  110. margin-top: 0;
  111. }
  112.  
  113. }
  114.  
  115. //
  116. contentNoMasthead() {
  117.  
  118. // root = html
  119. &,
  120. & {buildL4('is', 'ytd-app', 'ytd-page-manager[class].style-scope', 'ytd-watch-flexy[class].style-scope')} {
  121. /* 0px not 0 */
  122. --ytd-masthead-height: 0px;
  123. --ytd-toolbar-height: 0px;
  124. --ytd-watch-flexy-masthead-height: 0px;
  125. }
  126.  
  127. #masthead-container {
  128. height: 0;
  129. --masthead-opacity: 0;
  130. opacity: var(--masthead-opacity) !important;
  131. transition: opacity 300ms;
  132. min-height: masthead-hoverable-height;
  133. contain: layout size style;
  134. }
  135.  
  136. #masthead-container > ytd-masthead {
  137. transform: translateY(-100%);
  138. transition: transform 300ms;
  139. }
  140.  
  141. if masthead-hoverable-height > 0 {
  142.  
  143.  
  144. #masthead-container:hover {
  145. --masthead-opacity: 1;
  146. }
  147.  
  148. #masthead-container:hover > ytd-masthead {
  149. transform: translateY(0%);
  150. }
  151.  
  152. #masthead-container::after {
  153. content: '';
  154. display: flex;
  155. width: 100%;
  156. height: masthead-hoverable-height;
  157. top: 0;
  158. z-index: 77;
  159. cursor: default;
  160. user-select: none !important;
  161. touch-action: none !important;
  162. box-sizing: border-box;
  163. padding: 0;
  164. margin: 0;
  165. }
  166. }
  167.  
  168. ytd-watch-flexy.style-scope[is-two-columns_]:not([fullscreen]):not([theater]) {
  169.  
  170. #columns.style-scope.ytd-watch-flexy,
  171. #primary.style-scope.ytd-watch-flexy,
  172. #primary-inner.style-scope.ytd-watch-flexy,
  173. #secondary.style-scope.ytd-watch-flexy,
  174. #secondary-inner.style-scope.ytd-watch-flexy {
  175. height: 100vh;
  176. max-height: 100%;
  177. }
  178. }
  179.  
  180. ytd-watch-flexy.style-scope[is-two-columns_][theater]:not([fullscreen]) {
  181.  
  182. height: 100vh;
  183. #player-theater-container.ytd-watch-flexy {
  184. flex: 77;
  185. max-height: unset;
  186. }
  187.  
  188. }
  189. &:not([tabview-loaded]) ytd-watch-flexy.style-scope[is-two-columns_][theater]:not([fullscreen]) {
  190. #player-theater-container.ytd-watch-flexy ~ #columns.style-scope.ytd-watch-flexy {
  191. overflow: visible;
  192. }
  193. }
  194.  
  195.  
  196. } //
  197. #microformat.ytd-watch-flexy{
  198. position: fixed;
  199. top:-200vh;
  200. left:-200vw;
  201. }
  202. contentSingleColMobile(){
  203. // html:has(ytd-watch-flexy:not([is-two-columns_]):not([fullscreen]))
  204. #chat:not([collapsed]) {
  205. --ytd-margin-2x: 0;
  206. --ytd-margin-4x: 0;
  207. --ytd-margin-6x: 0;
  208. --ytd-margin-8x: 0;
  209. height: 100% !important;
  210. min-height: unset !important;
  211. max-height: 100vh !important;
  212. // position:relative;
  213. // top:auto;
  214. // bottom:0;
  215. iframe#chatframe{
  216. min-height: 0px;
  217. }
  218.  
  219.  
  220.  
  221. if chat-zoom-for-mobile-enable {
  222.  
  223.  
  224. iframe-transform = 'scale(%s)' % chat-zoom-for-mobile
  225. iframe-ratio = 100% / chat-zoom-for-mobile
  226.  
  227. iframe#chatframe {
  228. position:absolute;
  229.  
  230. transform: iframe-transform;
  231. height: s('calc((100% - %s) / %s) !important', chat-btn-height, chat-zoom-for-mobile);
  232. max-height: unset !important;
  233. min-height: unset !important;
  234. transform-origin: 0 0;
  235. width: iframe-ratio !important;
  236. margin-top: chat-btn-height;
  237.  
  238.  
  239. }
  240.  
  241.  
  242. }
  243.  
  244.  
  245. }
  246.  
  247. &:has(#chat:not([collapsed])) {
  248.  
  249. #contentContainer.tp-yt-app-drawer[swipe-open].tp-yt-app-drawer::after {
  250.  
  251. content: unset;
  252.  
  253. }
  254. #primary-inner.ytd-watch-flexy ytd-comments#comments.ytd-watch-flexy,
  255. #below.ytd-watch-flexy > .ytd-watch-flexy{buildL4('is', '#related', 'ytd-watch-metadata')} {
  256. /* display:none !important; */
  257. position: fixed !important;
  258. transform: scale(0.01) !important;
  259. transform-origin: 0 0 !important;
  260. left: -100vw !important;
  261. top: -100vh !important;
  262. visibility: collaspe !important;
  263. pointer-events: none !important;
  264. user-select: none !important;
  265. touch-action: none !important;
  266. }
  267.  
  268. #secondary.ytd-watch-flexy {
  269. display:none !important;
  270. }
  271.  
  272.  
  273.  
  274. .efyt-control-bar {
  275. position: relative;
  276. display: inline-flex;
  277. top: auto;
  278. left: auto;
  279. z-index: 99999;
  280. opacity: 0.8;
  281. transform: translate(calc(-100% + 32px), 0) !important;
  282. }
  283.  
  284. .efyt-control-bar:hover {
  285. opacity: 1.0;
  286. background: var(--yt-spec-general-background-a);
  287. transform: translate(0px, 0) !important;
  288. }
  289.  
  290. #player {
  291. margin-bottom: 0;
  292. }
  293.  
  294. {buildL4('is', '#columns', '#primary')} {
  295. padding: 0;
  296. }
  297. --ylb-min-below-area: chat-min-height;
  298.  
  299. {buildL4('is', '#player', '#player-theater-container', '#player-container-outer', '#player-container-inner', '#player-container', '#movie_player', '#movie_player video')} {
  300. object-fit: contain;
  301. max-height: calc(100vh - var(--ytd-toolbar-height) - var(--ylb-min-below-area, 0px)) !important;
  302. }
  303.  
  304. #primary-inner.ytd-watch-flexy > :not(.style-scope) {
  305. display: none !important;
  306. }
  307.  
  308. #below > *:not(#chat) {
  309. /* display:none !important; */
  310. position: fixed !important;
  311. transform: scale(0.01) !important;
  312. transform-origin: 0 0 !important;
  313. left: -100vw !important;
  314. top: -100vh !important;
  315. visibility: collaspe !important;
  316. pointer-events: none !important;
  317. user-select: none !important;
  318. touch-action: none !important;
  319. }
  320.  
  321. #below:not(:has(#chat)) {
  322. display: none;
  323. }
  324.  
  325.  
  326. {buildL4('is', 'ytd-watch-flexy', '#columns.ytd-watch-flexy', '#primary.ytd-watch-flexy', '#primary-inner.ytd-watch-flexy')} {
  327. display: flex;
  328. flex-direction: column;
  329. margin: 0;
  330. flex: 1;
  331. }
  332.  
  333. #below {
  334. flex: 1;
  335. }
  336.  
  337. ytd-watch-flexy {
  338. height: 100vh !important;
  339. max-height: 100vh !important;
  340. }
  341.  
  342. ytd-watch-flexy{buildL4('is', '[theater]', '[fullscreen]')} #player-theater-container.ytd-watch-flexy {
  343.  
  344. min-height: unset !important;
  345. }
  346. }
  347. }
  348.  
  349. content2c() {
  350.  
  351. if chat-zoom-for-right-col >1 or chat-zoom-for-right-col < 1 {
  352. ytd-watch-flexy[is-two-columns_]:not([fullscreen]) iframe#chatframe {
  353. position:absolute;
  354. margin-top:chat-btn-height;
  355.  
  356. transform: 'scale(%s)' % chat-zoom-for-right-col;
  357. transform-origin: 0 0;
  358. width: '%s !important' % (100% / chat-zoom-for-right-col);
  359. max-width: unset !important;
  360. height: s('calc( (100% - %s) / %s ) !important', chat-btn-height, chat-zoom-for-right-col);
  361. z-index: 1; /* for normal youtube */
  362.  
  363. }
  364.  
  365. }
  366.  
  367. if no-masthead-w==2 {
  368. //
  369. } else if no-masthead-w==1 {
  370. //
  371. } else {
  372.  
  373. ytd-watch-flexy.style-scope[is-two-columns_]:not([theater]):not([fullscreen]) {
  374.  
  375. .style-scope.ytd-watch-flexy{buildL4('is', '#secondary', '#secondary-inner')} {
  376. height: calc(100vh - var(--ytd-toolbar-height));
  377. max-height: 100%;
  378. }
  379. }
  380. }
  381.  
  382. ytd-watch-flexy[is-two-columns_]:not([fullscreen]) #movie_player {
  383. .ytp-chrome-bottom[style*="width"] {
  384. width: unset !important;
  385. left: chrome-bottom-bar-margin !important;
  386. right: chrome-bottom-bar-margin !important;
  387. }
  388.  
  389. }
  390. ytd-watch-flexy:not([is-two-columns_]):not([fullscreen]) #movie_player {
  391. .ytp-chrome-bottom[style*="width"] {
  392. left: 50% !important;
  393. transform: translateX(-50%);
  394. }
  395.  
  396. }
  397.  
  398. ytd-watch-flexy.style-scope[is-two-columns_]:not([theater]):not([fullscreen]) ytd-live-chat-frame#chat:not([collapsed]) {
  399. min-height: unset;
  400. }
  401.  
  402.  
  403. ytd-watch-flexy.style-scope[is-two-columns_]:not([fullscreen]) #primary-inner.ytd-watch-flexy > *:not(#player) {
  404. padding: 0 primary-content-margin 0;
  405. }
  406.  
  407.  
  408. ytd-watch-flexy.style-scope[is-two-columns_]:not([theater]):not([fullscreen]) #player
  409. .ytd-watch-flexy{buildL4('is', '#player-container-outer', '#player-container-inner', '#player-container')}{
  410.  
  411. // layout outside
  412. // no effect
  413. // layout inside
  414. max-height: calc(100vh - var(--ytd-toolbar-height, 0px) - var(--ylb-min-below-area, 0px)); // for very wide screen
  415. }
  416.  
  417. ytd-watch-flexy.style-scope[is-two-columns_][theater]:not([fullscreen]) #player-theater-container.ytd-watch-flexy {
  418. max-height: calc(100vh - var(--ytd-toolbar-height, 0px) - var(--ylb-min-below-area, 0px)); // for 4:3 video
  419. }
  420.  
  421.  
  422. body.lock-scrollbar[style*="overflow"][style*="hidden"]:has(ytd-watch-flexy[is-two-columns_]):has(#movie_player) {
  423. overflow-y: unset !important;
  424. }
  425.  
  426.  
  427. ytd-watch-flexy.style-scope[is-two-columns_] #columns.ytd-watch-flexy > #secondary.ytd-watch-flexy {
  428. width: side-panel-width;
  429. }
  430.  
  431.  
  432. }
  433.  
  434. contentf() {
  435. // html
  436.  
  437. body ytd-watch-flexy[flexy] #player-container-outer.ytd-watch-flexy {
  438. max-width: unset; // override var(--ytd-watch-flexy-max-player-width);
  439. }
  440.  
  441. &:not([tabview-loaded]) {
  442. body ytd-watch-flexy[flexy][is-two-columns_]{buildL4('is', '[is-extra-wide-video_]', '[is-four-three-to-sixteen-nine-video_]')} #primary.ytd-watch-flexy{
  443. max-width: unset; // override var(--ytd-watch-flexy-max-player-width);
  444. }
  445.  
  446. {buildL4('is',
  447. '#primary-inner.ytd-watch-flexy ytd-comments#comments.ytd-watch-flexy',
  448. '#secondary-inner.ytd-watch-flexy > #related.ytd-watch-flexy')} {
  449. display: none !important;
  450. }
  451.  
  452. ytd-watch-flexy:not([fullscreen]) #player-theater-container {
  453. max-height: calc(100vh - var(--ytd-toolbar-height) - var(--ylb-min-below-area, 0px)) !important;
  454. }
  455.  
  456. #cinematics {
  457. // contain: layout;
  458. contain: layout size style;
  459. user-select: none;
  460. touch-action: none;
  461. pointer-events: none;
  462. }
  463. ytd-watch-flexy[is-two-columns_]:not([theater]):not([fullscreen]) {buildL4('is',
  464. '#columns', '#primary', '#primary-inner', '#secondary', '#secondary-inner')} {
  465. height: calc(100vh - var(--ytd-toolbar-height));
  466. }
  467. }
  468. if video-enlarging > 0 {
  469. ytd-watch-flexy:not([theater]):not([fullscreen]) #movie_player video[src] {
  470. transform: 'scale(%s)' % (video-enlarging / 1000 + 1) ;
  471. transform-origin: 50% 50%;
  472. }
  473. }
  474.  
  475.  
  476. if no-masthead-w==2 {
  477. //
  478. } else if no-masthead-w==1 {
  479.  
  480. contentNoMasthead()
  481. }
  482. ytd-watch-flexy[flexy][is-two-columns_][theater]:not([fullscreen]) {
  483. --ylb-min-below-area: min-below-area-for-theater;
  484. {buildL4('is', '#player', '#player-theater-container', '#player-container-outer', '#player-container-inner', '#player-container', '#movie_player', '#movie_player video')} {
  485. object-fit: contain;
  486. max-height: calc(100vh - var(--ytd-toolbar-height) - var(--ylb-min-below-area, 0px)) !important;
  487. }
  488. }
  489.  
  490.  
  491.  
  492. if no-bottom-row {
  493.  
  494. #bottom-row.ytd-watch-metadata {
  495. display: none !important;
  496. }
  497. }
  498.  
  499. h1.ytd-watch-metadata {
  500. font-size: video-title-size;
  501. --font-size: video-title-size;
  502. line-height: 140%;
  503. margin-bottom: -2px;
  504. }
  505.  
  506.  
  507. ytd-watch-flexy.style-scope:not([fullscreen]) {
  508.  
  509. & {
  510. --ytd-margin-2y: var(--ytd-margin-2x);
  511. --ytd-margin-4y: var(--ytd-margin-4x);
  512. --ytd-margin-6y: var(--ytd-margin-6x);
  513. --ytd-margin-8y: var(--ytd-margin-8x);
  514. }
  515.  
  516. #columns.style-scope.ytd-watch-flexy {
  517. --ytd-margin-2x: 0;
  518. --ytd-margin-4x: 0;
  519. --ytd-margin-6x: 0;
  520. --ytd-margin-8x: 0;
  521. }
  522.  
  523. .style-scope.ytd-watch-flexy > :not(.ytd-watch-flexy),
  524. #below,
  525. #player {
  526. --ytd-margin-2x: var(--ytd-margin-2y);
  527. --ytd-margin-4x: var(--ytd-margin-4y);
  528. --ytd-margin-6x: var(--ytd-margin-6y);
  529. --ytd-margin-8x: var(--ytd-margin-8y);
  530. }
  531.  
  532. #secondary-inner.style-scope.ytd-watch-flexy {
  533. display: flex;
  534. flex-direction: column;
  535. height: 100%;
  536. }
  537.  
  538. #movie_player {
  539. position: relative;
  540. > .html5-video-container:has(video) {
  541. top: 0;
  542. bottom: 0;
  543. left: 0;
  544. right: 0;
  545. position: absolute;
  546. }
  547.  
  548. .html5-video-container > video {
  549. width: unset !important;
  550. height: 100% !important;
  551. left: 0 !important;
  552. right: 0 !important;
  553. max-height: 100%;
  554. max-width: 100%;
  555. margin: 0 auto;
  556. }
  557.  
  558. /*
  559. .ytp-iv-video-content {
  560. width: 100% !important;
  561. height: 100% !important;
  562. }
  563. */
  564.  
  565. /*
  566. // this is buggy; eg multiple chapter hover container; can be fixed by YouTube Video Resize Fix Only
  567. .ytp-chapter-hover-container[style*="width"] {
  568. width: 100% !important;
  569. }
  570. */
  571. .html5-video-container > video[style*="top:"]:not(video[style*="top: -"]):not(video[style*="top:-"]) {
  572. top: 0 !important;
  573. }
  574.  
  575. }
  576.  
  577. #chat:not([collapsed]) {
  578. flex: 77;
  579. }
  580.  
  581. #right-tabs {
  582. display: flex;
  583. margin: 0 !important;
  584. flex: 1;
  585. flex-direction: column;
  586.  
  587. {buildL4('is', '#material-tabs', '.tab-content')} {
  588. outline: 0;
  589. }
  590.  
  591. .tab-content {
  592. flex: 77;
  593. }
  594. }
  595.  
  596. &:not([is-two-columns_]) #primary-inner > *:not(#player) {
  597. padding: 0;
  598. }
  599.  
  600. &:not([is-two-columns_]) #primary-inner #below > *:not(ytd-live-chat-frame#chat) {
  601. padding: 0 primary-content-margin 0;
  602. }
  603. /*
  604. #player-container-outer.ytd-watch-flexy {
  605. max-width: unset;
  606. }
  607. */
  608. }
  609.  
  610.  
  611.  
  612. if no-round-border {
  613.  
  614. ytd-live-chat-frame[rounded-container],
  615. ytd-live-chat-frame[rounded-container] #show-hide-button.ytd-live-chat-frame ytd-toggle-button-renderer.ytd-live-chat-frame,
  616. ytd-live-chat-frame[rounded-container] iframe.ytd-live-chat-frame,
  617. ytd-live-chat-frame[rounded-container] #show-hide-button.ytd-live-chat-frame ytd-toggle-button-renderer.ytd-live-chat-frame button.yt-spec-button-shape-next,
  618. ytd-live-chat-frame[rounded-container] #show-hide-button.ytd-live-chat-frame ytd-toggle-button-renderer.ytd-live-chat-frame button.yt-spec-button-shape-next:hover {
  619. border-radius: unset;
  620. }
  621. }
  622.  
  623.  
  624. if disable-cinematics {
  625. #cinematics.ytd-watch-flexy {
  626. display: none;
  627. }
  628. }
  629. } //
  630. contentg() {
  631.  
  632. content2c() //
  633. selector-g = '&' //
  634. if mode-for-single-col=="disabled" { //
  635. selector-g = '&:has(ytd-watch-flexy[is-two-columns_])' //
  636. } //
  637. {s(selector-g)} { //
  638. // html
  639. contentf() //
  640. } //
  641. }
  642. content361() //
  643. selectors-2col = { //
  644. "expanded-panel": join(', ',
  645. "html:not([tabview-loaded]):has(ytd-live-chat-frame#chat:not([collapsed])):has(iframe#chatframe)",
  646. "html[tabview-loaded]:has(ytd-watch-flexy[is-two-columns_]:not([fullscreen]):not([theater]))"
  647. ),
  648. "expanded-live": "html:has(ytd-live-chat-frame#chat:not([collapsed])):has(iframe#chatframe)",
  649. "expandable-live": "html:has(ytd-live-chat-frame#chat):has(iframe#chatframe)",
  650. "always": "html"
  651. } //
  652. selector-2col = selectors-2col[mode-for-two-col]
  653. selectors-k = split(', ', selector-2col)
  654. for selector-k in selectors-k {
  655. {s(selector-k)} {
  656. contentg() //
  657. }
  658. }
  659.  
  660. if single-col-mobile {
  661. &:has(ytd-watch-flexy:not([is-two-columns_]):not([fullscreen])) {
  662.  
  663. if no-masthead-w==2 {
  664. contentNoMasthead()
  665. }
  666. contentSingleColMobile()
  667. }
  668. }
  669. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址