NarrowHome_Custom

小説家になろうのホームを改造する

  1. // ==UserScript==
  2. // @name NarrowHome_Custom
  3. // @namespace phodra
  4. // @description 小説家になろうのホームを改造する
  5. // @version 1.5
  6. // @grant none
  7. // @include http://syosetu.com/user/top/
  8. // @include https://syosetu.com/user/top/
  9. // ==/UserScript==
  10.  
  11. (function (){
  12. $("#user_info, .kokuti_box").hide();
  13. $strong = $("<strong class='news'>");
  14. $strong.css(
  15. {
  16. 'font-weight': 'bolder',
  17. 'color': 'red'
  18. }
  19. );
  20. // 新着メッセージをメッセージボックスに統合
  21. var $msgInfo = $(".message_info:first");
  22. if( $msgInfo.size() ){
  23. // メッセージボックスに新着数表示
  24. var num = $msgInfo.text().match(/\d+/);
  25.  
  26. var $menu_msg = $(".menu_message>a");
  27. // 名前が長いのでちょっと短くする
  28. $menu_msg.text("メッセージ");
  29. $menu_msg.append( $strong.text("(" + num + ")") );
  30. // 元の新着通知を非表示
  31. $msgInfo.hide();
  32. }
  33.  
  34. // 感想が書かれました
  35. var $news = $("div.news_box");
  36. if( $news.size() ){
  37. $("div.normal_box:eq(1) li:first>a").append(
  38. $strong.text(" !")
  39. );
  40. $news.hide();
  41. }
  42.  
  43. // センターカラムの順番を入れ替え
  44. var $main = $("#main_top");
  45. var $favuserblog = $("#favuserblog");
  46. var $writermenu = $("#writter_menu_top");
  47. var $userbox = $(".usertop_box");
  48. $main.append($favuserblog);
  49. $main.append($writermenu);
  50. $main.append($userbox);
  51. $main.children().css(
  52. {
  53. 'margin-top': '5px',
  54. 'margin-bottom': '5px'
  55. }
  56. );
  57. $main.children(":first").css( 'margin-top', 0 );
  58.  
  59. // お知らせをコンパクト化
  60. $("#user_info").hide();
  61. var $headlog = $("#head_log");
  62. $headlog.css(
  63. {
  64. 'width': 'auto',
  65. 'float': 'right',
  66. }
  67. );
  68. var $notice = $("<div id='mini_info'>");
  69. $notice.css(
  70. {
  71. 'overflow': 'hidden',
  72. 'margin': "8px 3px 0 2px"
  73. }
  74. );
  75. $headlog.after($notice);
  76. var noticeWidth = $notice.width();
  77. var shrink = "●";
  78. var $shrink = $("<a>");
  79. $shrink.text( shrink );
  80. $notice.append($shrink);
  81. var shrinkWidth = $shrink.width();
  82. $shrink.remove();
  83. var $infos = $("#official li>a");
  84. var infoCount = $infos.size();
  85. var $ci = []; // Compact Info
  86. for( var i=0; i<infoCount; i++ )
  87. {
  88. $ci[i] = $infos.eq(i).clone();
  89. var txt = $ci[i].text();
  90. $ci[i].text( shrink + txt );
  91. $ci[i].attr( 'title', txt );
  92. $ci[i].css(
  93. {
  94. 'display': 'inline-block',
  95. 'width': shrinkWidth,
  96. 'overflow': 'hidden',
  97. 'text-overflow': 'clip',
  98. 'white-space': 'nowrap'
  99. }
  100. );
  101. $notice.append($ci[i]);
  102. }
  103.  
  104. const DURATION = 1000;
  105. const WAIT = 5000;
  106. var ciOpen = function(i, dur){
  107. if( i >= $ci.length ) return;
  108. console.log(noticeWidth);
  109. $ci[i].css(
  110. {
  111. 'display': 'inline',
  112. 'overflow': 'hidden',
  113. }
  114. );
  115. $ci[i].animate(
  116. { 'width': noticeWidth - shrinkWidth*infoCount },
  117. {
  118. 'duration': dur,
  119. 'easing': 'linear',
  120. 'complete': function(){
  121. ciWait(i);
  122. }
  123. }
  124. );
  125. };
  126. var ciWait = function(i){
  127. setTimeout(
  128. function()
  129. {
  130. ciClose(i);
  131. ciOpen(i+1, DURATION);
  132. }, WAIT
  133. );
  134. };
  135. var ciClose = function(i){
  136. $ci[i].animate(
  137. { 'width': shrinkWidth },
  138. {
  139. 'duration': DURATION,
  140. 'easing': 'linear',
  141. }
  142. );
  143. };
  144.  
  145. ciOpen(0, 0);
  146. })();

QingJ © 2025

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