Wikipedia_prettfy

prettfy wikipedia move toc to side,etc make it easier to read

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        Wikipedia_prettfy
// @description prettfy wikipedia move toc to side,etc make it easier to read
// @namespace   https://github.com/willowj/readable-wikipedia
// @include     http*://*.wikipedia.org/**
// @include     http*://*.wikinews.org/**
// @include     http*://*.wikisource.org/**
// @version     1.2
// @grant       Adam willow
// modified from https://greasyfork.org/zh-CN/scripts/35198-readable-wikipedia/code v1
// ==/UserScript==

function GM_addStyle_from_string(str) {
   var node = document.createElement('style');
   node.innerHTML = str;
   document.body.appendChild(node);
}

//var cssSrc = GM_getResourceText ("readableWikipediaCss");

var cssSrc = `
/* Base Wikipedia Enhancement */

#firstHeading {
    font-weight: bolder !important;
    padding: 0.6em !important;
    font-size: xx-large !important;
  }


body{
    background: none !important;
}

a:visited {
  color: #948af5 !important;
}

a {
  color: #063b92;
}
.toc>ul a {
    color: black;
}
.reference {
/*  display: none !important;*/
}

.internal {
  /*display: none !important;*/
}




#mw-head-base {
  background-image: none !important;
}


.infobox th {
  background-color: #e6e0c8 !important;
  /*font-weight: normal !imporant;*/
}

/*.infobox th a {
  color: white !important;
  font-weight: normal !imporant;
}*/

table.infobox {
    border-spacing: 3px;
    text-align: left;
    font-size: small;
    line-height: 1.5em;
    border-collapse: collapse;

}
.wikitable{
    margin: auto !important;
}

#simpleSearch{
   border :0px !important;
}

/*vectorTabs*/
div.vectorTabs span{
   display: block !important;
   background-image: unset !important;
}
div.vectorTabs{
   background-image: unset !important;
}
div#mw-head div.vectorMenu h3{
   background-image: unset !important;
}
div.vectorTabs ul li{
   background-image: unset !important;
}
div.vectorTabs ul{
   background-image: unset !important;
}
/*vectorTabs*/

#siteNotice {
    text-align: right;
    font-size: 6px;
    margin-left: 50%;
    position: absolute;

}

h2 {
  margin-top: 2em !important;
}

dl>dd{
    border-bottom-style: groove;
}

#mw-page-base {
  height: auto !important;
}

#siteSub {
  display: none !important;
}

.metadata {
  display: none !important;
}

.catlinks {
  /*display: none !important;*/
}

.Template-Fact {
  display: none !important;
}

div#content a.external {
  background: none !important;
}

.topicon {
  display: none !important;
  right: 9999px !important;
}

.icone_de_titre {
  display: none !important;
}

#coordinates {
  display: none !important;
}


#left-navigation {
    margin-left: 20%;
    margin-top: 0px;
    font-size: 8px !important;
}

#right-navigation {
  margin-top: 2em !important;
}

#p-views {
  display: none !important;
}

#mw-panel {
    font-size: inherit;
    position: unset;
    top: 0;
    width: 10em;
    left: 0;
}


#mw-body {
  margin-left: 0px !important;
}

.mw-body-content h2 {
    /* font-size: 1.5em; */
    margin-top: 1em;
    border-left-style: inset;
    border-left-width: 0.6em;
    border-left-color: lightskyblue;
        padding-left: 0.3em;
}

.mw-body-content p,ul {
    line-height: inherit;
    margin: 0.5em 0;
    padding-left: 4% !important;
}

.mw-parser-output li {
    padding-bottom: 0.6em !important;
}



p {
  font-size: 1em !important;
  margin-top: 1em !important;
}

.mw-parser-output>p {
    letter-spacing: 1px;
    text-align: justify;
}
.mw-parser-output>dl{
    padding-left: 3em;
}
.mw-parser-output>ol{
    padding-left: 5em;
}
.mw-parser-output>h3~ol{
    padding-left: 1em;
}
h2~h3 {
    padding-left: 0.5em;
}
h3~h4 {
    padding-left: 1em;
}
h4~h5 {
    padding-left: 2em;
}


#protected-icon {
  display: none !important;
}

.dablink {
  display: none !important;
}

#mw-articlefeedback {
  display: none !important;
}

.editsection {
  display: none !important;
}

#footer {
  text-align: center !important;
  border-top: 1px solid grey !important;
}

#footer-places {
  display: none !important;
}

#footer img {
  display: none !important;
}

.tleft {
  margin: 1.5em 1.4em 1.3em 0 !important;
}

/* I'm really not sure about this change,
 * Eventually I'd like the TOC accessible
 * via a side menu, for now this is experimental
 * and might change
*/

div#toc {
    position: fixed;
    margin-left: 0px;
    font-size: 13px;
    top: 0%;
    overflow: auto;
    height: 100%;
    display: inline-block;
    z-index: 1;
    background: beige ;
    border: 0px;
    font-size :0.9em;
}
.toc ul ul {
    margin: 0 0 0 1em;
}
div#toc>ul li:focus{
    border-right-style: solid;
    border-right-color: wheat;
    font-weight: bolder;
}


.toc>ul{
    margin-bottom: 2em;
    margin-left:5%;
}

.tocnumber, .toctext {
    display: table-cell;
    text-decoration: blink;
}

/* Reading Enhacements */

* {
  line-height: 1.7em !important;
}


/* File Enhancements */


/*#file img {
  width: 100% !important;
  height: auto !important;
}*/

.fullMedia, .sharedUploadNotice, #mw-imagepage-section-linkstoimage, #filelinks, #mw-imagepage-section-filehistory, #filehistory, #mw-imagepage-section-globalusage, #globalusage, #mw-imagepage-content, #template-picture-of-the-day, #metadata, .mw-imagepage-section-metadata, .mw-filepage-resolutioninfo {
  display: none !important;
}

/* Scripted in styles */
#logo {
  margin: .5em auto auto 1em;
}

.visible-link {
  color: #2B77BD !important;
}



#enhancement_credit {
  font-size: 12px !important;
}

.mw-editsection {
  display: none !important;
}

.mobile {
  display: none !important;
}

/* Responsive breakpoints */
@media screen and (min-width: 1200px) {

    div#content{
        margin-left: 15% !important;
        width: 70% !important;
        padding-left: 5em !important;
        padding-right: 7em !important;

    }
    .toc{
        width: 13%;
    }
    #p-personal {
        display: inherit !important;
        padding-right: 7em !important;
    }
    #right-navigation{
        padding-right: 8% !important;
            font-size: 8px !important;
    }
    #siteNotice{
        padding-right: 10em !important;
    }
    .infobox {
        margin-left: 2em !important;
        float: right !important;
        min-width: auto !important;
        clear: unset !important;
    }
}
@media screen and (max-width: 1200px) {
  div#content {
    width: 72% !important;
    margin-left: 20%;
  }

  div#toc{
     width: 15%;
  }
  .thumb, .tright, .left {
    display: block !important;
 /*   float: none !important;*/
  }
  #mw-articlefeedbackv5 {
    display: none !important;
 }
 .infobox {
        margin-left: 2em !important;
        float: right !important;
        min-width: auto !important;
        clear: unset !important;
    }

}


@media screen and (max-width: 650px) {
  div#content {
    margin-left: 2%;
    width: 90% !important;
    padding-top: 1em !important
    background: none !important;
    padding: 4.25em 1.5em 1.5em 1.5em !important;
    border: none !important;
  }
  table.infobox{
    width:90% !important;
  }
  .toc{
    width: 90% !important;
    position : relative !important;
    height : auto !important;
    margin-left: 5% !important;
    top : 5em !important
  }
  #mw-panel{
    display :none !important;

  }

  .desktop {
    display: none !important;
  }

  .mobile {
    display: block !important;
  }

  .infobox {
    display: block !important;
    float: none !important;
    margin: 1em auto !important;
   }
}

/* MY CODE */


div#content {
   padding-top: 1em !important;
   margin-top: 3em;
   border: none;
}

.toc::-webkit-scrollbar{
    width: 0px;
    height: 8px;
}

/* 设置滚动条的滑轨 */
.toc::-webkit-scrollbar-track {
      /*background-color: #ddd;*/
}

/* 滑块 */
/*.toc::-webkit-scrollbar-thumb {
    background-color: #54595d;
    border-radius: 4px;
}*/

 /* 滑轨两头的监听按钮 */
.toc::-webkit-scrollbar-button {
    background-color: #888;
    display: none;
`;

