JSFiddle - React, Tailwind, and code Playground

by kuonyuu

CSS

@-moz-document url-prefix("https://syosetu.com/user/top/") {
.favusernovel_info {
	width: 125px;
}
}

@-moz-document url-prefix("https://syosetu.com/user/top/"), url-prefix("https://syosetu.com/xuser/top/") {
/* センターカラム内の順番の入れ替え */
#main_top, #fav {
	display: flex !important;
	flex-direction: column !important;
}

#fav hr {
	order: 2 !important;
}

#favuserblog {
	order: 3 !important;
}

#favusernovel {
	order: 1 !important;
}


#head_koukoku,
#header,
#footer,
#container {
  margin: 0 22% 0 auto;
}

.p-up-bookmark-item__info { display: block }

}

@-moz-document domain("syosetu.com") {
.p-eplist-ex { background: transparent } 


.footer_bookmark_wrap, #novel_hyouka, #footer {
    background: transparent !important;
}

#novel_contents #impression, #recommend, #review {
    display: none;
}

.ex {
    color: #9ba9a9 !important
}

.favusernovel_info {
	width: 150px;
}

#novel_contents #novel_honbun, #novel_contents #novel_a {
	font-size: 120% !important;
}


body #novel_honbun {
	width: 100% !important;
	box-sizing: border-box;
	padding: 0 26px;
}

.favusernovel_title a {
	font-size: 115%;
}

.favusernovel_info {
    color: #adadad;
    font-size: 95%;
}

ul.category_box li.now a {
	text-decoration: underline !important;
	font-weight: 600 !important;
	color: grey !important;
}


ul.writter_menu li:not(:last-child) a {
  padding-right: 5px;
}

ul.writter_menu a {
  margin: 6px 2px 5px;
}

ul.writter_menu li.menu_h {
	padding: 5px 10px 5px;
}


}

@-moz-document url-prefix("https://ncode.syosetu.com/"), url-prefix("https://novel18.syosetu.com/") {
.l-main {
  margin: 47px 30% 10px auto !important;
}

.wrap_menu_novelview_after, .footerbookmark li.booklist_now a, .footerbookmark .booklist .login {
	background: transparent;
}

.wrap_menu_novelview_after, .wrap_menu_novelview_after li, #novel_footer {
	border-color: rgba(48, 95, 128, 0.9) !important;
}

#novel_honbun {
  counter-reset: line;
}

.p-novel__text p {
	position: relative;
	padding-left: 3px;
	line-height:...

JavaScript

// ==UserScript==
// @name        narou novel align
// @description 「小説家になろう」の閲覧をいい感じにします
// @include     https://*.syosetu.com/*
// @include     https://*.syosetu.com/*/
// @match       https://ncode.syosetu.com/*
// @match       https://novel18.syosetu.com/*
// @author      @kuonyuu
// @version     0.1
// @grant       none
// @require     https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
// ==/UserScript==

//$(document).ready(function(){
$(document).keydown(function (e) {
  // 74, 75 = j, k

  // N = 78
  // L = 76
  if (e.which == 76 || e.which == 108) {
    // L
    window.scrollTo(0, document.body.scrollHeight)
    var link = document.querySelectorAll(".subtitle")
    link[link.length - 1].lastChild.click()
    //console.log(link);
  }
  if (e.which == 75 || e.which == 107) {
    // k
    //window.location.href = document.querySelectorAll(".novel_bn > a")[0].getAttribute('href');
    document.querySelectorAll(".c-pager > a")[0].click()
  }

  if (e.which == 74 || e.which == 106) {
    // j
    document.querySelectorAll(".c-pager > a")[1].click()
  }

  if (e.which == 72 || e.which == 104) {
    // H
    // document.querySelectorAll(".novel_bn > a")[2].click();
    var re =
      /^(?:http(s)?:\/\/)?(novel18|ncode)(.syosetu.com\/)(n[0-9]{1,4}[a-z]{1,2})(\/)/
    var result = re.exec(window.location)
    window.location = result[0]
    //console.log(result);
  }

  if (e.which == 188) {
    // <
    var viewportHeight = window.innerHeight - 80
    var current = document.documentElement.scrollTop || document.body.scrollTop
    //console.log(current);
    window.scrollTo(0, current + viewportHeight)
  }
  if (e.which == 190) {
    // >
    var viewportHeight = window.innerHeight - 80
    var current = document.documentElement.scrollTop || document.body.scrollTop
    //console.log(current);
    window.scrollTo(0, current - viewportHeight)
  }

  // up 38, down 40

  // Author Page
  if (e.which == 65 || e.which == 97) {
    // A
   ...