YT chat版面

聊天室排版修改YouTube Live Chat layout modify

  1. /* ==UserStyle==
  2. @name YT chat版面
  3. @version 2.0.9
  4. @namespace https://greatest.deepsurf.us/zh-TW/users/4839
  5. @license MIT
  6. @description 聊天室排版修改YouTube Live Chat layout modify
  7. @author Leadra
  8. @preprocessor stylus
  9. @var number chat_top "訊息置頂透明度" [1, 0, 1, 0.1]
  10. @var number chat_tophead "訊息置頂高度" [0, 0, 30, 10, "px"]
  11. @var checkbox hide_top "訊息置頂隱藏" 0
  12. @var range font_shadow "文字陰影" [1.5, 0, 5, 0.5, "px"]
  13. @var color font_shadow_color "文字陰影背景色1" #000
  14. @var color font_shadow_color2 "文字陰影背景色2" #036
  15. @var color manager_background "板手+版主強調背景色" rgba(0, 0, 255, .5)
  16. @var checkbox superchat_size "SC框延長+透明0.8" 1
  17. @var checkbox hide_sc_head "SC計時列縮小" 1
  18. @var number sc_head ">SC計時列高度" [25, 0, 50, 5, "px"]
  19. @var checkbox hide_survey "投票調查隱藏" 1
  20. @var checkbox hide_reaction "提醒+愛心隱藏" 1
  21. @var checkbox hide_tooltip "貼圖註解隱藏" 1
  22. @var checkbox message_lines "會員訊息右側線" 1
  23. @var checkbox chat_scroll "聊天室Y卷軸隱藏" 1
  24. @var checkbox alternate_background "聊天交叉背景色" 1
  25. @var checkbox message_pr "聊天斷行" 0
  26. @var checkbox name_pr "name斷行" 0
  27. @var checkbox name_pr2 "name靠右" 0
  28. @var checkbox hide_user_name "name+徽章隱藏" 0
  29. @var checkbox hide_pic "大頭貼隱藏" 0
  30. @var checkbox input_down "打字區+貼圖框縮緊固定" 1
  31. @var range emoji_member ">會員貼圖放大" [35, 10, 50, 5, "px"]
  32. @var range emoji_normal ">一般貼圖間距" [2.5, 1, 5, 0.5, "px"]
  33. @var range text_pr "聊天行距" [0, -6, 10, 1, "px"]
  34. @var range message_fontsize "聊天字體size" [18, 14, 20, 1, "px"]
  35. @var range name_size "名稱size" [14, 0, 20, 1, "px"]
  36. @var range profile_picturesize "大頭貼Size" [26, 0, 48, 2, "px"]
  37. @var range badge_size "會員徽章Size" [14, 8, 32, 2, "px"]
  38. @var range emoji_size "貼圖Emoji Size" [24, 0, 32, 2, "px"]
  39. @var range timestamp_fontsize "時間軸Size" [14, 14, 20, 1, "px"]
  40. ==/UserStyle== */
  41. /*特別感謝
  42. https://userstyles.world/style/2625/kaiteki-youtube-chat
  43. https://userstyles.world/style/3515/youtube-live-chat-tweaks
  44. https://greatest.deepsurf.us/zh-TW/users/371179-𝖢𝖸-𝖥𝗎𝗇𝗀
  45. */
  46. @-moz-document url-prefix("https://www.youtube.com/live_chat") {
  47. //#06f淺藍
  48. //header全部聊天欄位yt-live-chat-header-renderer {padding: 0px!important;margin: 0px!important;}
  49. /*版主聊天置頂復原樣式_上部固定をすると見た目が変わるため、各種スタイルを打ち消す必要がある*/
  50. //#contents > yt-live-chat-text-message-renderer[author-type="moderator"] {background-color: #d40213 !important;}
  51. /*alternate交叉背景色*/
  52. if alternate_background {
  53. yt-live-chat-text-message-renderer:nth-child(even) {background-color: rgba(100, 100, 100, .2);}
  54. /*2方法yt-live-chat-text-message-renderer.yt-chat-item-even[class] {background-color: var(--yt-live-chat-message-background-color);}
  55. yt-live-chat-text-message-renderer.yt-chat-item-odd[class] {background-color: var(--yt-live-chat-message-highlight-background-color);}*/
  56. }
  57. /*板手+版主強調背景色*/
  58. yt-live-chat-text-message-renderer[author-type="moderator"] {
  59. padding: 2px 12px;
  60. background: manager_background!important;
  61. & > #content > span#message {
  62. color: #fff;
  63. text-shadow: 1px -1px #000, -1px -1px #000, -1px 1px #000,1px 1px #000,
  64. 0 0 1px #000, 0 0 1px #000, 0 0 1px #000, 0 0 1px #000;
  65. }
  66. }
  67. yt-live-chat-text-message-renderer[author-type="owner"] {
  68. background-color: rgba(239, 239, 0, .3)!important;
  69. }
  70. yt-live-chat-banner-manager[has-active-banner] yt-live-chat-banner-renderer.yt-live-chat-banner-manager{
  71. background: manager_background!important;
  72. }
  73. /*訊息置頂透明度*/
  74. yt-live-chat-banner-manager[has-active-banner]{
  75. opacity:chat_top;
  76. margin: 0px 0px 0px 0px !important;
  77. //chat_tophead=chat_tophead+sc_head;
  78. padding: 0px 0px 0px 0px;
  79. text-shadow: -0.5px 0.5px #000;
  80. if chat_top == 0{display:none;}
  81. }
  82. yt-live-chat-banner-manager[has-active-banner] yt-live-chat-banner-renderer.yt-live-chat-banner-manager{
  83. background-color: rgba(255, 255, 255, .5)!important;
  84. chat_tophead = chat_tophead + sc_head;
  85. margin: chat_tophead 0px 0px 0px;
  86. padding: 0px 0px 0px 0px !important;
  87. }
  88. //YT訊息置頂隱藏
  89. if hide_top{
  90. yt-live-chat-banner-manager[has-active-banner]{
  91. display:none;
  92. }
  93. }
  94. /*SC倒數計時調整*/
  95. if hide_sc_head {
  96. yt-live-chat-ticker-renderer.style-scope.yt-live-chat-renderer {
  97. max-height:30px;margin: -0px -0px -0px 0px;
  98. background:rgba(0, 0, 0, 0);opacity:0.7;
  99. position:absolute;
  100. z-index:-1;
  101. if sc_head == 0{display:none;}
  102. }
  103. /*yt-live-chat-renderer[has-action-panel-renderer] #show-more.yt-live-chat-item-list-renderer,yt-icon-button.yt-live-chat-item-list-renderer{
  104. position:fixed;
  105. z-index:10;
  106. }*/
  107. /*每月會員計時背景調整*/
  108. #container.yt-live-chat-ticker-sponsor-item-renderer{max-height:sc_head;margin: -0px -0px -0px 0px;padding: 0px 0px 0px 0px !important;}
  109. #content.yt-live-chat-ticker-sponsor-item-renderer{margin: -0px -0px -0px 0px;padding: 0px 0px 0px 0px !important;}
  110. #text.yt-live-chat-ticker-sponsor-item-renderer{margin: -0px -0px 0px 5px;padding: 0px 0px 0px 0px !important;}
  111. /*SC計時背景調整*/
  112. #container.yt-live-chat-ticker-paid-message-item-renderer{max-height:sc_head;margin: -0px -0px -0px 0px;padding: 0px 0px 0px 0px !important;}
  113. #content.yt-live-chat-ticker-paid-message-item-renderer{margin: -0px -0px -0px 0px;padding: 0px 0px 0px 0px !important;}
  114. #username-text.yt-live-chat-ticker-paid-message-item-renderer{margin: -0px -0px -0px 0px;padding: 0px 0px 0px 0px !important;}
  115. #text.yt-live-chat-ticker-paid-message-item-renderer{margin: -0px 5px -0px 5px;padding: 0px 0px 0px 0px !important;}
  116. //#container.run-ticker, yt-live-chat-ticker-renderer[class] #content,#items[class] > *[class] > #container.run-ticker[class ]{max-height:sc_head;margin: -0px -0px -0px 0px;padding: 0px 0px 0px 0px !important;}
  117. //#container.yt-live-chat-ticker-renderer{max-height:sc_head;margin: -0px -0px -0px 0px;padding: 0px 0px 0px 0px !important;}
  118. }
  119. /*message lines會員訊息右側線*/
  120. if message_lines {
  121. yt-live-chat-text-message-renderer {
  122. //border-left: left-message-line solid;
  123. border-right: 2px solid;
  124. border-color: rgba(255,255,255,0)//default-line-color;
  125. }
  126. yt-live-chat-text-message-renderer[author-type="member"] {
  127. border-color: var(--yt-live-chat-sponsor-color);
  128. }
  129. yt-live-chat-text-message-renderer[author-type="moderator"] {
  130. border-color: var(--yt-live-chat-moderator-color);
  131. }
  132. yt-live-chat-text-message-renderer[author-type="owner"] {
  133. border-color: var(--yt-live-chat-author-chip-owner-background-color); // var(--yt-spec-general-background-c);
  134. }
  135. }
  136. /*大頭貼profile picture*/
  137. //#avatar.yt-live-chat-message-input-renderer,
  138. //#avatar.yt-live-chat-message-input-renderer > img,
  139. #author-photo.yt-live-chat-text-message-renderer,
  140. #author-photo.yt-live-chat-text-message-renderer > img {
  141. width: profile_picturesize;
  142. height: profile_picturesize;
  143. margin: 0px;
  144. //強制顯示大頭貼if profile_picturesize >= 0{display: unset!important;}
  145. /*隱藏大頭貼*/
  146. if hide_pic {display: none!important;}
  147. }
  148. /*emoji*/
  149. #input.yt-live-chat-text-input-field-renderer img.yt-live-chat-text-input-field-renderer,
  150. #message.yt-live-chat-text-message-renderer .emoji.yt-live-chat-text-message-renderer {
  151. margin: 0px 0px 0x 0px ;
  152. padding: 0px 0px 0x 0px ;
  153. width: emoji_size;
  154. height: emoji_size;
  155. line-height: emoji_size;
  156. align-self: center;//垂直對齊:中間
  157. align-items: center;
  158. vertical-align: middle;
  159. }
  160. /*badge會員徽章*/
  161. img.yt-live-chat-author-badge-renderer, yt-icon.yt-live-chat-author-badge-renderer {
  162. width: badge_size;
  163. height: badge_size;
  164. margin: 0px -0px 0px -0px ;
  165. }
  166. /*superchat*/
  167. yt-live-chat-paid-message-renderer #message.yt-live-chat-paid-message-renderer {
  168. padding: 0px;
  169. margin: -0px -0px -0px -0px ;
  170. font-size: message_fontsize;
  171. line-height: message_fontsize;
  172. letter-spacing:0.5px;/*字元間距*/
  173. }
  174. /*放大透明化_SC+會員每月留言+贈送會員外框+SC貼圖*/
  175. if superchat_size {
  176. yt-live-chat-paid-message-renderer,yt-live-chat-membership-item-renderer {
  177. margin: 0px -0px -0px -0px!important ;
  178. padding: 2px 5px;
  179. opacity:0.8;
  180. line-height:1em;
  181. & > #card {
  182. position: relative;//相對位置
  183. //align-items: center;//置中背景不填滿
  184. //SC+每月上半部
  185. & > #header {padding: 2px 10px!important;min-height:32px;}
  186. //SC+每月下半部
  187. & > #content {padding: 0px 5px 3px 5px !important; font-size: message-font-size;}
  188. }
  189. }
  190. //喜歡按鈕
  191. yt-live-chat-like-button-view-model {
  192. position: fixed;//absolute
  193. right:2em;
  194. top:5px;
  195. }
  196. //贈送會員外框
  197. #header.ytd-sponsorships-live-chat-header-renderer{
  198. min-height:10px;
  199. opacity:0.7;
  200. position: relative;//相對層級
  201. z-index:100;
  202. & > yt-img-shadow,& > yt-img-shadow img{height: 50px;width: 50px; position: absolute;z-index:-100;right:0px;}
  203. }
  204. //SC貼圖(大頭貼)
  205. yt-live-chat-paid-sticker-renderer {opacity:0.8;margin: 0px -0px -0px -0px;
  206. & > #card{
  207. yt-img-shadow , yt-img-shadow img{max-height: 50px;max-width: 50px;}
  208. }
  209. }
  210. }
  211.  
  212. /*message聊天斷行*/
  213. if message_pr {
  214. yt-live-chat-text-message-renderer.yt-live-chat-item-list-renderer #message.yt-live-chat-text-message-renderer {
  215. display: block;
  216. }}
  217. /*message+聊天行距*/
  218. yt-live-chat-text-message-renderer.yt-live-chat-item-list-renderer
  219. #message.yt-live-chat-text-message-renderer {
  220. padding: 0px 0px 0px 0px!important;
  221. margin: text_pr 0px text_pr 0px!important;
  222. font-size: message_fontsize;
  223. line-height: message_fontsize;
  224. align-items: center;//大頭貼垂直置中
  225. vertical-align: middle;//文字垂直置中
  226. //letter-spacing:0.5px;//字元間距
  227. //align-self: center;//垂直對齊:中間
  228. //text-align:justify;//左右對齊
  229. /*文字陰影+模糊_右上-左上-左下-右下+短模糊*4*/
  230. if font_shadow >= 0.5 {
  231. text-shadow: 0.5px -0.5px font_shadow font_shadow_color, -0.5px -0.5px font_shadow_color, -0.5px 0.5px font_shadow font_shadow_color, 0.5px 0.5px font_shadow font_shadow_color,
  232. 0 0 0.5px font_shadow_color2, 0 0 0.5px font_shadow_color2, 0 0 0.5px font_shadow_color2, 0 0 0.5px font_shadow_color2;
  233. }//font-weight:bold;
  234. /*
  235. html[dark][data-ytlstm-overlay-text-shadow][data-ytlstm-chat-over-video] yt-live-chat-text-message-renderer #content{
  236. text-shadow: black 1px 1px 1px, black -1px -1px 1px, black 1px -1px 1px, black -1px 1px 1px;
  237. }
  238. */
  239. }
  240.  
  241. /*name字體*/
  242. yt-live-chat-text-message-renderer.yt-live-chat-item-list-renderer yt-live-chat-author-chip.yt-live-chat-text-message-renderer {
  243. display: inline-flex;
  244. flex-direction: row;
  245. margin: 0px 0px 0px 0px!important;
  246. padding: 0px 0px 0px 0px;
  247. letter-spacing: 0px;//間距
  248. text-shadow: -0.5px 0.5px #000;
  249. font-size: name_size;
  250. line-height: name_size;
  251. vertical-align: center;//垂直對齊:中間
  252. --yt-live-chat-sponsor-color: #71ff8c;//會員名稱顏色
  253. --yt-live-chat-secondary-text-color: #ddd; //一般名稱顏色
  254. }
  255. /*timestamp*/
  256. #timestamp.yt-live-chat-text-message-renderer {
  257. font-size: timestamp_fontsize;
  258. margin-right: 5px;
  259. vertical-align: middle;
  260. letter-spacing:0px;//間距
  261. }
  262.  
  263. /*打字區input縮緊固定*/
  264. if input_down {
  265. //input總區塊
  266. //舊版#input-panel.yt-live-chat-renderer.iron-selected {}
  267. html #panel-pages.yt-live-chat-renderer > #input-panel.yt-live-chat-renderer.iron-selected > *:first-child{
  268. padding: 0px 0px 0px 0px;
  269. margin:0px 0px 0px 0px;
  270. //min-height:3.6em;
  271. //height:2.6em!important;
  272. }
  273. //input打字輸入區
  274. //yt-live-chat-message-input-renderer {overflow: hidden;}//隱藏卷軸元素不消除佔位
  275. #input-container.yt-live-chat-message-input-renderer{
  276. margin:0px -0px -0px 35px;
  277. padding: 0px 0px 0px 0px;
  278. height:3em;
  279. //min-height:3em;
  280. }
  281. #input.yt-live-chat-text-input-field-renderer{
  282. min-height:1.6em;
  283. line-height:1em;
  284. padding: 10px 0px 0px 0px;
  285. margin:0px -0px 0px 0px;
  286. background-color:rgba(250, 200, 200, .2);
  287. border-radius: 5px;
  288. font-size:20px!important;
  289. }
  290. //input名字
  291. #input-container > yt-live-chat-author-chip {display: none;}
  292. //input貼圖框架
  293. #buttons.yt-live-chat-message-input-renderer {margin:-0px 0px -0px 0px;}//,.yt-icon-container.yt-icon
  294. //input右邊圖
  295. #message-buttons.yt-live-chat-message-input-renderer {display: none;}
  296. //input頭像
  297. #avatar.yt-live-chat-message-input-renderer {display:none;}//margin:0px 50px -0px 0px ;visibility:hidden;display:block;
  298. //input貼圖按鈕+SC按鈕
  299. #button.yt-live-chat-icon-toggle-button-renderer {
  300. margin:-0px 0px -0px -0px;
  301. background-color:rgba(120, 3, 23, .2);
  302. position: fixed;//absolute
  303. z-index:10;
  304. left:0px;
  305. bottom:0px;
  306. }
  307. #input-container.yt-live-chat-message-input-renderer yt-live-chat-text-input-field-renderer.style-scope.yt-live-chat-message-input-renderer + #emoji-picker-button {
  308. position: absolute;
  309. }
  310. button.yt-icon-button{}
  311. yt-live-chat-icon-toggle-button-renderer#emoji>#button.yt-live-chat-icon-toggle-button-renderer{}
  312. yt-live-chat-message-input-renderer[system-icons] #picker-buttons.yt-live-chat-message-input-renderer>*.yt-live-chat-message-input-renderer{
  313. margin:0px -0px 0px -0px;
  314. }
  315. //SC按鈕(YT設定打字時會隱藏)//#input-panel
  316. #picker-buttons .yt-live-chat-icon-toggle-button-renderer{
  317. margin:0px -0px 0px 0px;
  318. position: relative;
  319. z-index:10;
  320. left:0px;
  321. }
  322. //貼圖框設定
  323. yt-emoji-picker-renderer.yt-live-chat-message-input-renderer {margin:-0px -0px -0px -20px;min-height:300px!important;}//display:inline-flex;
  324. #pickers.yt-live-chat-message-input-renderer{
  325. background-color:rgba(0, 0, 0, 1);
  326. margin:0px -0px -0px 0px;
  327. position: absolute;
  328. z-index:0;
  329. left:0px;
  330. right:0px;
  331. bottom:40px;
  332. }
  333. //貼圖框內-會員貼圖放大(加會員前/後)
  334. #emoji.yt-emoji-picker-upsell-category-renderer img {height:emoji_member;width:emoji_member;padding:0px 2px;margin:0px;}//加會員前
  335. #emoji.CATEGORY_TYPE_CUSTOM.style-scope.yt-emoji-picker-category-renderer img {height:emoji_member;width:emoji_member;padding:0px 2px;margin:0px;}
  336. //貼圖框內-一般貼圖
  337. #emoji.yt-emoji-picker-category-renderer img {padding:1px emoji_normal;}
  338. //貼圖框內
  339. #categories-wrapper.style-scope.yt-emoji-picker-renderer{margin:0px -0px 0px -0px; ::-webkit-scrollbar{display: none;}}
  340. //貼圖框內-文字搜尋
  341. #search-panel.style-scope.yt-emoji-picker-renderer{display:inline-flex;height:10px;margin:-0px 0px -0px 10px!important;}
  342. //貼圖框內-分類
  343. #category-buttons.style-scope.yt-emoji-picker-renderer{margin:-20px -100px 0px 0px;}
  344. //貼圖框內-標題
  345. #title.style-scope.yt-emoji-picker-category-renderer{padding:0;margin:-10px 0px -5px 0px;opacity:0.3;background-color:rgba(216, 192, 192, .3);}
  346. }
  347.  
  348. //聊天室Y卷軸隱藏
  349. if chat_scroll {
  350. ::-webkit-scrollbar {display: none;}//#item-scroller.yt-live-chat-item-list-renderer
  351. //針對新版chromeYT框架內優先設定
  352. html {
  353. scrollbar-color: auto !important;
  354. scrollbar-width: auto !important;
  355. }
  356. }
  357.  
  358. /*name斷行*/
  359. if name_pr {
  360. yt-live-chat-text-message-renderer.yt-live-chat-item-list-renderer {
  361. //斷行聊天室格式 複數行に渡るチャットユーザー名&メッセージを真ん中に揃える、餘白を詰める
  362. & > #content {
  363. width: 100%;display: inline-flex;align-items: center;
  364. & > yt-live-chat-author-chip {
  365. align-items: center;
  366. margin: 0px -0px 0px -0px;
  367. position: relative;//相對層級100
  368. z-index:100;
  369. // 用戶名格式チャットユーザー名 - 幅を固定&小さくすることでメッセージを見やすくする
  370. & > #author-name {
  371. max-width: 4em;
  372. font-size: 15px;
  373. max-height: 1.5em;
  374. line-height: 1em;
  375. word-break: break-word;//名稱破行自動斷行break-all//keep-all//word-wrap: break-all;
  376. //align-items: baseline;//center
  377. border-top: 0.1px solid;
  378. }}}}
  379. //斷行的 profile picture
  380. #author-photo.yt-live-chat-text-message-renderer,
  381. #author-photo.yt-live-chat-text-message-renderer > img {
  382. margin: 0px;
  383. opacity:0.9;
  384. }
  385. //斷行的 badge會員徽章
  386. img.yt-live-chat-author-badge-renderer, yt-icon.yt-live-chat-author-badge-renderer {
  387. margin: -0px -0px 0px -15px ;
  388. opacity:0.4;
  389. position: relative;//相對層級-10
  390. z-index:-10;
  391. }
  392. //斷行的 顯示破框name
  393. #items yt-live-chat-text-message-renderer{contain: layout style;}
  394. }
  395.  
  396. /*name靠右*/
  397. if name_pr2 {
  398. yt-live-chat-text-message-renderer.yt-live-chat-item-list-renderer {
  399. & > #content > yt-live-chat-author-chip {
  400. max-width:10em;
  401. max-height:1em;
  402. line-height: 1em;
  403. word-break:break-all ;//名稱破行自動斷行break-all//keep-all//word-wrap: break-all;break-word;
  404. align-items: stretch ;
  405. margin: 0px -0px 0px 0px;
  406. padding:0;
  407. position: absolute;
  408. z-index:0;
  409. right:0px;//top:1em;
  410. bottom: 0em;
  411. opacity:0.8;
  412. }}
  413. }
  414.  
  415. //投票調查表隱藏
  416. if hide_survey {#contents > yt-live-chat-poll-renderer {display:none;}}
  417. //置頂意見調查#contents.yt-live-chat-banner-renderer{display:none;}
  418.  
  419. /*name+徽章隱藏*/
  420. if hide_user_name {
  421. yt-live-chat-text-message-renderer > #content > yt-live-chat-author-chip > #author-name {display: none !important;}
  422. img.yt-live-chat-author-badge-renderer, yt-icon.yt-live-chat-author-badge-renderer {display: none !important;}
  423. }
  424.  
  425. /*YT提醒+愛心動畫隱藏*/
  426. if hide_reaction {
  427. //YT剛進入LIVE在聊天室的提醒文字
  428. yt-live-chat-viewer-engagement-message-renderer.yt-live-chat-item-list-renderer {display: none;}
  429. //愛心動畫#chat > #reaction-control-panel-overlay.yt-live-chat-renderer {display: none;}
  430. #reaction-control-panel.yt-reaction-control-panel-overlay-view-model {display: none;}
  431. //YT輸入提醒框//yt-tooltip-renderer是包含所有的提醒
  432. #content.yt-tooltip-renderer,#Wrapper.tp-yt-iron-dropdown ,yt-tooltip-renderer{display: none;}
  433. }
  434. /*貼圖註解隱藏_chat貼圖-SC貼圖-會員徽章-每月會員*/
  435. if hide_tooltip {
  436. tp-yt-paper-tooltip.style-scope.yt-live-chat-text-message-renderer[role="tooltip"],
  437. tp-yt-paper-tooltip.style-scope.yt-live-chat-paid-message-renderer[role="tooltip"],
  438. tp-yt-paper-tooltip.style-scope.yt-live-chat-author-badge-renderer[role="tooltip"] ,
  439. tp-yt-paper-tooltip.style-scope.yt-live-chat-membership-item-renderer[role="tooltip"],
  440. {display: none;}
  441. }
  442.  
  443. }