GM_addStyle_from_string(cssSrc);
//document.getElementById("References").parentNode.nextSibling.nextSibling.style.display = "none";
var toc = document.querySelector('div#toc');
if (toc == null) {
   var toc = document.createElement('div');
   toc.setAttribute('id', 'toc');
   toc.setAttribute('class', 'toc');
}
document.body.insertBefore(toc, document.body.firstElementChild);

var pg = document.querySelector('#mw-panel');
document.querySelector('#toc').appendChild(pg);


/*toc toggle*/
if (!document.querySelector("#toc .toctoggle")) {
   var tog = document.createElement('span');
   document.querySelector("#toc .toctitle").appendChild(tog);
   if (document.URL.indexOf('//en.wiki') >= 0) {
      var hide = 'hide';
   } else {
      var hide = '隐藏';
   }
   tog.outerHTML = '<span class="toctoggle">&nbsp;[<a role="button" tabindex="0" class="togglelink">' + hide + '</a>]&nbsp;</span>';
}

/*toc show toogle*/
var togglelink = document.querySelector("#toc .toctitle .togglelink");
var ul = document.querySelector("#toc>ul");
togglelink.addEventListener("click", function() {
   if (ul.style.display === 'none') {
      ul.style.display = 'block';
   } else {
      ul.style.display = 'none';
   }

   var tog_ = {
      "hide": "show",
      "show": "hide",
      "隐藏": "显示",
      "显示": '隐藏'
   };
   togglelink.text = tog_[togglelink.text];
});

