寫在前面:有時候可能改了一些代碼之後並無及時更新到此處,所以若是你發現個人實際博客園效果與代碼有出入,你能夠先試着在源代碼裏找找看,或者直接私信我獲取最新代碼。javascript
論如何改變本身的博客園,變得好很差看我就不敢保證了。。。php
我假設你是一個徹底不懂網頁相關的code小白。css
我本身是徹底禁用掉了模板CSS(後期本身看狀況禁不由吧)。html
而後會發現,blog乾淨得很,一點樣式都沒有。java
對於咱們這種小白來講,從頭至尾本身寫一份完整的CSS代碼是不現實的,這時候咱們須要一份代碼模板,拿模板來改就比較容易了。node
網上會有一些人把本身的CSS代碼公開出來,固然實際上你瀏覽別人的blog的時候,(對於Chrome瀏覽器)輕按F12,你能夠在style那個小欄裏找到該網頁的CSS代碼連接(其餘瀏覽器我就不知道了),而後就能夠拿來試試水了。c++
窩的CSS代碼:git
#site_nav_under { display: none; } .c_ad_block, .ad_text_commentbox { display: none; margin: 0; padding: 0; } #ad_under_google { height: 0; overflow: hidden; } #ad_under_google a { display: none; } @charset "utf-8"; /* CSS Document */ /************************************************** 第一部分:全部的模板都使用的公共樣式。公告樣式是爲了更好的向前和向後兼容。 若是不符合你皮膚的要求,你能夠在後面經過更好的優先級覆蓋着這些樣式,可是 你不能刪除這些樣式。 **************************************************/ #EntryTag { margin-top: 20px; font-size: 9pt; color: gray; } .topicListFooter { text-align: right; margin-right: 10px; margin-top: 10px; } #divRefreshComments{ text-align: right; margin-right: 10px; margin-bottom: 5px; font-size: 9pt; } /*****第一部分結束*******************************/ /************************************************** 第二部:公共樣式(全局樣式)。公共會對全部頁面的標籤都起做用。這個部分你 能夠隨意的更改,並不會牽扯到其餘的皮膚模板。可是每次更改都要注意你的皮膚 模板全部頁面的變化。由於它們是全局的。 **************************************************/ * { margin: 0; padding: 0; } html { height: 100%; } body { background:url() no-repeat fixed; background-size:cover; color:#000; font-family: "微軟雅黑","verdana","ms song","宋體","Arial", "Helvetica", "sans-serif"; font-size: 15px; min-height: 101%; width:75em; margin-left:auto; margin-right:auto; z-index:0; } #Uleft, #Uright,#Dleft, #Dright{ /* Firefox 4 */ -moz-transition-property:top; -moz-transition-duration:1s; /* Safari and Chrome */ -webkit-transition-property:top; -webkit-transition-duration:1s; /* Opera */ -o-transition-property:top; -o-transition-duration:1s; position: fixed; width: 80px; height: 80px; line-height: 500px; text-align: center; z-index:1; } #Uleft{ width: 80px; height: 80px; top:-60px; left: 50px; } #Uright{ width: 110px; height: 110px; top: -75px; right: 50px; } #Dleft{ bottom:10px; left: 10px; width: 200px; height: 200px; } #Dright{ bottom:-50px; right: 0px; width: 200px; height: 250px; } #MagicArray{ /* Firefox 4 */ -moz-transition-property:width height bottom right; -moz-transition-duration:0.5s; /* Safari and Chrome */ -webkit-transition-property:width height bottom right; -webkit-transition-duration:0.5s; /* Opera */ -o-transition-property:width height bottom right; -o-transition-duration:0.5s; position: fixed; bottom:107px; right: 108px; width: 0px; height: 0px; text-align: center; z-index:2; } #Tab1{ -moz-transition-property:fontSize width height; -moz-transition-delay:0.4s; -webkit-transition-property:fontSize width height; -webkit-transition-delay:0.4s; -o-transition-property:fontSize width height; -o-transition-delay:0.4s; color:#8B0A50; position: fixed; font-size: 0px; text-align: center; z-index:3; font-weight:500; text-shadow: -1px 0 #7A67EE, 0 1px #7A67EE, 1px 0 #7A67EE, 0 -1px #7A67EE; } ::selection{background:#698B22;color:#FFF;} ::-moz-selection{background#698B22;color:#FFF;} body{cursor:url('//fq.wc.lt//up/1499563659.cur'),auto;} A{cursor:url('//fq.wc.lt//up/1499563659.cur'),auto;} input{cursor:url('//fq.wc.lt//up/1499563659.cur'),auto;} wait{cursor:url('//fq.wc.lt//up/1499563659.cur'),auto;} input{outline:medium;} /* //fq.wc.lt//up/1499566113.cur //fq.wc.lt//up/1499565578.cur //fq.wc.lt//up/1499564884.cur */ /*鼠標*/ table { border-collapse: collapse; border-spacing: 0; } fieldset, img { border: 0; } ul { word-break: break-all; } li { list-style: none; } h1, h2, h3, h4, h5, h6 { font-size: 100%; font-weight: normal; } a:link { color:black; text-decoration:none; } a:visited { color:#111; text-decoration: none; } a:hover { color: #7B68EE; -moz-border-radius: 9px; -khtml-border-radius: 9px; -webkit-border-radius: 9px; border-radius: 9px; transition: all 0.4s linear 0s; } a:active { color: black; text-decoration: none; } .clear { clear: both; } /*****第二部分結束*******************************/ /************************************************** 第三部分:各個頁面元素的樣式。你能夠根據須要隨意的更改,並不會牽扯到其餘 的皮膚模板。這個部分是最能展示你想象力的部分。其中頭部和側邊欄部分是此皮 膚公共的部分。而每一個頁面特有的部分會有相應的註釋和說明。 **************************************************/ /*****home和頭部開始**************************/ #home { margin: 0 auto; width:95%; min-width: 60em; } #header { padding-bottom: 0.4em; margin-top: 0.8em; } #blogTitle { height: 7em; clear: both; border:1px solid #000; -moz-border-radius: 11px; -khtml-border-radius: 11px; -webkit-border-radius: 11px; border-radius: 12px; -webkit-box-shadow:5px 2px 6px #000;-moz-box-shadow:5px 2px 6px #000;padding:4px 10px; text-shadow:1px 1px 1px #e9f3e8 } #blogTitle h1 { font-size: 300%; font-weight: bold; margin-left: 1em; margin-top: 0.4em; width: 50%; float: left; } #blogTitle h2 { margin-left: 6em; line-height: 1.5em; width: 50%; float: left; text-shadow:-1px 0 #ddd, 0 1px #ddd, 1px 0 #ddd, 0 -1px #ddd; } #blogLogo { float: right; } #navigator { /* background-color: black; height: 30px; clear: both;*/ margin-top:0.3em; height: 2em; clear:both; border:1px solid #999; -moz-border-radius: 11px; -khtml-border-radius: 11px; -webkit-border-radius: 11px; border-radius: 11px; -webkit-box-shadow:5px 2px 6px #000;-moz-box-shadow:5px 2px 6px #000;padding:4px 10px; background:#FFF; opacity: 0.60; } #navList { min-height: 1.5em; float: left; } #navList li { float: left; } #navList a { display: block; padding-left:0.5em; padding-right:0.5em; line-height:2em; float: left; text-align: center; border-right: 1px solid #999; } #navList a:link, #navList a:visited, #navList a:active { /* color: #ccc;*/ } #navList a:hover { color: #7B68EE; padding-left:0.8em; padding-right:0.8em; } .blogStats { float: right; font-size:0.8em; color: #000; margin-top: 0.9em; margin-right: 0.2em; text-align: right; } /*****home和頭部結束**************************/ /*****主頁文章列表開始**************************/ #main{ width: 100%; min-width: 70em; text-align: left; background:#FFF5EE; opacity: 0.90; } #mainContent .forFlow{ margin-left: 13em; float: none; width: auto; } #mainContent { min-height: 18em; padding: 0px 0px 10px 0; *padding-top:10px; -o-text-overflow: ellipsis; text-overflow: ellipsis; overflow: hidden; word-break: break-all; float: right; margin-left: -26em; width: 100% } .day { min-height: 10px; _height: 10px; margin-bottom: 20px; padding-bottom: 5px; } .dayTitle { width: 100%; color: #666; font-weight: bold; line-height: 1.5em; font-size: 90%; margin-top: 3px; margin-bottom: 10px; clear:both; border-bottom: 2px solid #e9f3e8; text-align:center; } .postTitle { font-size: 150%; font-weight: bold; /*border-bottom: 1px solid #9DAAF4;*/ float: right; line-height: 1.5em; width: 100%; clear:both; text-shadow:-3px 3px 3px #999 } .postTitle a:link, .postTitle a:visited, .postTitle a:active { color: #000; transition: all 0.4s linear 0s; } .postTitle a:hover { margin-left: 10px; color: #7B68EE; text-decoration: none; text-shadow:-13px 3px 3px #999 } .postCon { float: right; line-height: 1.5em; width: 100%; clear:both; padding: 10px 0; } .postDesc { float: right; width: 100%; clear:both; text-align: right; padding-right: 5px; color: #666; margin-top: 5px; } .postDesc a:link, .postDesc a:visited, .postDesc a:active { color: #666; padding-right: 10px; } .postDesc a:hover { color: #7B68EE; text-decoration: none; } .postSeparator { clear: both; height: 1px; border-top: 1px dotted #666; width: 100%; clear:both; float: right; margin: 0 auto 15px auto; } /*.diggit{ text-align: center; width:50px; height:40px; background:url(//fq.wc.lt//up/1503755899.png); background-size:100% 100%; }*/ .buryit{ font-size:0px; width:0; height:0; } .burynum{ font-size:0px; width:0; height:0; } /*****主頁文章列表結束**************************/ /*****側邊欄開始********************************/ #sideBar { width: 14em; min-height: 14em; padding: 0px 0px 0px 5px; float: left; -o-text-overflow: ellipsis; text-overflow: ellipsis; overflow: hidden; word-break: break-all; font-size:0.7em; opacity:0.85; } .counter{ } .notice{ font-size:xx-small; } .btn_my_zzk{ display: inline-block; font-size: 24px; cursor: pointer; text-align: center; text-decoration: none; outline: none; color: #fff; background-color: #a55b97; border: none; border-radius: 15px; box-shadow: 0 4px #999; } .newsItem .catListTitle { display: none; } .newsItem { padding: 15px 0 5px 0px; font-weight:bold; font-size:14px; margin-bottom: 8px; } /**日曆控件樣式開始**/ #calendar { width: 14em; } #calendar .Cal { width: 100%; line-height: 1.5em; } .Cal {/**日曆容器table**/ border: none; color: #111; } #calendar table a:link, #calendar table a:visited, #calendar table a:active { font-weight: bold; } #calendar table a:hover { color: #7B68EE; text-decoration: none; background-color: #7B68EE; } .CalTodayDay{/**今天日期樣式**/ color: #EE82EE; } #calendar .CalNextPrev a:link,#calendar .CalNextPrev a:visited, #calendar .CalNextPrev a:active {/**上個月、下個月箭頭樣式**/ font-weight: bold; background-color: #7B68EE; } .CalDayHeader{ border-bottom:1px solid #ccc; } .CalTitle{/**日曆年月頭部樣式**/ width:100%; background:#FFF; color:black; border-bottom:1px solid #666; } /**日曆控件樣式結束**/ .catListTitle { font-weight: bolder; font-family:STCaiyun; color: #B03060; line-height: 2em; font-size: 150%; margin-top: 50px; margin-bottom: 10px; border-bottom: 1px solid #e9f3e8; text-align: center; } .catListComment { line-height: 1.5em; } .divRecentComment { color: #666; margin-bottom:1em; } .c_b_p_link_desc{ color: #666; font-size: 30%; margin-bottom:1.5em; } #sideBarMain ul { line-height: 1.5em; } .catListEssay{ font-weight: bolder; } .catListTag{ font-weight: bolder; } .catList{ font-weight: bolder; } .catListFeedback{ font-weight: bolder; } .catListView{ font-weight: bolder; } .recent_comment_title{ font-weight: bolder; } .recent_comment_body{ font-size: 30%; } .recent_comment_author{ color:#666; font-size: 30%; } /*****側邊欄結束********************************/ /****查看文章頁面開始*************************/ #topics { width: 100%; min-height: 18em; padding: 0px 0px 10px 0; float: left; -o-text-overflow: ellipsis; text-overflow: ellipsis; overflow: hidden; word-break: break-all; } #topics .postTitle { font-size: 200%; font-weight: bold; border-bottom: 1px solid #999; float: left; line-height: 1.5em; width: 100%; text-align: center; } .postBody { padding: 5px 2px 5px 5px; line-height: 1.5em; color: #000; border-bottom: 1px solid #8686FF; } #EntryTag { color: #000; } #EntryTag a { margin-left: 5px; } #EntryTag a:link, #EntryTag a:visited, #EntryTag a:active { color: #000; } #EntryTag a:hover { color: #7B68EE; } #topics .postDesc { float: right; width: 100%; font-size:0.9em; text-align: right; padding-right: 5px; color: #000; margin-top: 5px; } .feedback_area_title { font-weight: bold; margin-top: 20px; border-bottom: 1px solid #8686FF; margin-bottom: 10px; padding-left: 8px; } .louzhu { background:transparent url('/images/icoLouZhu.gif') no-repeat scroll right top; padding-right:16px; } .layer{ font-family:STFangsong; font-size:15px; padding-left: 8px; } .feedbackListSubtitle { margin-left: 10px; color: #666; font-size:0.9em; } .feedbackListSubtitle a:link, .feedbackListSubtitle a:visited, .feedbackListSubtitle a:active { font-weight:bold; color: #666; font-weight: normal; } .feedbackListSubtitle a:hover { color: #7B68EE; text-decoration: none; } .feedbackManage { width: 160px; text-align: right; float: right; } .feedbackCon { font-weight:bold; border-bottom: 1px solid #ccc; padding: 15px 18px 20px 50px; min-height: 35px; _height: 35px; margin-bottom: 1em; line-height: 1.5em; width:80%; } #divRefreshComments { text-align: right; margin-bottom: 10px; } .commenttb { width: 320px; } .cnblogs_code{ } .comment_actions{ margin-right:30px; font-size:16px; font-family:STFangsong; } .comment_digg{ font-weight:bold; margin-right:10px; font-size:15px; font-family:STXinwei; } .comment_bury{ font-weight:bold; margin-right:10px; font-size:15px; font-family:STXinwei; } /****查看文章頁面結束************************ /****列表頁面開始******************************/ .entrylistTitle,.PostListTitle,.thumbTitle{/**幾個分類列表的標題樣式**/ font-size: 110%; font-weight: bold; border-bottom: 1px solid #8686FF; text-align: right; padding-bottom: 3px; padding-right: 10px; } .entrylistDescription { color: #666; text-align: right; padding-top: 5px; padding-bottom: 5px; padding-right: 10px; margin-bottom: 10px; } .entrylistItem { min-height: 20px; _height: 20px; margin-bottom: 30px; padding-bottom: 5px; width: 100%; } .entrylistPosttitle { font-size: 110%; font-weight: bold; border-bottom: 1px solid #666; line-height: 1.5em; width: 100%; padding-left: 5px; } .entrylistPosttitle a:hover { text-decoration: none; } .entrylistPostSummary { margin-top: 5px; padding-left: 5px; margin-bottom: 5px; } .entrylistItemPostDesc { padding-left: 50px; text-align: right; color: #666; } .entrylistItemPostDesc a:link, .entrylistItemPostDesc a:visited, .entrylistItemPostDesc a:active { color: #666; } .entrylistItemPostDesc a:hover { color: #7B68EE; } .entrylist .postSeparator { clear: both; width: 100%; font-size: 0; line-height: 0; margin: 0; padding: 0; height: 0; border: none; } .pager { text-align: right; margin-right: 10px; } .PostList { border-bottom: 1px solid #ccc; clear: both; min-height: 1.5em; _height: 1.5em; padding-top: 10px; padding-left: 5px; padding-right: 5px; margin-bottom: 5px; } .postTitl2 { float: left; font-size:0.9em; color: #666; } .postDesc2 { color: #666; float: right; margin-right: ; font-size:0.9em; } .postText2 { clear: both; } .pfl_feedback_area_title { text-align: right; line-height: 1.5em; font-weight: bold; border-bottom: 1px solid #666; margin-bottom: 10px; } .pfl_feedbackItem { border-bottom: 1px solid black; margin-bottom: 20px; } .pfl_feedbacksubtitle { width: 100%; border-bottom: 1px dotted #666; height: 1.5em; } .pfl_feedbackname { float: left; } .pfl_feedbackManage { float: right; } .pfl_feedbackCon { color: black; padding-top: 5px; padding-bottom: 5px; } .pfl_feedbackAnswer { color: #F40; text-indent: 2em; } .tdSentMessage { text-align: right; } .errorMessage { width: 300px; float: left; } /****列表頁面結束******************************/*/ /****相冊頁面開始******************************/ .divPhoto { border: 1px solid #ccc; padding: 2px; margin-right: 10px; } .thumbDescription { color: #666; text-align: right; padding-top: 5px; padding-bottom: 5px; padding-right: 10px; margin-bottom: 10px; } /****相冊頁面結束******************************/ /*****留言頁面開始*****************************/ #footer { text-align: center; min-height: 15px; _height: 15px; border-top: 1px solid black; margin-top: 10px; padding-top: 10px; margin-bottom: 10px; } /*留言查看頁面的我的信息*/ .personInfo { margin-bottom: 20px; } /*留言分頁區域*/ .pages { text-align: right; } /*****留言頁面結束*****************************/ /*****第三部分結束*******************************/ /************************************************** 第四部分:文章內容經常使用標籤格式。這個部分是設置做者寫做內容的部分。例如: 若是做者的文章用有p標籤,則可經過這個對這些文章中的p標籤進行設置。前面 的".postBody"明確的指出了這裏樣式的做用範圍。僅僅適用於文章主體部分。 建議這個不要設置過於詳細的細節。由於,一些樣式,一篇文章比較適合的話, 並不能保證全部的文章都適合。 **************************************************/ /*文章內部經常使用標籤格式*/ .postBody { line-height: 1.5em; } .postBody p,.postCon p{ text-indent: 2em; margin: 0 auto 1em auto; } .postBody h2{ font-size: 150%; margin: 15px auto 2px auto; font-weight:bold; } .postBody h3 { font-size: 120%; margin: 15px auto 2px auto; font-weight:bold; } .postBody h4{ font-size:110%; margin:15px auto 2px auto; font-weight:bold; color:#333; } .postBody h5{ font-size:100%; margin:15px auto 2px auto; font-weight:bold; color:#333; } .postBody a:link,.postBody a:visited,.postBody a:active{ text-decoration:none; } .postCon a:link,.postCon a:visited,.postCon a:active{ text-decoration:none; } .postBody ul,.postCon ul{ margin-left:2em; } .postBody li,.postCon li{ list-style-type:disc; margin-bottom:1em; } .postBody blockquote{ background:url('/images/comment.gif') no-repeat 25px 0px; padding:10px 60px 5px 60px; min-height:35px; _height:35px; line-height:1.6em; color:#333; } /*****第四部分結束*******************************/
當初我也是拿別人代碼當模板來改的,不過如今可能有點面目全非了。github
那麼如今,咱們能夠把這份別人的模板改爲本身的風格,基本上CSS代碼裏參數的命名都是按元素的英文命名的,挺好認的,或者你能夠把這個參數改改,看看哪裏發生了變化就知道這個參數在說啥了。當你想定向尋找一個元素在CSS中各項參數的位置時,你能夠尋找一下這個元素在html代碼裏面的位置(在Chrome瀏覽器中能夠藉助Ctrl+Shift+C來尋找元素),看一下這個元素的id和class的名字是啥,在CSS代碼裏找找就好了。web
界面的顏色除了有black、white這類設定好的顏色以外,你能夠找一個RGB顏色對照表,想要啥就丟啥。
遇到有啥不會調的參數,基本搜一下「CSS+參數名字」就有詳細介紹,畢竟這東西網上教程不少。
比方說延遲變換能夠用transition-property來作,而文字陰影效果是text-shadow,這些都是我本身在作的時候折騰了好一會的。
Chrome(我不知道其餘瀏覽器能不能)有個好處是你修改了個參數,他會馬上應用變換,這樣就能夠調到舒心再貼進自定義CSS代碼裏。
還有就是你最好把CSS代碼備份一下,否則要是誤刪了就GG,博主親身體驗T_T。
這期間你可能須要一些好看的圖片什麼的,我本身資源是P站找的(Pixiv),一些比較普通的就百度圖片吧,而後開個畫圖,開個Photoshop本身改改就能用了,圖牀直接用博客園就好了(開個不發佈的隨筆就能存圖了,圖片上右鍵能夠得到圖片連接地址)。
這時候本身的blog已經比較好看了是否是啊?
把這個放在第二是我按本身的操做順序來的。
沒啥特別要說的,就是若是你須要存儲的是cur之類的放不進圖牀的文件能夠找個直鏈網站,這裏推薦小白的文件牀(http://fq.wc.lt/),不知道是哪位大神弄的,太良心了。
upd:小白文件牀貌似不支持cur文件了,只能另找了
body{cursor:url('http://fq.wc.lt//up/1499563659.cur'),auto;} A{cursor:url('http://fq.wc.lt//up/1499563659.cur'),auto;}
折騰了一段時間之後應該對html也有了必定的瞭解,首先在博客園管理的設置頁中把JS代碼權限申請了,批准挺快的,而後就能夠隨心所欲了(霧)……
首先你能夠在側邊欄加點計數器,加點flash動畫什麼的,這些通常是找別人作好的,鏈過來或者抄過來就行。
要搞js的話建議在網上找個教程看看,看它個把小時就基本能拿來用用了(其實跟c++挺像的,應該說java跟c++比較像吧),之後遇到不會的回去查查就行。
我拿js作的大概就是加了一些小掛件,比方說左上角的西瓜是獲取main元素以後把opacity(透明度)調到0就行,結合一下onmouseover、onmouseout什麼的就能作出浮動效果,仍是很讚的。
嘗試着作個推薦按鈕,一直作不成,估計是被過濾了。發郵件去問博客園那邊也是這是禁止的。
目錄我是改自sakuraph的,感謝dalao。
之後還有什麼再補吧。
個人側邊欄:
<!DOCTYPE html>
<html>
<body>
<div class="counter" align="center"><a href="http://www.amazingcounters.com/"><img border="0" src="http://cc.amazingcounters.com/counter.php?i=3213924&c=9642085" alt="AmazingCounters.com"></a></div>
<div class="head_img"><img width="120" height="120" alt="個人頭像" src="http:\\pic.cnblogs.com/avatar/841250/20170528221640.png" class="img_avatar"><div>
<div class="notice">
作題作得心累的時候<br>
就看看背景吧<br>
想看背景的時候<br>
請點擊左上角西瓜一枚<br>
右上角月亮有彩蛋
</div>
</body>
</html>
個人頁首:
<!DOCTYPE html> <html> <body> <style> #nav { width:150px; height: 400px; border: 1px solid #D4CD49; position:fixed;left:0;top:30% } </style> <input type="image" id="Uleft" src="http://fq.wc.lt//up/1503755860.png" onmouseover="this.style.top='10px'; this.src='http://fq.wc.lt//up/1503755899.png' " onmouseout="this.style.top='-60px'; this.src='http://fq.wc.lt//up/1503755860.png' " onclick="ShowPicture()"> <input type="image" id="Uright" src="http://fq.wc.lt//up/1503754720.png" onmouseover="this.style.top='10px'; this.src='http://fq.wc.lt//up/1503754624.png' " onmouseout="this.style.top='-55px'; this.src='http://fq.wc.lt//up/1503754720.png' " onclick="ChangePicture()" style="top: -55px;"> <input type="image" id="Dright" src="http://fq.wc.lt//up/1504337868.png" onclick="ShowTab()"> <input type="image" id="MagicArray" src="http://fq.wc.lt//up/1504338509.png" onclick="ShowTab()"> <a name="Tab" id="Tab1" href="http://www.cnblogs.com/" style="right:78px;bottom:165px;">博客園</a> <a name="Tab" id="Tab1" href="http://www.cnblogs.com/Enceladus/" style="right:150px;bottom:130px;">首頁</a> <a name="Tab" id="Tab1" href="https://msg.cnblogs.com/send/swm_sxt" style="right:10px;bottom:130px;">私信博主</a> <a name="Tab" id="Tab1" onclick="fixedIndexs.show()" style="right:120px;bottom:50px;">顯示目錄</a> <a name="Tab" id="Tab1" onclick="fixedIndexs.hide()" style="right:20px;bottom:50px;">隱藏目錄</a> <a name="Tab" id="Tab1" href="https://i.cnblogs.com/" style="right:85px;bottom:10px;">管理</a> <script> function GetRandomNum(Min,Max){ var Range=Max-Min; var Rand=Math.random(); return(Min+Math.round(Rand * Range)); } function ShowTab(){ x=document.getElementById("MagicArray"); if (x.style.width=="200px"){ x.style.width="0px"; x.style.height="0px"; x.style.bottom="100px"; x.style.right="100px"; x.style.transform="rotate(0deg)"; }else{ x.style.width="200px"; x.style.height="200px"; x.style.bottom="0px"; x.style.right="0px"; x.style.transform="rotate(180deg)"; } y=document.getElementsByName("Tab"); for (var i=0;i<y.length;i++){ x=y[i]; if (x.style.fontSize=="15px"){ x.style.fontSize="0px"; x.style.transitionDelay="0s"; }else{ x.style.fontSize="15px"; x.style.transitionDelay="0.8s"; } } } function ShowPicture(){ x=document.getElementById("main"); x.style.opacity=0.9-x.style.opacity; } function ChangePicture(){ x=document.body; y=GetRandomNum(0,14); if (y==0){ x.style.background="url(http://images2015.cnblogs.com/blog/841250/201706/841250-20170611202329872-1998585524.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==1){ x.style.background="url(http://images2015.cnblogs.com/blog/841250/201704/841250-20170409090749785-323228483.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==2){ x.style.background="url(http://images2015.cnblogs.com/blog/841250/201705/841250-20170505174023882-274298407.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==3){ x.style.background="url(http://images2015.cnblogs.com/blog/841250/201705/841250-20170505174051757-1191896358.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==4){ x.style.background="url(http://images2015.cnblogs.com/blog/841250/201705/841250-20170505174129773-2085975677.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==5){ x.style.background="url(http://images2015.cnblogs.com/blog/841250/201706/841250-20170604142640446-727563678.png) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==6){ x.style.background="url(http://images2015.cnblogs.com/blog/841250/201706/841250-20170611202111434-1989193791.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==7){ x.style.background="url(http://images2015.cnblogs.com/blog/841250/201706/841250-20170611202419872-817092701.png) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==8){ x.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902151832593-2122003193.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==9){ x.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152019140-1762402367.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==10){ x.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152127562-2119838736.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==11){ x.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152205765-1481629031.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==12){ x.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152237077-878421384.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==13){ x.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152325140-1207335922.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; }else if (y==14){ x.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152342718-1503887682.jpg) no-repeat fixed"; x.style.backgroundSize="cover"; } } </script> </body> </html>
個人頁尾:
<div class="fixedIndexs" style="position: fixed;opacity:0.5;bottom:300px;display: none"></div> <script language="javascript" type="text/javascript"> var fixedIndexs=$('.fixedIndexs'); var hs = $('#cnblogs_post_body h2'); function openorclose(a) { $("#indexs").slideToggle("fast"); var text=$(a).text(); if(text=='[-]'){ $(a).text("[+]"); return; } $(a).text("[-]"); } function createIndexs(){ var indexs_container=$('<div style="border:solid 1px #ccc; background:#CD6889;width:200px;padding:4px 10px;"></div>'); var indexs_controller=$('<p style="text-align:right;margin:10;"><span style="float:left;">目錄<a onclick="javascript:openorclose(this);" style="cursor: pointer">[-]</a></span><a href="#top" style="text-align: right;color: #444">返回頂部</a></p>'); var indexs=$('<ol id="indexs" style="margin-left: 14px; padding-left: 14px; line-height: 160%; display: block;"></ol>'); indexs_container.append(indexs_controller).append(indexs); $.each(hs,function(i,h){ $(h).before('<a name="index_'+i+'"></a>'); indexs.append('<li style="list-style:decimal"><a href="#index_'+i+'" id="active_'+i+'">'+$(h).text()+'</a></li>'); }); if(hs.length!=0){ fixedIndexs.append(indexs_container); //get home div right offset fixedIndexs.css('right',30+'px'); } } createIndexs(); fixedIndexs.hide(); </script>
upd at 2017/9/9:
指的是背景裏面跑來跑去的星星什麼的……
這東西也不難學的,就是requestAnimFrame會自動幫你定時調用一段函數,而後你在函數裏面用canvas寫寫繪圖就好了,寫得再醜最後效果好像都是挺平滑的,好像是瀏覽器會自動優化。
我大概就是讓每一幀畫面都有必定機率生成一個星星(圖什麼的本身拿PS畫畫就好了),而後給一個下落速度和角度什麼的。原本用了一些彈性碰撞公式來作碰撞的,但最後效果並很差,索性忽略質量差異的問題,碰撞了就交換速度和角度。
至於側邊欄那個就也是這樣簡單地寫一個物理模型而已。
學習使用requestAnimFrame的時候感受最大的難點就是網上的代碼大多加了不少效果,而致使代碼很長,研讀起來找不到本身真正想要的部分,其實只須要像下面這麼寫。
<script> window.requestAnimFrame= window.requestAnimationFrame|| window.webkitRequestAnimationFrame|| window.mozRequestAnimationFrame|| window.oRequestAnimationFrame|| window.msRequestAnimationFrame|| function(callback){window.setTimeout(callback, 1000/60);}; function work(timestamp){ timer=requestAnimationFrame(work); } timer=requestAnimationFrame(work); </script>
這時work函數你就想幹啥幹啥了,超舒服的。感受學了這麼多年OI終於在此時派上用場。
下面是加了新特效後,個人頁首HTML代碼:
<!DOCTYPE html> <html> <body> <style> #Canvas{ position:fixed; top:0px; left:0px; } </style> <canvas id="Canvas"></canvas> <style> #nav { width:150px; height: 400px; border: 1px solid #D4CD49; position:fixed;left:0;top:30% } </style> <input type="image" id="Uleft" src="http://fq.wc.lt//up/1503755860.png" onmouseover="this.style.top='10px'; this.src='http://fq.wc.lt//up/1503755899.png' " onmouseout="this.style.top='-60px'; this.src='http://fq.wc.lt//up/1503755860.png' " onclick="ShowPicture()"> <input type="image" id="Uright" src="http://fq.wc.lt//up/1503754720.png" onmouseover="this.style.top='10px'; this.src='http://fq.wc.lt//up/1503754624.png' " onmouseout="this.style.top='-55px'; this.src='http://fq.wc.lt//up/1503754720.png' " onclick="ChangePicture()" style="top: -55px;"> <input type="image" id="Dright" src="http://fq.wc.lt//up/1504337868.png" onclick="ShowTab()"> <input type="image" id="MagicArray" src="http://fq.wc.lt//up/1504338509.png" onclick="ShowTab()"> <a name="Tab" id="Tab1" href="http://www.cnblogs.com/" style="right:78px;bottom:165px;">博客園</a> <a name="Tab" id="Tab1" href="http://www.cnblogs.com/Enceladus/" style="right:150px;bottom:130px;">首頁</a> <a name="Tab" id="Tab1" href="https://msg.cnblogs.com/send/swm_sxt" style="right:10px;bottom:130px;">私信博主</a> <a name="Tab" id="Tab1" onclick="fixedIndexs.show()" style="right:120px;bottom:50px;">顯示目錄</a> <a name="Tab" id="Tab1" onclick="fixedIndexs.hide()" style="right:20px;bottom:50px;">隱藏目錄</a> <a name="Tab" id="Tab1" href="https://i.cnblogs.com/" style="right:85px;bottom:10px;">管理</a> <a name="Tab" id="Tab1" style="right:85px;bottom:88px;" onclick="control()">動畫</a> <script> window.requestAnimFrame= window.requestAnimationFrame|| window.webkitRequestAnimationFrame|| window.mozRequestAnimationFrame|| window.oRequestAnimationFrame|| window.msRequestAnimationFrame|| function(callback){window.setTimeout(callback, 1000/10);}; var W=document.body.scrollWidth,H=document.body.scrollHeight; var ca=document.getElementById("Canvas"),el=ca.getContext("2d"); var num=0,SpeedBasic=3,SpeedRand=0.8,angleBasic=0.5,timer,lline=20; var x=new Array(),y=new Array(),speed=new Array(),angle=new Array(),t=new Array(),TT=new Array(); var img1=new Image(),img2=new Image(),img3=new Image(),img4=new Image(); ca.width=W;ca.height=H; img1.src="http://fq.wc.lt//up/1504690030.png"; img2.src="http://fq.wc.lt//up/1504690047.png"; img3.src="http://fq.wc.lt//up/1504690062.png"; img4.src="http://fq.wc.lt//up/1504690077.png"; function RandomNum(Min,Max){ var Range=Max-Min; var Rand=Math.random(); return(Min+Math.round(Rand * Range)); } function RandomReal(Min,Max){ return Min+(Max-Min)*Math.random(); } function abs(W){return W<=0?-W:W;} function drawtail(px,py,an){ an=Math.atan(an); for (var i=0;i<10;i++){ var X,Y; Y=Math.sqrt(RandomReal(0,lline*lline)); X=RandomReal(-Y*5/lline,Y*5/lline)+RandomReal(-Y*5/lline,Y*5/lline); Y=lline-Y; X+=10; el.fillRect(px+(X*Math.cos(an)-Y*Math.sin(an)),py-(X*Math.sin(an)+Y*Math.cos(an)),2,2); } } function drawstar(px,py,ti){ if (ti==1) el.drawImage(img1,px,py,20,20);else if (ti==2) el.drawImage(img2,px,py,20,20);else if (ti==3) el.drawImage(img3,px,py,20,20);else if (ti==4) el.drawImage(img4,px,py,20,20); } function drawline(sx,sy,px,py){ el.beginPath(); el.moveTo(sx,sy); el.lineTo(px,py); el.stroke(); el.closePath(); } function dis(sx,sy,px,py){ return Math.sqrt((px-sx)*(px-sx)+(py-sy)*(py-sy)); } function work(timestamp){ if (RandomNum(0,5)==0){ x.push(RandomNum(0,W)); y.push(RandomNum(0,H)); t.push(0); TT.push(RandomNum(3,10)); speed.push(SpeedBasic+RandomReal(-SpeedRand,SpeedRand)+RandomReal(-SpeedRand,SpeedRand)+RandomReal(-SpeedRand,SpeedRand)); angle.push(RandomReal(-angleBasic,angleBasic)+RandomReal(-angleBasic,angleBasic)+RandomReal(-angleBasic,angleBasic)); for (;;){ if (Math.random()<=0.7) y[num]=0;else{ y[num]%=200; if (Math.random()<=0.5) x[num]=0,angle[num]=abs(angle[num]);else x[num]=W-1,angle[num]=-abs(angle[num]); } var i; for (i=0;i<num;i++) if (dis(x[i],y[i],x[num],y[num])<20) break; if (i==num) break; x[num]=RandomNum(0,W);y[num]=RandomNum(0,H); } num++; } el.clearRect(0,0,W,H); el.fillStyle="#7B68EE"; var tmp; for (var i=0;i<num;i++) for (var j=i+1;j<num;j++) if (dis(x[i],y[i],x[j],y[j])<20){ tmp=speed[i]; speed[i]=speed[j]; speed[j]=tmp; tmp=angle[i]; angle[i]=angle[j]; angle[j]=tmp; } for (var i=0;i<num;i++){ //el.fillRect(x[i],y[i],10,10); drawtail(x[i],y[i],angle[i]); drawstar(x[i],y[i],(parseInt(t[i]/TT[i])%4)+1); y[i]+=speed[i];x[i]+=(speed[i]*angle[i]); t[i]++; if (y[i]>=H||x[i]<0||x[i]>=W){ num--; x[i]=x[num];y[i]=y[num];speed[i]=speed[num];angle[i]=angle[num];t[i]=t[num];TT[i]=TT[num]; x.pop();y.pop();speed.pop();angle.pop();t.pop();TT.pop(); i--; } } timer=requestAnimationFrame(work); } timer=requestAnimationFrame(work); var sta=1; function control(){ if (sta==1){ cancelAnimationFrame(timer); ca.style.opacity="0"; sta=0; }else{ timer=requestAnimationFrame(work); ca.style.opacity="1"; sta=1; } } function ShowTab(){ dx=document.getElementById("MagicArray"); if (dx.style.width=="200px"){ dx.style.width="0px"; dx.style.height="0px"; dx.style.bottom="100px"; dx.style.right="100px"; dx.style.transform="rotate(0deg)"; }else{ dx.style.width="200px"; dx.style.height="200px"; dx.style.bottom="0px"; dx.style.right="0px"; dx.style.transform="rotate(180deg)"; } dy=document.getElementsByName("Tab"); for (var i=0;i<y.length;i++){ dx=dy[i]; if (dx.style.fontSize=="15px"){ dx.style.fontSize="0px"; dx.style.transitionDelay="0s"; }else{ dx.style.fontSize="15px"; dx.style.transitionDelay="0.8s"; } } } function ShowPicture(){ dx=document.getElementById("main"); if (dx.style.opacity=="0") dx.style.opacity="0.9";else dx.style.opacity="0"; } function ChangePicture(){ dx=document.body; dy=RandomNum(0,14); if (dy==0){ dx.style.background="url(http://images2015.cnblogs.com/blog/841250/201706/841250-20170611202329872-1998585524.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==1){ dx.style.background="url(http://images2015.cnblogs.com/blog/841250/201704/841250-20170409090749785-323228483.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==2){ dx.style.background="url(http://images2015.cnblogs.com/blog/841250/201705/841250-20170505174023882-274298407.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==3){ dx.style.background="url(http://images2015.cnblogs.com/blog/841250/201705/841250-20170505174051757-1191896358.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==4){ dx.style.background="url(http://images2015.cnblogs.com/blog/841250/201705/841250-20170505174129773-2085975677.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==5){ dx.style.background="url(http://images2015.cnblogs.com/blog/841250/201706/841250-20170604142640446-727563678.png) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==6){ dx.style.background="url(http://images2015.cnblogs.com/blog/841250/201706/841250-20170611202111434-1989193791.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==7){ dx.style.background="url(http://images2015.cnblogs.com/blog/841250/201706/841250-20170611202419872-817092701.png) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==8){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902151832593-2122003193.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==9){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152019140-1762402367.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==10){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152127562-2119838736.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==11){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152205765-1481629031.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==12){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152237077-878421384.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==13){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152325140-1207335922.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==14){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170902152342718-1503887682.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; } } ChangePicture(); </script> </body> </html>
還有物理模型部分代碼:
<canvas id="Canvas2" onmousedown="cg()"></canvas> <button type="button" onclick="ADDnumlimit()">Add ball!</button><br> <a onclick="_control()">一個徹底不成熟的物理模型</a> <script> window.requestAnimFrame= window.requestAnimationFrame|| window.webkitRequestAnimationFrame|| window.mozRequestAnimationFrame|| window.oRequestAnimationFrame|| window.msRequestAnimationFrame|| function(callback){window.setTimeout(callback, 1000/60);}; var cancelAnimationFrame=window.cancelAnimationFrame||window.mozCancelAnimationFrame; var _W=150,_H=150; var _ca=document.getElementById("Canvas2"),_el=_ca.getContext("2d"); var _num=0,G=0.01,Wi=0.01,Ff=0.99,R=5,NUMlimit=1; var _x=new Array(),_y=new Array(),speedx=new Array(),speedy=new Array(),m=new Array(),_timer; _ca.width=_W;_ca.height=_H; /*_ca.addEventListener("mousedown",function(event){ },false);*/ function cg(){ for (var i=0;i<num;i++) speedx[i]+=RandomReal(-5,5),speedy[i]+=RandomReal(-5,5); } var sta=0; function ADDnumlimit(){if(sta==1&&NUMlimit<20)NUMlimit++;} function max(A,B){return A>B?A:B;} function ADDball(){ _x.push(RandomNum(0,_W-R*2)); _y.push(0); m.push(RandomReal(3,100)); speedx.push(RandomReal(0,4));speedy.push(RandomReal(0,4)); for (;;){ var i; for (i=0;i<_num;i++) if (dis(_x[i],_y[i],_x[_num],_y[_num])<R*2) break; if (i==_num) break; _x[_num]=RandomNum(0,_W-R*2); } _num++; } function _work(timestamp){ if (_num<NUMlimit) ADDball(); _el.clearRect(0,0,_W,_H); for (var i=0;i<_num;i++) for (var j=i+1;j<_num;j++) if ((SS=dis(_x[i]+speedx[i],_y[i]+speedy[i],_x[j]+speedx[j],_y[j]+speedy[j]))<=R*2){ var dx=_x[i]-_x[j],dy=_y[i]-_y[j],vx,vy; var F=2*(dx*(speedx[j]-speedx[i])+dy*(speedy[j]-speedy[i]))/(dx*dx+dy*dy)/(1/m[i]+1/m[j]); //F*=(R*2-SS)*(R*2-SS)*(R*2-SS)*0.000005+1; var E=m[i]*(speedx[i]*speedx[i]+speedy[i]*speedy[i])+m[j]*(speedx[j]*speedx[j]+speedy[j]*speedy[j]); var Wx=m[i]*speedx[i]+m[j]*speedx[j]; var Wy=m[i]*speedy[i]+m[j]*speedy[j]; speedx[i]+=F*dx/m[i]; speedy[i]+=F*dy/m[i]; speedx[j]-=F*dx/m[j]; speedy[j]-=F*dy/m[j]; } for (var i=0;i<_num;i++){ speedx[i]*=Ff;speedy[i]*=Ff; _x[i]+=speedx[i]; _y[i]+=speedy[i]; speedy[i]+=G; speedx[i]+=Wi/m[i]; if (_y[i]+speedy[i]+2*R>=_H&&speedy[i]>=0) speedy[i]*=-Ff,speedy[i]-=0; if (_y[i]+speedy[i]<0&&speedy[i]<=0) speedy[i]*=-Ff,speedy[i]+=0; if (_x[i]+speedx[i]+2*R>=_W&&speedx[i]>=0) speedx[i]*=-Ff,speedx[i]-=0; if (_x[i]+speedx[i]<0&&speedx[i]<=0) speedx[i]*=-Ff,speedx[i]+=0; } _el.fillStyle="black"; for (var i=0;i<_num;i++){ _el.beginPath(); _el.arc(_x[i]+R,_y[i]+R,R,0,Math.PI*2); _el.closePath(); _el.fill(); } _timer=requestAnimationFrame(_work); } function _control(){ if (sta==1){ cancelAnimationFrame(_timer); sta=0; }else{ _timer=requestAnimationFrame(_work); sta=1; } } </script>
後來因爲小白文件牀已掛,現換上新的頁首代碼(拿博客園作圖牀):
<!DOCTYPE html> <html> <body> <style> #Canvas{ position:fixed; top:0px; left:0px; opacity:0.3; } </style> <canvas id="Canvas"></canvas> <style> #nav { width:150px; height: 400px; border: 1px solid #D4CD49; position:fixed;left:0;top:30% } </style> <input type="image" id="Uleft" src="http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132102016-280648354.png" onmouseover="this.style.top='10px'; this.src='http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132110485-340298713.png' " onmouseout="this.style.top='-60px'; this.src='http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132102016-280648354.png' " onclick="ShowPicture()"> <input type="image" id="Uright" src="http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132057500-1294518696.png" onmouseover="this.style.top='10px'; this.src='http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132044282-1070510381.png' " onmouseout="this.style.top='-55px'; this.src='http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132057500-1294518696.png' " onclick="ChangePicture()" style="top: -55px;"> <input type="image" id="Dright" src="http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132721735-572062833.png" onclick="ShowTab()"> <input type="image" id="MagicArray" src="http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132726032-1459872254.png" onclick="ShowTab()"> <a name="Tab" id="Tab1" href="http://www.cnblogs.com/" style="right:78px;bottom:165px;">博客園</a> <a name="Tab" id="Tab1" href="http://www.cnblogs.com/Enceladus/" style="right:150px;bottom:130px;">首頁</a> <a name="Tab" id="Tab1" href="https://msg.cnblogs.com/send/swm_sxt" style="right:10px;bottom:130px;">私信博主</a> <a name="Tab" id="Tab1" onclick="fixedIndexs.show()" style="right:120px;bottom:50px;">顯示目錄</a> <a name="Tab" id="Tab1" onclick="fixedIndexs.hide()" style="right:20px;bottom:50px;">隱藏目錄</a> <a name="Tab" id="Tab1" href="https://i.cnblogs.com/" style="right:85px;bottom:10px;">管理</a> <a name="Tab" id="Tab1" style="right:85px;bottom:88px;" onclick="control()">動畫</a> <script> window.requestAnimFrame= window.requestAnimationFrame|| window.webkitRequestAnimationFrame|| window.mozRequestAnimationFrame|| window.oRequestAnimationFrame|| window.msRequestAnimationFrame|| function(callback){window.setTimeout(callback, 1000/10);}; var W=document.body.scrollWidth,H=document.body.scrollHeight; var ca=document.getElementById("Canvas"),el=ca.getContext("2d"); var num=0,SpeedBasic=3,SpeedRand=0.8,angleBasic=0.5,timer,lline=20; var x=new Array(),y=new Array(),speed=new Array(),angle=new Array(),t=new Array(),TT=new Array(); var img1=new Image(),img2=new Image(),img3=new Image(),img4=new Image(); ca.width=W;ca.height=H; img1.src="http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132729688-38554350.png"; img2.src="http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132733563-1765368712.png"; img3.src="http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132739141-33127178.png"; img4.src="http://images2017.cnblogs.com/blog/841250/201709/841250-20170914132745860-1067567351.png"; function RandomNum(Min,Max){ var Range=Max-Min; var Rand=Math.random(); return(Min+Math.round(Rand * Range)); } function RandomReal(Min,Max){ return Min+(Max-Min)*Math.random(); } function abs(W){return W<=0?-W:W;} function drawtail(px,py,an){ an=Math.atan(an); for (var i=0;i<10;i++){ var X,Y; Y=Math.sqrt(RandomReal(0,lline*lline)); X=RandomReal(-Y*5/lline,Y*5/lline)+RandomReal(-Y*5/lline,Y*5/lline); Y=lline-Y; X+=10; el.fillRect(px+(X*Math.cos(an)-Y*Math.sin(an)),py-(X*Math.sin(an)+Y*Math.cos(an)),2,2); } } function drawstar(px,py,ti){ if (ti==1) el.drawImage(img1,px,py,20,20);else if (ti==2) el.drawImage(img2,px,py,20,20);else if (ti==3) el.drawImage(img3,px,py,20,20);else if (ti==4) el.drawImage(img4,px,py,20,20); } function drawline(sx,sy,px,py){ el.beginPath(); el.moveTo(sx,sy); el.lineTo(px,py); el.stroke(); el.closePath(); } function dis(sx,sy,px,py){ return Math.sqrt((px-sx)*(px-sx)+(py-sy)*(py-sy)); } function work(timestamp){ if (RandomNum(0,5)==0){ x.push(RandomNum(0,W)); y.push(RandomNum(0,H)); t.push(0); TT.push(RandomNum(3,10)); speed.push(SpeedBasic+RandomReal(-SpeedRand,SpeedRand)+RandomReal(-SpeedRand,SpeedRand)+RandomReal(-SpeedRand,SpeedRand)); angle.push(RandomReal(-angleBasic,angleBasic)+RandomReal(-angleBasic,angleBasic)+RandomReal(-angleBasic,angleBasic)); for (;;){ if (Math.random()<=0.7) y[num]=0;else{ y[num]%=200; if (Math.random()<=0.5) x[num]=0,angle[num]=abs(angle[num]);else x[num]=W-1,angle[num]=-abs(angle[num]); } var i; for (i=0;i<num;i++) if (dis(x[i],y[i],x[num],y[num])<20) break; if (i==num) break; x[num]=RandomNum(0,W);y[num]=RandomNum(0,H); } num++; } el.clearRect(0,0,W,H); el.fillStyle="#7B68EE"; var tmp; for (var i=0;i<num;i++) for (var j=i+1;j<num;j++) if (dis(x[i],y[i],x[j],y[j])<20){ tmp=speed[i]; speed[i]=speed[j]; speed[j]=tmp; tmp=angle[i]; angle[i]=angle[j]; angle[j]=tmp; } for (var i=0;i<num;i++){ //el.fillRect(x[i],y[i],10,10); drawtail(x[i],y[i],angle[i]); drawstar(x[i],y[i],(parseInt(t[i]/TT[i])%4)+1); y[i]+=speed[i];x[i]+=(speed[i]*angle[i]); t[i]++; if (y[i]>=H||x[i]<0||x[i]>=W){ num--; x[i]=x[num];y[i]=y[num];speed[i]=speed[num];angle[i]=angle[num];t[i]=t[num];TT[i]=TT[num]; x.pop();y.pop();speed.pop();angle.pop();t.pop();TT.pop(); i--; } } timer=requestAnimationFrame(work); } timer=requestAnimationFrame(work); var sta=1; function control(){ if (sta==1){ cancelAnimationFrame(timer); ca.style.opacity="0"; sta=0; }else{ timer=requestAnimationFrame(work); ca.style.opacity="1"; sta=1; } } function ShowTab(){ dx=document.getElementById("MagicArray"); if (dx.style.width=="200px"){ dx.style.width="0px"; dx.style.height="0px"; dx.style.bottom="100px"; dx.style.right="100px"; dx.style.transform="rotate(0deg)"; }else{ dx.style.width="200px"; dx.style.height="200px"; dx.style.bottom="0px"; dx.style.right="0px"; dx.style.transform="rotate(180deg)"; } dy=document.getElementsByName("Tab"); for (var i=0;i<dy.length;i++){ dx=dy[i]; if (dx.style.fontSize=="15px"){ dx.style.fontSize="0px"; dx.style.transitionDelay="0s"; }else{ dx.style.fontSize="15px"; dx.style.transitionDelay="0.8s"; } } } function ShowPicture(){ dx=document.getElementById("main"); if (dx.style.opacity=="0") dx.style.opacity="0.9";else dx.style.opacity="0"; } function ChangePicture(){ dx=document.body; dy=RandomNum(0,23); if (dy==0){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174010688-1830584338.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==1){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174017360-1796590868.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==2){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174022047-853249916.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==3){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174029141-1608852048.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==4){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174035141-1267899028.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==5){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174040782-379920149.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==6){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174047860-2089092748.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==7){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174055110-760691979.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==8){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174104078-1668647264.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==9){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174123610-1330753439.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==10){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174128907-905693440.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==11){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174204485-2036992334.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==12){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174211563-1891350663.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==13){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174217813-1439526251.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==14){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174223313-1473348115.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==15){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174229063-639587638.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==16){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174235313-1682256911.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==17){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174243094-1382641129.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==18){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174249782-1878167894.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==19){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174256703-514964046.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==20){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174302813-2113078791.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==21){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174309203-1666245225.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==22){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174314782-1332659971.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; }else if (dy==23){ dx.style.background="url(http://images2017.cnblogs.com/blog/841250/201709/841250-20170913174320828-1435950696.jpg) no-repeat fixed"; dx.style.backgroundSize="cover"; } } ChangePicture(); </script> </body> </html>
因爲種種緣由(其實就是太醜)如今已經不自動打開了,能夠在導航欄裏的「動畫"打開。
upd at 2017/9/13:
想着拿canvas作3D渲染的,不用庫函數那種。
而後發現因爲本身幾何水平太差,已經作不下去了。
反正這麼做死的事應該沒什麼前途吧……先棄了,去搞搞PHP什麼的再說。
當前的zz效果:
<a id="O_O">O_O</a> <canvas id="Canvas"></canvas> <script> window.requestAnimFrame= window.requestAnimationFrame|| window.webkitRequestAnimationFrame|| window.mozRequestAnimationFrame|| window.oRequestAnimationFrame|| window.msRequestAnimationFrame|| function(callback){window.setTimeout(callback, 1000/10);}; s=document.getElementById("O_O"); s.innerHTML=">_<"; var ca=document.getElementById("Canvas"),el=ca.getContext("2d"); var R=100,C=100,H=30,Px=50,Py=50,Pz=1,Fx=0,Fy=1,Fz=0, Dx=0,Dy=0,Dz=-1,DDx=1,DDy=0,DDz=0; var color=new Array(H),pi=Math.atan(1.0)*4,timer,count=0,Dis=new Array(_W),Ro=0.01; var _W=750,_H=750; ca.width=_W;ca.height=_H; function dis(ax,ay,az,bx,by,bz){return Math.sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by)+(az-bz)*(az-bz));} function abs(x){return x<0?-x:x;} function rot(Rox,Roz){ var a,b,c,u; a=Fx*Math.cos(Rox)-Fy*Math.sin(Rox); b=Fx*Math.sin(Rox)+Fy*Math.cos(Rox); Fx=a;Fy=b; a=DDx*Math.cos(Rox)-DDy*Math.sin(Rox); b=DDx*Math.sin(Rox)+DDy*Math.cos(Rox); DDx=a;DDy=b; /* u=Math.sqrt(Fx*Fx+Fy*Fy); a=Fz*Math.cos(Roz)-u*Math.sin(Roz); b=Fz*Math.sin(Roz)+u*Math.cos(Roz); Fz=a;Fx*=b/u;Fy*=b/u; u=Math.sqrt(Dx*Dx+Dy*Dy); a=Dz*Math.cos(Roz)-u*Math.sin(Roz); b=Dz*Math.sin(Roz)+u*Math.cos(Roz); Dz=a;Dx*=b/u;Dy*=b/u; */ //alert(Fx+" "+Fy+" "+Fz); } document.onkeypress=function(ev){ var oEvent=ev||event; var In=String.fromCharCode(oEvent.keyCode); //alert(In); if (In=="w"||In=="W"){ Px++; }else if (In=="s"||In=="S"){ Px--; }else if (In=="a"||In=="A"){ Py-- }else if (In=="d"||In=="D"){ Py++; }else if (In==" "){ Pz++; }else if (In=="z"||In=="Z"){ Pz--; }else if (In=="1") rot(Ro,0); else if (In=="3") rot(-Ro,0); else if (In=="5") rot(0,Ro); else if (In=="2") rot(0,-Ro); }; for (var i=0;i<H;i++){ color[i]=new Array(R) for (var j=0;j<R;j++) color[i][j]=new Array(C); } for (var i=0;i<_W;i++) Dis[i]=new Array(_H); for (var i=0;i<H;i++) for (var j=0;j<R;j++) for (var k=0;k<C;k++) color[i][j][k]=""; for (var j=0;j<R;j++) for (var k=0;k<C;k++) color[0][j][k]="black"; /* for (var j=0;j<R;j++) for (var k=0;k<C;k++) color[parseInt(Math.sin(j/10)*30+30)][j][k]="red"; for (var j=0;j<R;j++) for (var k=0;k<C;k++) color[parseInt((j-150)*(j-150)/300)][j][k]="blue"; */ for (var j=0;j<R;j++) for (var k=0;k<C;k++) color[10][j][k]="red"; for (var j=0;j<R;j++) for (var k=0;k<C;k++) color[20][j][k]="blue"; //alert("O_O"); function work(){ el.clearRect(0,0,_W,_H); var SS; for (var i=0;i<_W;i++) for (var j=0;j<_H;j++) Dis[i][j]=1000000000; for (var i=0;i<H;i++) for (var j=0;j<R;j++) for (var k=0;k<C;k++) if (color[i][j][k]!=""){ var L=Fx*(j-Px)+Fy*(k-Py)+Fz*(i-Pz); if (L<=0) continue; var fx=j-Px-Fx*L,fy=k-Py-Fy*L,fz=i-Pz-Fz*L; //alert(i+" "+j+" "+k+" "+fx+" "+fy+" "+fz); var X=parseInt((fx*DDx+fy*DDy+fz*DDz)/L*5+_W/2+0.5); var Y=parseInt((fx*Dx+fy*Dy+fz*Dz)/L*5+_H/2+0.5); if (X>=_W||Y>=_H||X<0||Y<0) continue; //if ((SS=dis(i,j,k,Px,Py,Pz))>=Dis[X][Y]) continue; //Dis[X][Y]=SS; //alert(i+" "+j+" "+k+" "+fx+" "+fy+" "+fz); el.fillStyle=color[i][j][k]; el.fillRect(X,Y,1,1); } timer=requestAnimationFrame(work); } timer=requestAnimationFrame(work); </script>
update at 2018/3/12
突然想到還有這種東西能夠修改。
正常在html裏面加這句就能夠了
<link rel="shortcut icon" href="圖標地址" type="image/x-icon" />
但不知道是什麼緣由,好像沒生效。
那就加個js來改好了。
<script type="text/javascript"> var x = document.createElement('link'); x.rel = "shortcut icon"; x.href = "圖標地址"; document.getElementsByTagName("head")[0].appendChild(x); </script>
update at 2018/3/20
這個效果學(chao)習自悠悠 :http://uusama.com/643.html
最近考試蠻多的(這個藉口不錯)沒什麼時間搗鼓因此直接copy了dalao的主體代碼。圖片跨域的問題我是從本身服務器請求一個base64碼過來。(也許會有點燒流量?
代碼能夠移步dalao的github
效果在側邊欄上方頭像處
PS:若是你copy了個人代碼,base64的請求可能只能用於博客園,由於服務器的跨域只放了博客園。
(如今的軟件那麼成熟,你搗鼓這玩意有什麼意義?= =
寫出來了順便移植到blog側邊欄惹……
詳見這篇文章javascript自制函數圖像生成器
移植後代碼:
<div id="mask"></div> <div align="center" style=""> <canvas id="graph"></canvas> </div> <div UnSelect="YES"> <button class="ui green button" onclick="mask()">Control</button> <button class="ui green button" onclick="redraw()">Reflash</button> <!--<p id="map"></p>--> </div> <p>醜得不行的函數圖像生成器</p> <a href="https://enceladus.cf/function.html">高端版入口</a><br><br> <script> function $(id) { return document.getElementById(id); } function getRandomColor(){ return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6); } function ischar(c){return (c>='a'&&c<='z')||(c>='A'&&c<='Z');} function isdigit(c){return c>='0'&&c<='9';} function ChangeToPointX(x){return parseInt((x-FunLx)/(FunRx-FunLx)*FunW);} function ChangeToPointY(y){return FunH-1-parseInt((y-FunLy)/(FunRy-FunLy)*FunH);} function priority(c){ switch(c){ case '(':{return 0;break;} case '+':{return 1;break;} case '-':{return 1;break;} case '*':{return 2;break;} case '/':{return 2;break;} case '^':{return 3;break;} default:{return -1;break;} } } function isopt(c){return priority(c)!=-1;} function SingleCalc(c,a,b){ if (c=='+') return a+b;else if (c=='-') return a-b;else if (c=='*') return a*b;else if (c=='/') return a/b;else if (c=='^') return Math.pow(a,b);else return NaN } function FunWork(f,x){ switch(f){ case "":{return x;break;} case "SIN":{return Math.sin(x);break;} case "COS":{return Math.cos(x);break;} case "TAN":{return Math.tan(x);break;} case "ABS":{return Math.abs(x);break;} case "SQRT":{return Math.sqrt(x);break;} case "LN":{return Math.log(x);break;} case "LOG":{return Math.log(x)/Math.LN2;break;}//2爲底 case "LG":{return Math.log(x)/Math.LN10;break;}//10爲底 case "FLOOR":{return Math.floor(x);break;} case "CEIL":{return Math.ceil(x);break;} case "INT":{return parseInt(x);break;} default:{return NaN;break;} } } function FunInit(F){ F=F.replace(/sin/g,"SIN"); F=F.replace(/cos/g,"COS"); F=F.replace(/tan/g,"TAN"); F=F.replace(/abs/g,"ABS"); F=F.replace(/sqrt/g,"SQRT"); F=F.replace(/ln/g,"LN"); F=F.replace(/log/g,"LOG"); F=F.replace(/lg/g,"LG"); F=F.replace(/floor/g,"FLOOR"); F=F.replace(/ceil/g,"CEIL"); F=F.replace(/int/g,"INT"); return F; } var Funca=$("graph"),Funel=Funca.getContext("2d"),fun=$("function"),eps=1e-12; var FunW=/*Funca.parentNode.clientWidth*/157,FunH=/*Funca.parentNode.clientHeight*/157,FunLx=-FunW/100,FunRx=FunW/100,FunLy=-FunH/100,FunRy=FunH/100,PR,tableX,tableY,tmp,countX,countY,Funstage=0,MoX,MoY,MIN=1e-4,MAX=1e8,FUN; var dir=[[0,1],[1,0],[0,-1],[-1,0],[1,1],[1,-1],[-1,1],[-1,-1]]; var FontStyle="bold 12px Georgia"; Funca.width=FunW;Funca.height=FunH;$("size").innerHTML="Size:"+FunW+"*"+FunH; function Calc(fun,X,Value){ var number=new Array(),opt=new Array(),F=new Array(),now=0,f="",tmp,a,b,sign=1,base=0,j; for (var i=0;i<fun.length;i++){ for (j=0;j<X.length;j++) if (X[j]==fun[i]){ if (i==0||isopt(fun[i-1])) now=Value[j];else now*=Value[j]; break; } if (j==X.length) if (fun[i]=='(') F.push(f),f="",opt.push('(');else if (fun[i]==')'){ number.push(now*sign);now=0;sign=1;base=0; while ((tmp=opt.pop())!='('){ b=number.pop();a=number.pop(); tmp=SingleCalc(tmp,a,b); number.push(tmp); } now=FunWork(F.pop(),number.pop()); }else if (fun[i]=='.') base=1;else if (fun[i]=='+'&&(i==0||priority(fun[i-1])!=-1));else if (fun[i]=='-'&&(i==0||priority(fun[i-1])!=-1)) sign=-1;else if (fun[i]=='e') if (i==0||isopt(fun[i-1])) now=Math.E;else now*=Math.E;else if (fun[i]=='p'&&fun[i+1]=='i'){if (i==0||isopt(fun[i-1])) now=Math.PI;else now*=Math.PI;i+=1;}else if (isdigit(fun[i])) if (base==0) now=now*10+(fun[i]-'0');else base/=10,now+=base*(fun[i]-'0');else if (ischar(fun[i])) f+=fun[i];else if (isopt(fun[i])){ number.push(now*sign);now=0;sign=1;base=0; var s=priority(fun[i]); if (s==-1) return 0; while (s<=priority(opt[opt.length-1])){ b=number.pop();a=number.pop(); tmp=SingleCalc(opt.pop(),a,b); number.push(tmp); } opt.push(fun[i]); } } number.push(now*sign); while (opt.length>0){ b=number.pop();a=number.pop(); tmp=SingleCalc(opt.pop(),a,b); number.push(tmp); } return number.pop(); } function drawarc(x,y,R){ Funel.beginPath(); Funel.arc(x,y,R,0,Math.PI*2); Funel.closePath(); Funel.fill(); } function drawline(lx,ly,px,py){ Funel.beginPath(); Funel.moveTo(lx,ly); Funel.lineTo(px,py); Funel.closePath(); Funel.stroke(); } function gettable(){ tmp=(FunRx-FunLx+eps)/6; tableX=1;countX=0;countY=0; while(tableX<tmp) tableX*=10; while(tableX/10>tmp) tableX/=10,countX++; if (tableX>=1) countX=0; if (tableX/5>tmp) tableX/=5,countX++;else if (tableX/2>tmp) tableX/=2,countX++; for (var i=parseInt(FunLx/tableX)+(FunLx>0);i*tableX<FunRx;i++){ Funel.fillStyle=i==0?"#000000":"#CDB7B5"; tmp=(i*tableX-FunLx)/(FunRx-FunLx)*FunW; Funel.fillRect(tmp,0,1,FunH); Funel.fillStyle="#000000"; Funel.font=FontStyle; Funel.fillText((i*tableX).toFixed(countX),tmp+2,10); } tmp=(FunRy-FunLy+eps)/10; tableY=1; while(tableY<tmp) tableY*=10; while(tableY/10>tmp) tableY/=10,countY++; if (tableY/5>tmp) tableY/=5,countY++;else if (tableY/2>tmp) tableY/=2,countY++; if (tableY>=1) countY=0; for (var i=parseInt(FunLy/tableY)+(FunLy>0);i*tableY<FunRy;i++){ Funel.fillStyle=i==0?"#000000":"#CDB7B5"; tmp=(i*tableY-FunLy)/(FunRy-FunLy)*FunH; Funel.fillRect(0,FunH-1-tmp,FunW,1); Funel.fillStyle="#000000"; Funel.font=FontStyle; Funel.fillText((i*tableY).toFixed(countY),0,FunH-1-tmp); } //$("map").innerHTML=tableX+" "+tableY; } function PCalc(i,j){return Calc(FUN,['x','y'],[FunLx+(FunRx-FunLx)/FunW*i,FunRy-(FunRy-FunLy)/FunH*j]);} function ImpDraw(x,y,X,Y,jump){ if (x+X>FunW) X=FunW-x;if (y+Y>FunH) Y=FunH-y; var Imp=new Array(),tmp; if (X>=jump)X=parseInt(X/jump); if (Y>=jump)Y=parseInt(Y/jump); for (var i=-1;i<=X;i+=1){ Imp[i+1]=new Array(); for (var j=-1;j<=Y;j+=1) Imp[i+1].push(PCalc(i*jump+x,j*jump+y)); } for (var i=0;i<X;i+=1) for (var j=0;j<Y;j+=1) for (var k=0;k<4;k++) if (Imp[i+1][j+1]*Imp[i+1+dir[k][0]][j+1+dir[k][1]]<0) {drawarc(i*jump+x,j*jump+y,PR);break;} } function getfunction(){ var group=document.getElementsByName("Fun"),x,y,R,lax,lay,px,py,color,OutSide,type,ValueL,ValueR,ValueS,DLc,tmp,TMP; PR=$("PointRadii").value; for (var k=1;k<group.length;k++){ var gf=group[k].parentNode.parentNode; OutSide=1;type=gf.children[0].value;DLc=gf.children[4].children[0].checked; FUN=FunInit((group[k].children[0].value).toLowerCase()); color=gf.children[1].value; Funel.fillStyle=Funel.strokeStyle=color; switch (type){ case '0':{ for (var i=0;i<FunW;i++){ x=FunLx+(FunRx-FunLx)/FunW*i; y=Calc(FUN,['x'],[x]); if (isNaN(y)) continue; px=i;py=ChangeToPointY(y); if (y>=FunLy&&y<FunRy){ drawarc(px,py,PR); if (DLc) drawline(lax,lay,px,py); OutSide=0; }else{ if (DLc) if (!OutSide) drawline(lax,lay,px,py); OutSide=1; } lax=px;lay=py; } break; } case '1':{ ValueL=Calc(gf.children[5].children[1].children[0].value,[],[]); ValueR=Calc(gf.children[5].children[3].children[0].value,[],[]); ValueS=Calc(gf.children[5].children[5].children[0].value,[],[]); for (var i=ValueL;i<ValueR+ValueS-eps;i+=ValueS){ if (i>ValueR) i=ValueR; R=Calc(FUN,['t'],[i]); x=R*Math.cos(i);y=R*Math.sin(i); px=ChangeToPointX(x);py=ChangeToPointY(y); if (FunLx<=x&&x<FunRx&&FunLy<=y&&y<FunRy){ drawarc(px,py,PR); if (DLc) drawline(lax,lay,px,py); OutSide=0; }else{ if (DLc) if (!OutSide) drawline(lax,lay,px,py); OutSide=1; } lax=px;lay=py; } break; } case '2':{ var SpaceW=Calc(gf.children[5].children[1].children[0].value,[],[]), SpaceH=Calc(gf.children[5].children[3].children[0].value,[],[]), jump=Calc(gf.children[5].children[5].children[0].value,[],[]),Imp=new Array(); for (var i=0;i*SpaceW<FunW;i+=1){ Imp[i]=new Array(); for (var j=0;j*SpaceH<FunH;j+=1) Imp[i].push(0); } for (var i=0,_i=0;i<FunW;i+=SpaceW,_i+=1) for (var j=0,_j=0;j<FunH;j+=SpaceH,_j+=1){ //if (!Imp[_i][_j]||(!_i&&!Imp[_i-1][_j])) { tmp=PCalc(i,j-1); for (var l=0;l<SpaceH&&j+l<FunH;l++) if (TMP=tmp,tmp=PCalc(i,j+l),TMP*tmp<0||Math.abs(tmp)<eps) {Imp[_i][_j]=1;if (_i) Imp[_i-1][_j]=1;break;} } //if (!Imp[_i][_j]||(!_j&&!Imp[_i][_j-1])) { tmp=PCalc(i-1,j); for (var l=0;l<SpaceW&&i+l<FunW;l++) if (TMP=tmp,tmp=PCalc(i+l,j),TMP*tmp<0||Math.abs(tmp)<eps) {Imp[_i][_j]=1;if (_j) Imp[_i][_j-1]=1;break;} } } for (var i=0;i<Imp.length;i+=1) for (var j=0;j<Imp[i].length;j+=1) if (Imp[i][j]) ImpDraw(i*SpaceW,j*SpaceH,SpaceW,SpaceH,jump); break; } case '3':{ ValueL=Calc(gf.children[5].children[1].children[0].value,[],[]); ValueR=Calc(gf.children[5].children[3].children[0].value,[],[]); ValueS=Calc(gf.children[5].children[5].children[0].value,[],[]); _FUN=FunInit((group[k].parentNode.children[3].children[0].value).toLowerCase()); for (var i=ValueL;i<ValueR+ValueS-eps;i+=ValueS){ if (i>ValueR) i=ValueR; x=Calc(FUN,['t'],[i]);y=Calc(_FUN,['t'],[i]); px=ChangeToPointX(x);py=ChangeToPointY(y); if (FunLx<=x&&x<FunRx&&FunLy<=y&&y<FunRy){ drawarc(px,py,PR); if (DLc) drawline(lax,lay,px,py); OutSide=0; }else{ if (DLc) if (!OutSide) drawline(lax,lay,px,py); OutSide=1; } lax=px;lay=py; } break; } } } } function redraw(){ Funel.clearRect(0,0,FunW,FunH); gettable(); if (Funstage!=1||$("DrawMoving").checked) getfunction(); } function change(){ FunLx=parseFloat($("FunLx").value); FunRx=parseFloat($("FunRx").value); FunLy=parseFloat($("FunLy").value); FunRy=parseFloat($("FunRy").value); FontStyle=$("FontStyle").value; redraw(); } function update(){ $("FunLx").value=FunLx; $("FunRx").value=FunRx; $("FunLy").value=FunLy; $("FunRy").value=FunRy; $("FontStyle").value=FontStyle; } function Scale(x,y,times){ if (x<0||x>=FunW||y<0||y>=FunH) return; if ($("sizelimit").checked){ if (times<1&&(FunRx-FunLx<MIN||FunRy-FunLy<MIN)) return; if (times>1&&(FunRx-FunLx>MAX||FunRy-FunLy>MAX)) return; } x=FunLx+(FunRx-FunLx)/FunW*x; y=FunLy+(FunRy-FunLy)/FunH*y; FunLx=x-(x-FunLx)*times;FunRx=x+(FunRx-x)*times; FunLy=y-(y-FunLy)*times;FunRy=y+(FunRy-y)*times; } Funca.onmousedown=function(ob){ MoX=ob.layerX;MoY=ob.layerY; Funstage=1; } Funca.onmousemove=function(ob){ if (Funstage!=1) return; var NoX,NoY,det; NoX=ob.layerX;NoY=ob.layerY; det=(MoX-NoX)/FunW*(FunRx-FunLx);FunLx+=det;FunRx+=det; det=(NoY-MoY)/FunH*(FunRy-FunLy);FunLy+=det;FunRy+=det; MoX=NoX;MoY=NoY; redraw();update(); } Funca.onmouseup=function(ob){ if (Funstage==1){ Funstage=0; redraw(); } } Funca.onmouseleave=function(ob){ if (Funstage==1){ Funstage=0; redraw(); } } Funca.onmousewheel=function(ob){ ob=ob||window.event;ob.preventDefault(); var ScaleRate=$("Scale").value; var detail; if(ob.wheelDelta)detail=ob.wheelDelta;else if(ob.detail)detail=ob.detail; if (detail>0) Scale(ob.layerX,FunH-1-ob.layerY,ScaleRate);else Scale(ob.layerX,FunH-1-ob.layerY,1/ScaleRate); redraw();update(); } function Add(){ var New=$("mod").cloneNode(true); New.style.display="block"; New.children[1].value=getRandomColor(); fun.appendChild(New); } function Delete(node){ node.parentNode.removeChild(node); } function DrawLine(ob){ //if (ob.className=="ui checkbox checked") ob.className="ui checkbox";else ob.className="ui checkbox checked"; redraw(); } function ShowOption(obj){ obj=obj.children[0]; if (obj.className=="Caret Right icon") obj.className="Caret Down icon",$("option").style.display="block";else obj.className="Caret Right icon",$("option").style.display="none"; } function FunctionChange(obj){ var fi=0,la=2,v=obj.value; obj=obj.parentNode; obj.children[5].style.display="none"; obj.children[2].style.display="inline"; obj.children[2].children[3].style.display="none"; if (v==0){ obj.children[2].children[fi].innerHTML="y="; obj.children[2].children[la].innerHTML=""; }else if (v==1){ obj.children[2].children[fi].innerHTML="r="; obj.children[2].children[la].innerHTML=""; obj.children[5].style.display="block"; obj.children[5].children[0].innerHTML="t:"; obj.children[5].children[1].children[0].value="0"; obj.children[5].children[2].innerHTML="~"; obj.children[5].children[3].children[0].value="2pi"; obj.children[5].children[4].innerHTML=" Space:"; obj.children[5].children[5].children[0].value="0.02"; }else if (v==2){ obj.children[2].children[fi].innerHTML=""; obj.children[2].children[la].innerHTML="=0"; obj.children[5].style.display="block"; obj.children[5].children[0].innerHTML="SpaceW:"; obj.children[5].children[1].children[0].value="30"; obj.children[5].children[2].innerHTML=" SpaceH:"; obj.children[5].children[3].children[0].value="30"; obj.children[5].children[4].innerHTML=" Jump:"; obj.children[5].children[5].children[0].value="3"; }else if (v==3){ obj.children[2].style.display="block"; obj.children[2].children[3].style.display="inline"; obj.children[2].children[fi].innerHTML="x="; obj.children[2].children[la].innerHTML=" y="; obj.children[5].style.display="block"; obj.children[5].children[0].innerHTML="t:"; obj.children[5].children[1].children[0].value="0"; obj.children[5].children[2].innerHTML="~"; obj.children[5].children[3].children[0].value="1"; obj.children[5].children[4].innerHTML=" Space:"; obj.children[5].children[5].children[0].value="0.1"; } } redraw();update(); var maskobj=$("mask"); var control=$("control"); function mask(){ if (maskobj.style.display=="block") control.style.display=maskobj.style.display="none";else control.style.display=maskobj.style.display="block"; } maskobj.onclick=function(){ mask(); } </script>
[UnSelect=YES]{ -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Chrome/Safari/Opera */ -khtml-user-select: none; /* Konqueror */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ } #mask{ width:100%; height:100%; background:#000; opacity:0.5; position:fixed; top:0; left: 0; z-index: 100; display:none; } .notes{ color:#FFFFFF; font-weight:800; font-size:20px; }
(你你你怎麼縮的進啊?隨手copy的無論了
你們以爲有什麼地方能夠改進的記得告訴我哦 ^o^