整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          CSS制作的優雅漂亮的圓形時鐘

          CSS制作的優雅漂亮的圓形時鐘

          紹:

          這是一款使用 CSS 制作的優雅漂亮的圓形時鐘,時鐘清爽簡潔,看起來非常舒服。

          演示地址:

          https://www.361zy.com/demo/334/

          下載地址:

          https://cloud.06dn.com/s/Jnoia

          解壓碼:pWuLBIaF

          Pad作為一個我們可以方便攜帶的便攜設備,有著比筆記本更靈活的使用場景。如果能用iPad來寫代碼的話,對于很多朋友來說相信都是一大好消息。下面推薦幾款能夠在iPad上編寫和運行python程序的app,當然也有介紹能夠運行多種語言的app,希望給想在iPad上編程的朋友帶來幫助。大家也可以推廣到其他編程語言,尋找合適的app!

          本文會以在 iPad上寫python代碼為主,依次介紹carnets、pythonista和code app等幾款軟件,也會給大家介紹幾款提升iPad上寫代碼效率的工具。但是本文介紹的幾款app中,不止有python的編譯器,也有可以編譯運行多種不同語言的app,還會推廣涉及到遠程編譯的方法以實現多種不同語言的編譯運行,其中本人覺得最好用的code app放在最后講解,也是可以編譯和運行語言種類最多的app,一定要看到最后噢?。?/strong>

          一、carnets(免費,僅支持python)

          簡介

          carnets是一款基于jupyter的python編譯器,在app store里面搜索carnets,會出現兩個版本,一個為carnets-jupyter,另一個為carnets-jupyter(with scipy),它們之間區別在于with scipy版本加入了scipy、sklearn、seaborn以及coremltools這幾個庫,對于需要用python從事科研的朋友很有用。此外,也支持安裝一些純python的第三方庫。

          carnets-jupyter(with scipy)還支持notebook和jupyterlab的切換。但是缺點在于占用內存空間更大(1.6G,對比之下標準版本為1.1G)

          具體使用介紹(以scipy版本為例)

          首先打開app,點擊creat document,就會自動創建一個Untitled.ipynb文件并打開

          可以看到,界面與電腦上的jupyter notebook是幾乎一樣的,操作方法也與電腦上的版本類似。

          我們點擊左上角的文件,再點擊打開,就能來到文件管理界面

          再點擊Nbextension,我們就能看到jupyter notebook的插件功能,和電腦上是完全一致的,把上面的勾選關掉,就可以使用插件功能了。

          除此之外,在系統設置里面,可以更改語言設置,也可以更改文件儲存位置等,也可以在distribution里面把軟件界面設置成retrolab,點擊view再點擊open jupyterlab,我們就能打開jupyterlab的界面,在iPad上使用jupyterlab進行編程。

          其余的使用與電腦端類似,可以參考電腦端jupyter的使用方法。


          簡單測試

          我們簡單跑一下代碼,以及嘗試裝一個純python的第三方庫


          總結

          總的來說,carnets很好解決了在iPad上使用python進行編程的問題,并且支持許多熱門的第三方庫,如numpy、matplotlib、pandas等,并且對于(with scipy)版本還支持scipy、sklearn等,在很大程度上能滿足python學習的需求,也能滿足一定的專業程序員的需求。

          不足之處在于,notebook可能對于一部分人來說使用起來不習慣,以及受限于iPad OS,只能安裝一些純python的庫,一些深度學習的第三方庫可能安裝不了。


          二、pythonista(68元,僅支持python)

          簡介

          pythonista是一款python的IDE,界面較為特別,內置了numpy、matplotlib等熱門第三方庫。但是遺憾的是并不支持安裝第三方庫(好像有曲線救國的方法)。它有很多特色的小功能,比如內置了很多生動形象的小程序,對于初學者來說是很好的學習參考,對于已經掌握python的程序員來說也可以在此基礎上開發一些小程序。pythonista支持python ui的開發,能做一些很精美的程序。


          具體使用介紹

          打開app,點擊New file,點擊Empty script來創建一個新的python文件,把路徑設置在This iPad然后點擊create創建就可以。可以看到除了純python文件,也可以創建帶UI的python文件(這方面我不是很擅長,讀者可以自行嘗試)。

          除此之外,點擊左上角可以查看文檔,再點擊返回可以查看全局文檔,進行文檔管理。

          點擊This iPad下的example可以查看軟件自帶的一些小程序,點擊運行可以查看對應的功能,比如這個時鐘小程序

          除此之外還有各種形式的程序,各位讀者可以自行查看


          簡單測試

          我們在pythonista上創建一個腳本,并運行一個簡單的例子

          可以看出,運行結果是正確的。


          總結

          pythonista是一款比較專注于python,界面比較獨特的app。上面支持普通的python腳本文件,也支持python UI文件,并且提供了大量的例子,可供初學者學習,也增加了趣味性。

          缺點是由于官方并不支持自行通過pip安裝第三方庫,使用起來只能局限于app自帶的庫,會有所不方便。app也已經有很長一段時間沒更新了,所以體驗可能稍差。


          三、Code app(30元,支持多種語言)

          簡介

          Code app是一款界面類似vscode的代碼編輯器,能夠支持5種語言的本地編譯以及40多種語言的在線編譯。運行界面和操作邏輯與vscode非常相似,內置了linux終端,支持近70種命令(ls、cd、nslookup等),并且支持快捷鍵自定義,對鼠標對支持也非常良好,功能十分強大。


          具體使用介紹

          打開app,可以看到與vscode類似的界面,我們可以創建新文件,也可以打開已有文件,也可以使用git clone來拷貝github上的項目。

          我們點擊新文件,可以創建不同語言的文件,我們在這里創建一個python腳本文件

          創建文件后,可以看到運行的是本地的python3.9.2。輸入幾行代碼,可以看到代碼高亮與電腦端vscode是類似的,但是在寫代碼過程中不支持代碼提示,這點比較遺憾

          打開左下角的設置,可以更改主題或字體大小,也可以查看app支持的本地和遠程編譯的語言。

          終端(terminal)可以按左邊的按鈕打開或者關閉,可以支持的命令有70多種,使用起來十分方便。使用pip命令也可以安裝純python第三方庫。

          其他使用可以參考電腦端vscode的使用,感興趣的讀者可以下載使用一下。


          簡單測試

          我們運行上面的python代碼,運行正常

          我們再測試一下別的語言,如C++,運行結果也正常。

          其他語言以及在線編譯功能讀者可以自行嘗試。


          總結

          code app是一款功能非常強大的iPad代碼編輯器,支持多種語言的編譯功能,文件管理也非常完善,可以在一定程度上滿足專業程序員的需求。

          美中不足的是code app不支持代碼提示,也不支持debug,期待后續更新可以加上這些功能。如果實現的話,應該算得上是iPad上最好用帶有本地編譯功能的編譯器了。


          四、提高寫代碼效率的配件

          首先鍵盤肯定是要配一個的,要不然在屏幕上打字一來效率不高,二來屏幕大小就這么點,再被鍵盤占去一部分空間后寫代碼就會顯得很局促。

          在這里我給大家推薦一款羅技的無線藍牙鍵盤,我自己本人也是羅技K380用戶,鍵盤的手感很不錯,質感也很好,最主要的是這款鍵盤方便攜帶,與iPad簡直是絕配!??!并且支持三臺不同設備之間的自由切換,可以同時配對你的iPad、電腦和手機,實現設備間辦公無縫銜接。K580也是不錯的選擇,提供了一個平板或者手機的支撐位,使用起來更方便,并且也能支持兩臺設備之間的切換。大家可以按需選擇。

          除此之外,鼠標也可以配備一個,這樣可以獲得更加接近電腦上寫代碼的感覺,提升效率。大家也可以考慮一下羅技家的藍牙鼠標,非常輕薄便于攜帶,是隨時隨地在iPad上寫代碼的好幫手!


          五、寫在最后

          以上我們總結了幾款使用體驗非常不錯的python編譯器,以及code app這個能夠支持多種語言的編譯器:

          1. carnets是基于jupyter的,在進行科研或者數據處理的時候非常好用;缺點是對于不習慣jupyter的用戶可能試用體驗不習慣。
          2. pythonista是面向UI設計為主的,也可以運行一些簡單的python腳本,同時提供了一些生動的例子兼具了趣味性;但是官方不支持安裝第三方庫,對于專業程序員可能很多想要的功能不能實現,并且軟件已經長時間沒更新,不排除作者棄更的可能。
          3. code app是功能最全面的一款app,界面與電腦端的vscode類似,支持幾款常用語言的本地編譯和數十種語言的在線編譯,也能支持markdown和html等語言的預覽,功能想對齊全;缺點是暫時不支持代碼提示以及debug,對于專業程序員來說可能有時候會比較頭疼。

          除了上面提到的幾款app,其實iPad上也有不少其他好用的編譯器,比如pyto等。也有許多面向其他語言的編譯器,大家可以在app store上尋找。

          但是由于iPad上只支持純python的第三方庫,有些專業程序員可能對其他第三方庫有需求,或者說想運行編譯其他更多語言,這個問題可以通過遠程編譯的方式來解決。如果我們有云服務器或者個人主機的話,可以通過在主機上配置code-server或者jupyter server的方式在iPad上實現遠程編譯,這個具體的教程就不在這展開了,感興趣的讀者可以搜索網上的教程,我后續可能也會寫一篇關于通過遠程服務器在iPad上寫程序的文章,歡迎大家關注!

          以上有錯誤的地方也歡迎大家指正,互相交流!

          anvas是HTML5新增的組件,它就像一塊幕布,可以用JavaScript在上面繪制各種圖表、動畫等。

          沒有Canvas的年代,繪圖只能借助Flash插件實現,頁面不得不用JavaScript和Flash進行交互。有了Canvas,我們就再也不需要Flash了,直接使用JavaScript完成繪制。

          基本使用

          在html源碼中只要像普通標簽那樣使用即可,比如下面的示例,但是在一些老舊的瀏覽器在中是不支持canvas的,因此我們常在canvas標簽中提示用戶,具體代碼如下所示。

           <canvas id="myCanvas" width="300px" height="300px">
           您的瀏覽器不支持canvas,請嘗試更新瀏覽器
           </canvas>
          

          或者使用JS腳本來進行檢測,使用JavaScript代碼檢測是否支持canvas的代碼示例如下:

           var myCanvas=document.getElementById('myCanvas');
           if (myCanvas.getContext) {
           myCanvas.log('你的瀏覽器支持Canvas!');
           } else {
           myCanvas.log('你的瀏覽器不支持Canvas!');
           }
          

          開始繪制

          由于繪制canvas通常代碼需要比較多,我們常常使用引用js的方式來繪制canvas,這里我們也是引入js文件來操作canvas,HTML源碼如下所示

           <!DOCTYPE html>
           <html lang="en">
           <head>
           <meta charset="UTF-8">
           <title>學習Canvas繪制始終效果</title>
           <style>
           canvas{
           border: 1px solid #cccccc;
           }
           </style>
           </head>
           <body>
           <canvas id="myCanvas" width="300px" height="300px">
           您的瀏覽器不支持Canvas,請嘗試更新瀏覽器
           </canvas>
           <script src="js/canvas.js"></script>
           </body>
           </html>
          

          創建js文件

          根據實際的需要創建js文件,這里我引入的地址是js/canvas.js,因此需要和HTML源碼文件同級下創建js文件夾,然后再js文件夾中創建canvas.js文件。

          繪制測試示例

          繪制效果如下

          <div style="align: center"> 
          <img src="http://www.zhoutao123.com:9000/upload/2017/12/4s4ptf692qhjtq6f1pdddj1l9b.png" width="200">
          </div>
          

          預備代碼

          這里保持一些全局變量,方便后面使用的

           //獲取canvas的上下文環境
           var myCanvas=document.getElementById('myCanvas')
           var ctx=myCanvas.getContext('2d')
           //獲取canvas的寬度和高度
           var canvasWidth=myCanvas.width
           var canvasHeight=myCanvas.height
          

          身為前端老司機,還是得分享些干貨精品學習資料的,前端資料獲取方式:

          關注后,手機客戶端點擊我的主頁面,右上角有私信,請私信回復:【學習】

          已經設置好了關鍵詞自動回復,所以回復的時候請注意關鍵詞喲~

          繪制背景

          我們首先繪制背景,分析背景可以看到,他是由一個大的黑色與圓圈包裹,里面有一個灰色的略小的圓圈,在灰色圓圈的周圍均勻分布著時鐘點,這些時鐘點每逢5的倍數的時候突出顯示,否則就是灰色顯示,這就是我們的需求,具體注釋在代碼中可以詳細看到。

           //開始繪制背景
           function drawBackground() {
           //未防止當前畫布環境被破壞,因此我們保存當前的繪制環境
           ctx.save()
           //開始繪制路徑
           ctx.beginPath()
           //配置繪制顏色,我們首先繪制的是黑色圓圈,因此我們配置為黑色
           ctx.strokeStyle='#000000'
           //繪制寬度為6個像素
           ctx.lineWidth=6
           //開始繪制圓,圓心未知是寬和高的一半,半徑是寬度的一半減去圓圈的寬度
           //這里最后的兩個參數需要注意
           //指的是繪制圓圈的起點和繪制的弧度
           //我們從0點開始繪制然后繪制2*PI個弧度,也就是一個正圓
           //這里的點是從x軸正方向開始的
           ctx.arc(canvasWidth/2,canvasHeight/2,canvasHeight/2-3,0,2*Math.PI)
           //配置完成,開始繪制
           ctx.stroke()
           //同樣的需求開始繪制灰色的圓圈
           ctx.beginPath()
           ctx.strokeStyle='#CCCCCC'
           ctx.lineWidth=1
           ctx.arc(canvasWidth/2,canvasHeight/2,(canvasWidth/2-15),0,2*Math.PI)
           ctx.stroke()
           //將原點從左上角0,0移動到中心位置
           ctx.translate(canvasWidth/2,canvasHeight/2)
           //需要現實的數字
           //這是可以看到,數字是從3開始的,也驗證了我們的之前說的繪制從x軸正方向開始
           //在時鐘界面x軸正方向就是3點鐘
           var colorNumber=[3,4,5,6,7,8,9,10,11,12,1,2]
           //配置字體和對齊方向
           ctx.font="25px Arial";
           ctx.textAlign="center"
           ctx.textBaseline="middle"
           //循環遍歷,開始繪制數字
           for(var i=0;i<colorNumber.length;i++){
           var dep=2 * Math.PI /12 * i;
           ctx.fillText(colorNumber[i],(canvasWidth/2-30) * Math.cos(dep),(canvasHeight/2-30)* Math.sin(dep))
           }
           //繪制時鐘點
           for(var i=0;i<60;i++){
           var rad=2 * Math.PI /60 * i;
           var x=Math.cos(rad) * (canvasHeight/2-16)
           var y=Math.sin(rad) * (canvasHeight/2-16)
           ctx.beginPath();
           //如果是5的倍數,使用黑色填充,否則使用灰色填充
           if (i % 5===0){
           ctx.fillStyle="#000"
           ctx.arc(x,y,2,0,2*Math.PI,false)
           }else{
           ctx.fillStyle="#CCC"
           ctx.arc(x,y,2,0,2*Math.PI,false)
           }
           ctx.fill()
           }
           }
          

          繪制時針

          繪制時針、分針以及秒針的理念是先繪制0時刻的樣子,然后旋轉畫布一定的弧度,從而達到轉動的效果。

           //繪制時針
           function drawHours(hours,minte) {
           //保存環境
           ctx.save()
           //計算時鐘角度和偏離的角度
           var rad=2 * Math.PI / 12 * hours;
           var rad2=2 * Math.PI / 12 /60 * minte;
           //旋轉畫布
           ctx.rotate(rad+rad2)
           ctx.beginPath();
           //配置繪制效果
           ctx.lineWidth=6
           ctx.strokeStyle="#000"
           //線的兩端保持圓角
           ctx.lineCap="round"
           //將繪制點移動到中心原點以下10個像素點
           ctx.moveTo(0,10);
           //繪制一個線
           ctx.lineTo(0,-(canvasWidth-150)/2)
           ctx.stroke()
           //恢復之前保存的環境
           ctx.restore()
           }
          

          繪制分針和秒針

          繪制分針和秒針的方法和時針一樣,僅僅是繪制的顏色和寬度不一樣,這里不再詳細贅述.

           //繪制分針
           function drawMinute(minute) {
           ctx.save()
           var rad=2 * Math.PI / 60 * minute;
           ctx.rotate(rad)
           ctx.beginPath();
           ctx.lineWidth=3
           ctx.strokeStyle="#000"
           ctx.lineCap="round"
           ctx.moveTo(0,10);
           ctx.lineTo(0,-(canvasWidth-100)/2)
           ctx.stroke()
           ctx.restore()
           }
           //繪制秒針
           function drawSecond(second) {
           ctx.save()
           var rad=2 * Math.PI / 60 * second;
           ctx.rotate(rad)
           ctx.beginPath();
           ctx.lineWidth=3
           ctx.strokeStyle="#f00"
           ctx.lineCap="round"
           ctx.moveTo(0,20);
           ctx.lineTo(0,-(canvasWidth-40)/2)
           ctx.stroke()
           ctx.restore()
           }
          

          繪制中心白點

          時針、分針和秒針的中心集合點出有白點,類似某個機械元件,將三個針鎖住,我們只要繪制原點即可。

           //繪制原點
           function drawPoint() {
           ctx.beginPath()
           ctx.fillStyle="#FFF"
           ctx.arc(0,0,3,0,2*Math.PI)
           ctx.fill()
           }
          

          開始時鐘

          我們將當前時間繪制到始終上面即可,需要注意的是,在繪制之前需要將之前繪制的東西清除掉。

           //開始啟動時針
           function startColor() {
           //清除畫布內容
           ctx.clearRect(0,0,canvasWidth,canvasHeight)
           var date=new Date()
           var hour=date.getHours()
           var minute=date.getMinutes()
           var second=date.getSeconds()
           drawBackground()
           drawHours(hour,minute)
           drawMinute(minute)
           drawSecond(second)
           drawPoint()
           ctx.restore()
           }
          

          設置定時重新繪制

          要想動態的讓時鐘跑起來,我們需要設置一個定時執行器,每秒更新一次,這樣始終就完全動起來了


          主站蜘蛛池模板: 亚洲美女一区二区三区| 国产精品99无码一区二区| 亚洲日韩中文字幕一区| 国产对白精品刺激一区二区 | 日韩精品一区二区三区四区 | 亚洲码欧美码一区二区三区| 精品无码人妻一区二区三区| 国产乱码精品一区二区三区四川人 | 国产精品久久一区二区三区 | 亚洲Av无码一区二区二三区| 国产麻豆媒一区一区二区三区| 亚洲免费视频一区二区三区| 日韩精品乱码AV一区二区| 国产麻豆精品一区二区三区| 精品久久久久一区二区三区| 久久精品免费一区二区| 国产伦精品一区二区三区无广告| 国产午夜精品一区二区三区漫画| 亚洲熟女乱色一区二区三区 | 亚洲精品精华液一区二区 | 亚洲乱码av中文一区二区| 亚洲国产精品一区二区第四页| 91视频一区二区| 国产一区二区三区在线免费观看| 久久99热狠狠色精品一区 | 精品欧洲av无码一区二区 | 久久精品一区二区三区中文字幕| 麻豆亚洲av熟女国产一区二| 夜色阁亚洲一区二区三区| 色噜噜狠狠一区二区三区果冻| 日本免费一区二区三区最新| 少妇激情AV一区二区三区| 无码精品人妻一区二区三区免费 | 久久久久人妻一区精品| 国产精品一区在线播放| 国产另类TS人妖一区二区| 精品国产AV无码一区二区三区| 少妇无码一区二区三区免费| 国产精品无码一区二区在线观一| 国产欧美色一区二区三区 | 国产成人精品视频一区|