if (document.body.offsetWidth <= 650) {
   togglelink.click();
}

/*var theurl = document.URL;
var res = theurl.replace(/zh.wikipedia.org\/wiki\//gi, "zh.wikipedia.org/zh-cn/");
if (res != theurl){
    window.location.href = (res);
}*/


/*info box right*/

/*var info_box = document.createElement("div");
info_box.id = 'info_box';
document.body.insertBefore(info_box, document.querySelector('#content'));

document.querySelectorAll('.infobox').forEach(function (item) {
    info_box.appendChild(item);
});
*/


/*a link to zn_cn */
function link_to_zh_cn() {
   if (document.URL.indexOf("zh.wikipedia.org") >= 0) {
      var nodes = document.querySelectorAll("a[href*='/wiki/']");
      for (var i = 0; i < nodes.length; i++) {
         var url = decodeURIComponent(nodes[i].href.replace(/\/wiki\//gi, "/zh-hans/"));
         nodes[i].href = url;
      }
      console.log("link to zn_cn ");
   }
}
link_to_zh_cn();

/*add space betwen cn and eng
var g1 = /(\w)([\u4e00-\u9fa5])/g;
var g2 = /([\u4e00-\u9fa5])(\w)/g;
document.querySelectorAll('p').forEach(function (item) {
    if (item.innerText) {
    item.innerText=item.innerText.replace(g1,"$1 $2").replace(g2,"$1 $2");
    }
});*/



/*menu on scroll*/
window.onscroll = function() {
   var t = document.documentElement.scrollTop || document.querySelector('#content').scrollTop; //取当前高度
   //取各个锚点的位置
   var menu = document.querySelectorAll('div#toc>ul a');
   var flag = -1;
   for (var i = 0; i < menu.length; i++) {
      var ssid = menu[i].href.split('#');
      ssid = ssid[ssid.length - 1];

      if (document.getElementById(ssid).offsetTop + 200 >= t) {
         /*menu[i].closest('li').focus();*/
         flag = i;
         break;
      }
   }


   for (var ik = 0; ik < menu.length; ik++) {
      if (flag == ik) { //找到当前浏览器固定达到的位置所对应的标题
         menu[ik].style.color = "black"; //旗下的a标签里面的内容为红色
         menu[ik].style.fontWeight = "bolder"; //旗下的a标签里面的内容为红色
         menu[ik].focus();
         menu[ik].closest('li').style.borderRightStyle = "solid";
         menu[ik].closest('li').style.borderRightColor = "wheat";
      } else { //其余标题
         //menu[ik].style.color="blue";//旗下的a标签里面的内容为蓝色
         menu[ik].style.color = "unset";
         menu[ik].style.fontWeight = "unset"; //旗下的a标签里面的内容为红色
         menu[ik].closest('li').style.borderRightStyle = "unset";
         menu[ik].closest('li').style.borderRightColor = "unset";
      }
   }
   /*    if(flag==-1){//如果没有任何一个标题碰到浏览器顶部,那么就认为是现在悬停在第一个标题
           menu[0].style.color="red";//旗下的a标签里面的内容为红色
       }*/

};