<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          首頁

          【Vue】webpack的基本使用

          前端達人

          webpack的學習目標

          1. 理解什么是前端工程化
            • 轉變對前端開發的認知
          2. 了解webpack的基本用法
            • 為后面Vue和React課程的學習做技術儲備
          3. 不強制要求大家能手動配置 webpack
            • 一定要知道webpack在項目中有什么作用
            • 清除webpack中的核心概念

          前端工程化

          小白眼中的前端開發 vs 實際的前端開發

          1. 小白眼中的前端開發
            • 會寫HTML + CSS +JavaScript就會前端開發
            • 需要美化頁面樣式,就拽一個bootstrap過來
            • 需要操作DOM或發起Ajax,再拽一個jquery過來
            • 需要快速實現網頁布局效果,就拽一個Layui過來
          2. 實際的前端開發
            • 模塊化(js的模塊化,css的模塊化,資源的模塊化)
            • 組件化(復用現有的UI結構,樣式,行為)
            • 規范化(目錄結構的劃分,編碼規范化,接口規范化,文檔規范化,Git分支管理)
            • 自動化(自動化構建,自動部署,自動化測試)

          什么是前端工程化

          前端工程化指的是:在企業級的前端項目開發中,把前端開發所謂的工具,技術,流程,經驗等進行規范化,標準化。
          企業中的Vue項目和React項目,都是基于工程畫的方式進行開發。

          好處:前端開發自成體系,有一套標準的開發方案和流量。

          前端工程化的解決方案

          1. 早期的前端工程化解決方案
            • grunt
            • gulp
          2. 目前主流的前端工程化解決方案
            • webpack
            • parcel

          webpack的基本使用

          什么是webpack

          概念: webpack是前端項目工程化的具體解決方案。

          主要功能:它提供了友好的前端模塊化開發支持,以及代碼壓縮混淆,處理瀏覽器端JavaScript的兼容性性能優化等強大的功能。

          好處:讓程序員把工作的重心放到具體功能的實現上,提高了前端開發效率和項目的可維護性。

          注意:目前Vue,React等前端項目,基本上都是基于webpack進行工程化開發的。

          列表隔行變色項目

          步驟

          1. 新建項目空白目錄,并運行npm init -y命令,初始化包管理配置文件package.json
          2. 新建src源代碼目錄
          3. 新建src->index.html首頁和src->index.js腳本文件
          4. 初始化首頁基本的結構
          5. 運行npm install jquery -s命令,安裝jQuery
          6. 通過ES6模塊化的方式導入jQuery,實現列表隔行變色的效果
            在這里插入圖片描述
          <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> ul>li{這是第$個li}*9 </body> </html>  
                  
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12

          在這里插入圖片描述

          在這里插入圖片描述
          import和require導入模塊的區別
          1、require對應導出的方法是module.exports,
          import對應的方法是export default/export

          2、require 是CommonJs的語法
          import 是 ES6 的語法標準。

          3、require是運行運行時加載模塊里的所有方法(動態加載),
          import 是編譯的時候調用(靜態加載),不管在哪里引用都會提升到代碼頂部。

          4、require 是CommonJs的語法,引入的是的是整個模塊里面的對象,
          import 可以按需引入模塊里面的對象

          5、require 導出是值的拷貝,
          import 導出的是值的引用
          6. require是node.js帶有的 CommonJS語法里的東西,可以在終端中運行
          如果要在瀏覽器端運行 我們要使用import這個es6語法
          js代碼

          //導入模塊 // const $ = require('jquery') import $ from "jquery"; //定義jquery入口函數 $(function () { $('li:odd').css('background-Color', 'red') $('li:even').css('background-Color', 'pink') })  
                  
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9

          將js文件導入index.html之后,發現沒有效果,這時我們就需要webpack工具了,將語法進行重新編譯,把es6語法轉化為es5語法。

          在項目中安裝并配置webpack

          npm i webpack@5.42.1 webpack-cli -D  
                  
          • 1

          生產依賴
          在這里插入圖片描述
          創建webpack.config.js配置文件并寫入
          在這里插入圖片描述

          //使用node.js的導出語法向外導出一個webpack的配置對象 //導入模塊并進行導出內容,這樣寫會比直接導出內容多一個記錄信息的txt文件,當然我們也可以使用es6語法進行導入導出,大家可以私下去了解。 const { Module } = require("webpack"); Module.export = { mode: 'development' } //也可以直接導出內容 // module.export = { //     mode: 'development' // }  
                  
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11

          在package.json配置文件中的script中寫入聲明

          在這里插入圖片描述

          最后執行npm命令進行編譯,有一個注意點就是node.js版本需要是17版本以下的不然會出錯,當然應該有其他解決辦法,但博主不會,只好退回版本
          執行 npm run dev 這個命令,可以看到src里的index.js和jquery.js都被壓縮了。
          在這里插入圖片描述
          會生成一個編譯后的文件夾
          在這里插入圖片描述
          將main.js文件導入index.html.,不用導入index.js。
          在這里插入圖片描述
          打開頁面就可以成功顯示了
          在這里插入圖片描述
          mode的可選值
          mode節點的可選值有兩個,分別是:

          1. development
            • 開發環境
            • 不會對打包生成的文件進行代碼壓縮和性能優化
            • 打包速度快,適合在開發階段使用。
          2. production
            • 生產環境
            • 會對打包生成的文件進行代碼壓縮和性能優化
            • 打包速度很慢,僅適合在項目發布階段使用
              開發的時候使用development,打包速度快,上線的時候使用production,體積小。

          webpack.config.js的作用

          當我們使用npm run dev這個命令的時候,會執行package里的dev里的內容,在這里插入圖片描述
          dev里寫的webpack,那么它就會執行weboack.config.js這個文件里的內容,根據里面的內容再進行打包。
          在這里插入圖片描述
          webpack中的默認約定

          大家可能有個疑問,就是打包的時候為什么會打包index.js這個文件,它是怎么尋找的路徑等問題。

          在webpack4和5的版本中,有如下的默認約定,找不到就會報錯。

          1. 默認的打包入口文件為src -> index.js
          2. 默認的輸出文件路徑為dist -> main.js
            在這里插入圖片描述

          注意:可以在webpack.config.js中修改打包的默認約定。

          自定義打包的入口和出口

          在webpack.config.js配置文件中,通過entry節點指定打包的入口,通過output節點指定打包的出口文件夾和出口文件。

          // 使用node.js的導出語法向外導出一個webpack的配置對象 const path = require("path"); module.exports = { mode: 'development', entry: path.join(__dirname, 'src/index.js'), //設置打包輸出路徑,以及輸入文件名稱 output: { //指定存放目錄 path: path.join(__dirname, 'dist1'), filename: 'new.js' } }  
                  
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13

          生成的文件就變了。
          在這里插入圖片描述

          webpack中的插件

          當我們修改js文件之后,需要重新打包才能有效,每修改一次都要重新打包一次,這就很麻煩我們可以 通過安裝和配置第三方的插件,可以擴展webpack的能力,從而讓webpack用起來更方便,常用的webpack插件有如下兩個:

          1. webpack-dev-server
            • 類似于node.js階段用到的nodemon工具。
            • 每當修改了源代碼,webpack會自動進行項目的打包和構建。
          2. html-webpack-plugin
            • webpack中的html插件(“類似于一個模板引擎插件”),
            • 可以通過此插件自定制index.html頁面的內容。

          webpack-dev-server

          安裝webpack-dev-server

          安裝命令
          npm install webpack-dev-server@3.11.2 -D  
                  
          • 1
          • 2

          配置webpack-dev-server

          1. 重新配置package.json中的script里的dev內容
            在這里插入圖片描述
          2. 再次運行 npm run dev命令,重新進行項目打包
          3. 在瀏覽器中訪問本地8080端口,查看自動打包效果。

          注意:webpack-dev-server會啟動一個實時打包的http服務器。
          在這里插入圖片描述
          這樣當我們每次修改index.js文件時,保存后就會自動打包,摁兩次ctrl+c就可以終止運行。

          這種打包實際上時虛擬打包,并不是每次保存打包之后將main.js進行了修改,當我們修改代碼保存自動打包之后,我們發現頁面UI并沒有變化,那是因為main.js實際上沒有修改,訪問自動打包修改后的頁面需要訪問本地8080端口在這里插入圖片描述
          在這個http服務器內才能訪問到修改后的內容,我們前面說了修改后的js并沒有保存到main.js中,那它保存到哪里去了?它其實被保存到了根目錄中,以內存的形式進行了保存。在這里插入圖片描述
          文件名跟你前面設置的打包文件名一樣,雖然看不到這個文件但是可以進行訪問,我們需要把頁面引入鏈接從 new.js改成新生成的保存到內存中的new.js,完成這兩個步驟就可以真正的實現自動打包并實時演示了。在這里插入圖片描述

          html-webpack-plugin

          當我們開啟了自動打包服務功能,訪問服務器后,顯示的是根目錄,需要點擊一下文件夾,才能顯示頁面文件index.html,我們只需要把頁面文件copy一份兒到根目錄,這樣點開網頁就能直接顯示,這個webpack插件就可以實現相應的功能。

          安裝

          npm install html-webpack-plugin@5.3.2 -D  
                  
          • 1

          使用代碼

          //導入相應模塊 const HtmlPluginConfig = require('html-webpack-plugin') //實例化 const HtmlPlugin = new HtmlPluginConfig(); //實例化 const HtmlPlugin = new HtmlPluginConfig({ //被復制文件的路徑 template: './src/index.html', //復制到哪 filename: './index.html' });  
                  
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15

          最后再向外暴露對象

           //插件的數組,將來webpack在運行時,會加載并調用這些插件 plugins: [HtmlPlugin] //將實例化對象寫入。  
                  
          • 1
          • 2

          執行 npm run dev命令,進行自動打包,然后進入本地8080端口網頁,就可以直接看到頁面了。
          在這里插入圖片描述
          當你修改js之后也會實時更新。

          注意點以及個人建議和理解
          我們可以在scripts里設置兩個屬性,dev是用來開發實時瀏覽觀看內容的,dev2是用來進行物理打包的(當你完成項目需要打包的時候)。
          在這里插入圖片描述
          這里我需要說一下html-webpack-plugin這個插件,上面我們可以直接看到頁面是因為這個插件復制了一份兒index.html到根目錄所以可以直接訪問。
          這個插件里面 有個屬性叫filename,就是你將文件復制到什么位置。
          在這里插入圖片描述
          兩個注意點

          第一個就是它的值,屬性值寫的相對路徑是根據你打包文件的位置為基準的,并不是webpack.config.js的文件位置,./就跟你的new.js文件在同一個文件夾里,…/就在new.js的上級文件夾里,所以當你打包的時候會發現除了new.js之外還有index.html

          第二個就是輸出方式,如果執行的是dev2,那么就跟new.js進行物理復制,如果執行的是dev那么就跟new.js一樣,以內村存儲的方式進行保存。

          生成的html文件里會自動導入同時打包的js文件
          在這里插入圖片描述

          devServer節點

          在webpack.config.js配置文件中,可以通過devServer節點對webpack-dev-server插件進行更多配置。
          其中有一些屬性設置可以更方便我們進行開發。

           devServer: { open: true, //打包完成后默認打開瀏覽器 port: 8080,//修改端口號 host: '127.0.0.1' //修改主機地址 }  
                  
          • 1
          • 2
          • 3
          • 4
          • 5
          文章已被收錄至官方知識檔案







          轉自 csdn



          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加藍小助,微信號:ben_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系01063334945。


          分享此文一切功德,皆悉回向給文章原作者及眾讀者.
          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。


          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

          網站都變成灰色了,它是怎么實現的?

          前端達人

          大家好,我是二哥呀。

          想必大家都感受到了,很多網站、APP 在昨天都變灰了。

          先來感受一下變灰后的效果。

          這是 CSDN 的

          這是 B站的

          這種灰色的效果怎么實現的呢?如何做到圖片、文字、按鈕都變灰的效果呢?

          方案 1,換一套灰色的 UI,那顯然成本太大了,用腳指頭想一想就知道不太可能。

          方案 2,用魔法!

          不好意思,還真被你猜中了!在網頁端按下 F12,打開開發者模式,用元素選擇器定位到 HTML 標簽上,在「樣式」的面板中往下翻,就可以看到這樣一段代碼。

          我把它復制過來大家看一下。

          -webkit-filter: grayscale(100%);
          -moz-filter: grayscale(100%);
          -ms-filter: grayscale(100%);
          -o-filter: grayscale(100%);
          filter: grayscale(100%);
          filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);  
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          打開二哥的網站《Java 程序員進階之路》,定位到 HTML 標簽,此時可以看到頁面是正常的顏色。

          然后把之前的代碼添加到 HTML 上,然后就可以看到色系變成灰色了。

          那這段代碼是什么意思呢?

          直接把 filter grayscale 復制到搜索引擎里看一下。

          當參數為 0 的時候,顏色是正常的。

          然后依次試一下 60%:

          100%:

          MDN 是怎么解釋 grayscale() 函數呢?

          The grayscale() CSS function converts the input image to grayscale. Its result is a .

          大致的意思就是,grayscale 是一個 CSS 函數,可以把圖像轉成灰色,參數是個百分比,結果返回一個 filter 函數。

          The CSS data type represents a graphical effect that can change the appearance of an input image. It is used in the filter and backdrop-filter properties.

          filter 函數可以用來改變圖像的顯示效果,用于 CSS 的 filter 屬性。 除了 grayscale 函數,可選項還有以下這些:

          可以看到,目前的主流瀏覽器版本都支持 grayscale 函數,比如說 PC 端的 Chrome、edge、Firefox、Opera、Safari 等等,除了 IE。


          沒有什么使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧靜的港灣,我是不系之舟。

          轉自 csdn

          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加藍小助,微信號:ben_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系01063334945。


          分享此文一切功德,皆悉回向給文章原作者及眾讀者.
          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。


          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司



          echarts設置柱狀圖柱狀圖粗細大小

          前端達人

          主要屬性:

           //設置柱狀圖大小
                              barWidth: 20, 
                      
          • 1
          • 2

          demo:

          <!DOCTYPE html>
          <html>
          
              <head>
                  <meta charset="utf-8">
                  <title>柱狀圖大小</title>
                  <!-- 引入 echarts.js -->
                  <script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js" type="text/javascript"></script>
                  <script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
              </head>
          
              <body>
                  <!-- 為ECharts準備一個具備大?。▽捀撸┑腄om -->
                  <div id="main" style="width: 600px;height:400px;"></div>
                  <script type="text/javascript">
                      // 基于準備好的dom,初始化echarts實例
                      var myChart = echarts.init(document.getElementById('main'));
                      // 指定圖表的配置項和數據
                      myChart.setOption({
                          title: {
                              text: '柱狀圖'
                          },
                          tooltip: {},
                          legend: {
                              data: ['銷量']
                          },
                          xAxis: {
                              data: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
                          },
                          yAxis: {},
                          series: [{
                              name: '銷量',
                              type: 'bar',
                                //設置柱狀圖大小
                              barWidth: 20,
                              //設置柱狀圖漸變顏色
                              itemStyle: {
                                  normal: {
                                      color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
                                          offset: 0,
                                          color: "#1268f3" // 0% 處的顏色
                                      }, {
                                          offset: 0.6,
                                          color: "#08a4fa" // 60% 處的顏色
                                      }, {
                                          offset: 1,
                                          color: "#01ccfe" // 100% 處的顏色
                                      }], false)
                                  }
                              },
                              data: ["1", "2", "3", "4", "5", "2", "3", "4", "3"]
                          }]
                      });
                  </script>
              </body>
          
          </html> 
                      
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35
          • 36
          • 37
          • 38
          • 39
          • 40
          • 41
          • 42
          • 43
          • 44
          • 45
          • 46
          • 47
          • 48
          • 49
          • 50
          • 51
          • 52
          • 53
          • 54
          • 55
          • 56
          • 57

          css 設置tr的邊框

          前端達人

          有時候有設置tr邊框的需求,寫下如下css

          tr{

          border-bottom: 1px solid red;

          }

          發現不起作用,后來在w3c上查了查,原來只有table,th和td有獨立的邊框,tr并無邊框。

          但我想實現每一行都存在下邊框,其他邊框不存在,該怎么辦呢?


          有兩種實現方法:

          方法1:

          table{

          border-collapse: collapse;

          }

          tr{

          border-bottom: 1px solid red;

          }

          解釋,border-collapse: collapse; 將table,th和td的邊框合成單一的邊框,此時在使用tr就可以達到目的。


          方法2:

          先在table標簽里面設置cellspacing等于0,

          <table cellspacing="0">

          然后,

          td{

          border-bottom: 1px solid red;

          }

          解釋,如何不設置cellspacing等于0,直接設置td的下邊框,則下邊框會不連續,因為cellspacing不為零,單元格于單元格之間存在間隙。




          轉自:csdn

          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請掃碼藍小助,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系。

          截屏2021-05-13 上午11.41.03.png

          分享此文一切功德,皆悉回向給文章原作者及眾讀者.
          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務、

          UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

          echarts折線圖背景漸變以及常用配置項

          前端達人

          
          
          1. let myChart = this.$echarts.init(document.getElementById('plant-charts'));
          2. // 繪制圖表
          3. myChart.setOption({
          4. tooltip: {
          5. formatter: '{c}' //設置單位
          6. },
          7. //圖例樣式
          8. legend: {
          9. data: ['寬帶情況', '數據量'],
          10. textStyle: {//圖例文字的樣式
          11. color: '#fff',
          12. fontSize: 12,
          13. padding: [0, 20, 0, 0]
          14. }
          15. },
          16. grid: { //設置圖標距離父級div的間距
          17. top: "10",
          18. left: "0",
          19. right: "15",
          20. bottom: "10",
          21. containLabel: true
          22. },
          23. xAxis: {
          24. type: 'category',
          25. boundaryGap: false,
          26. data: ['2015','2016','2017','2018','2019','2020','2021'],
          27. axisLabel: {
          28. interval: '0', //類目軸(category)中用數值表示顯示間隔,0為顯示所有,1為隔一個顯示一個,以此類推
          29. textStyle: { //文字樣式
          30. color: '#62799C',
          31. fontSize: '12'
          32. },
          33. },
          34. axisTick: { //y軸刻度線不顯示
          35. show: false
          36. },
          37. },
          38. yAxis: {
          39. type: 'value',
          40. //show: false,
          41. axisLabel: {
          42. textStyle: { //文字樣式
          43. color: '#62799C',
          44. fontSize: '12'
          45. },
          46. },
          47. // 控制網格線
          48. splitLine: {
          49. // 改變軸線顏色
          50. lineStyle: {
          51. color: '#2a2a2d'
          52. }
          53. },
          54. axisTick: { //y軸刻度線
          55. show: false
          56. },
          57. },
          58. series: [{
          59. data: [5000,6000,7000,4400,3200,4500,6800],
          60. type: 'line',
          61. itemStyle: {
          62. normal: {
          63. color: 'rgba(62,139,222,1)'//線顏色
          64. }
          65. },
          66. areaStyle: {
          67. normal: {
          68. color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{ //折線圖顏色漸變
          69. offset: 0,
          70. color: 'rgba(62,139,222,0.6)'
          71. }, {
          72. offset: 1,
          73. color: 'rgba(62,139,222,0.01)'
          74. }])
          75. }
          76. },
          77. }]
          78. });

          echarts圖例(legend)顯示設置位置,樣式,內容(百分比,水平,豎直顯示,icon樣式)

          前端達人

             

           

          //圖例
              legend: {undefined
                  icon: "circle",
                  //icon形狀  類型包括 circle,rect ,roundRect,triangle,diamond,pin,arrow,none,
                  itemWidth: 10,  // 設置icon寬度
                  itemHeight: 10, // 設置icon高度
                  itemGap: 40, // 設置間距
                  // top: '5%',//豎直位置
                  // left: 'center',//水平位置
                  x: 50,//水平位置
                  y: 200,//豎直位置
                  orient: "vertical",//設置顯示順序,默認水平(水平,豎直)
                   textStyle: {undefined
                      color: "#000"
                   },//文本樣式
                   // 使用回調函數(設置文本顯示內容,例如 加百分號)
                    formatter: function(name) {undefined
                      var data = option.series[0].data;
                      var total = 0;
                      var tarValue;
                      for (var i = 0, l = data.length; i < l; i++) {undefined
                        total += data[i].value;
                        if (data[i].name == name) {undefined
                          tarValue = data[i].value;
                        }
                      }
                      var p = ((tarValue / total) * 100).toFixed(2);
                      return name + " " + " " + p + "%";
                    },
              },


          JavaScript制作貪吃蛇小游戲

          前端達人

          目錄

          效果展示

          原理分析

           Game.js文檔

          Snake.js文檔

          Food.js文檔

          附上源代碼


          寫了這么久的代碼

          是否你和我一樣感到枯燥乏味了呢?

          是否沒有前進的動力了呢?

          別忘了當時的你躊躇滿志將前端Web一舉拿下的斗志??!


          今天博主要給大家展現一個好玩的游戲

          貪吃蛇小游戲!

          嘿,你可別小瞧這東西!

          制作過程是從無到有

          等做完它

          你就能從中體會到比玩游戲還快樂的居然是打代碼!


          效果展示

          原理分析

          我們制作前為了代碼更清晰就分成幾個js文檔來編寫。

          其中Game.js可以看作是一個媒介的作用;Snake.js是當蛇初始化時在最左邊向右走的狀態;

           貪吃蛇在游戲中的運動可以想象成這條蛇是在一張25*25的表格中運動:

           如圖所示

           Game.js文檔

          所以我們在Game.js中添加表格節點

           
          
          1. function Game() {
          2. this.row = 25;
          3. this.col = 25;
          4. }
          5. Game.prototype.init = function() {
          6. this.dom = document.createElement('table');
          7. // 創建表格--父元素為document(頁面中創建表格)
          8. // var tr, td;
          9. for (var i = 0; i < this.row; i++) { //追加行
          10. var tr = document.createElement('tr');
          11. for (var j = 0; j < this.td; j++) { //追加列
          12. var td = document.createElement('col');
          13. td.appendChild(tr);
          14. }
          15. }
          16. };

          Snake.js文檔






          Snake.js中當蛇初始化時最左邊向右走的狀態

          如圖所示

           
          
          1. function Snake() {
          2. // 蛇的初始化身體
          3. this.body = [
          4. { 'row': 3, 'col': 5 },
          5. { 'row': 3, 'col': 4 },
          6. { 'row': 3, 'col': 3 },
          7. { 'row': 3, 'col': 2 }
          8. ];
          9. }
          10. Snake.prototype.render = function() {
          11. // 蛇頭的渲染
          12. game.setColorHead(this.body[0].row, this.body[0].col.'pink');
          13. // 蛇身的渲染
          14. for (var i = 1; i < this.body.length; i++) {
          15. game.setColor(this.body[i].row, this.body[i].col, 'cyan')
          16. }
          17. }

          蛇在運動的時候它的原理是“頭增尾刪”。

          因為蛇的長度先是不變的,而我們改變的也是改變這個四個格子的顏色,走一格頭部那一格顏色變為粉色,尾巴那一格的顏色變為白色。


          接下來讓蛇通過我們按鍵來進行運動:放在一個監聽事件內

           
          
          1. // 設置鍵盤的事件監聽
          2. Game.prototype.bindEvent = function() {
          3. var self = this;
          4. document.addEventListener('keydown', function(e) {
          5. // 用ASCII碼值判斷鍵盤方向
          6. switch (e.keyCode) {
          7. case 37: //左
          8. if (self.snake.direction == 'R') return; // 先進行判斷,如果當前的方向是向右移動,此時我們不能按左鍵
          9. self.snake.changeDirection('L');
          10. self.d = 'L';
          11. break;
          12. case 38: //上
          13. if (self.snake.direction == 'D') return; // 先進行判斷,如果當前的方向是向下移動,此時我們不能按上鍵
          14. self.snake.changeDirection('U');
          15. self.d = 'U';
          16. break;
          17. case 39: //右
          18. if (self.snake.direction == 'L') return; // 先進行判斷,如果當前的方向是向左移動,此時我們不能按右鍵
          19. self.snake.changeDirection('R');
          20. self.d = 'R';
          21. break;
          22. case 40: //下
          23. if (self.snake.direction == 'U') return; // 先進行判斷,如果當前的方向是向上移動,此時我們不能按下鍵
          24. self.snake.changeDirection('D');
          25. self.d = 'D';
          26. break;
          27. }
          28. })
          29. }

          接下來我們判定蛇是否撞到墻而結束

           
          
          1. // 死亡的判斷,超出了表格邊緣的部分
          2. if (this.body[0].col > game.col - 1 || this.body[0].col < 0 || this.body[0].row > game.row - 1 || this.body[0].row < 0) {
          3. alert('撞到墻了哦,一共吃掉了' + game.score + '顆草莓');
          4. this.body.shift();
          5. clearInterval(game.timer);
          6. location.reload();
          7. }


          接下來我們判定蛇是否撞到自己而結束

           
          
          1. // 自己撞到自己的時候會判定死亡
          2. for (var i = 1; i < this.body.length; i++) {
          3. // 如果當前蛇的頭部和身體的某一個部位的 row 和 col 完全重合的時候
          4. if (this.body[0].row == this.body[i].row && this.body[0].col == this.body[i].col) {
          5. alert('撞到自己了,吃掉了' + game.score + '顆草莓');
          6. this.body.shift();
          7. clearInterval(game.timer);
          8. location.reload();
          9. }
          10. }

          Food.js文檔


          食物food類,用來產生食物

           
          
          1. function Food(gameSnake) {
          2. // 食物的位置
          3. this.row = parseInt(Math.random() * gameSnake.row)
          4. this.col = parseInt(Math.random() * gameSnake.col)
          5. }
          6. Food.prototype.render = function() {
          7. game.setHTML(this.row, this.col);
          8. }

          食物隨機生成在單元格中,利用do...while來實現

           
          
          1. function Food(gameSnake) {
          2. var self = this;
          3. // 下面的 do-while 循環語句作用是先創建一個 row 和 col
          4. 然后判斷這個 row 和 col 是否在蛇的身上
          5. //do...while來創建食物
          6. do {
          7. // 食物的位置
          8. this.row = parseInt(Math.random() * gameSnake.row)
          9. this.col = parseInt(Math.random() * gameSnake.col)
          10. } while ((function() {
          11. // 遍歷蛇的 row col 然后和 food 新隨機出來的 row col 進行判斷,是否重合
          12. for (var i = 0; i < gameSnake.snake.body.length; i++) {
          13. if (self.row == gameSnake.snake.body[i].row && self.col == gameSnake.snake.body[i].col) {
          14. return true;
          15. }
          16. }
          17. return false;
          18. })());
          19. }

          文章來源:csdn   作者:

          分享此文一切功德,皆悉回向給文章原作者及眾讀者.

          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務



          Vue按需引入Echarts,并從V4版本升級到V5版本

          前端達人

          一、原本的V4版本按需引入: main.js頁面

          import Echarts from 'echarts/lib/echarts' import 'echarts/lib/chart/pie' import 'echarts/lib/chart/bar' import 'echarts/lib/chart/line' Vue.prototype.echarts = Echarts 
          
          • 1
          • 2
          • 3
          • 4
          • 5

          二、升級版本

          ?。?!注意:要先刪除插件,再重新安裝插件,要不然是沒效果的(我就說咋沒效果)

          • 刪除echarts
          npm uninstall echarts --save 
          
          • 1
          • 再重新安裝echarts
          npm install echarts --save 
          
          • 1

          三、按需處理

          • 在main.js頁面

          參考官方:https://echarts.apache.org/zh/tutorial.html#%E5%9C%A8%E6%89%93%E5%8C%85%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8%20ECharts

          import * as Echarts from 'echarts/core'; import { BarChart, PieChart, LineChart } from 'echarts/charts'; import { TitleComponent, TooltipComponent, GridComponent, LegendComponent } from 'echarts/components'; // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必須的一步 import { CanvasRenderer } from 'echarts/renderers'; Echarts.use([BarChart, PieChart, LineChart, TitleComponent, TooltipComponent, GridComponent, CanvasRenderer, LegendComponent]) Vue.prototype.echarts = Echarts 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14

          四、成功




          文章來源:csdn   作者:

          分享此文一切功德,皆悉回向給文章原作者及眾讀者.

          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

          幾個超火的在線編程網站,別錯過

          前端達人

          大家好,我是魚皮,今天給大家推薦幾個最近非常流行的編程網站,相信能夠幫助大家提高編程效率、更好地學習編程。

          熱門編程網站推薦

          Codepen

          演示視頻:https://www.bilibili.com/video/BV1im4y1X7zb/

          國外的在線前端編程網站,在這里你可以發現很多國外大神編寫的前端代碼,除了各種網頁布局代碼外,更多的是各式各樣好玩的、炫酷的、新穎的前端動畫和特效。

          比如圣誕節快到了,很多小伙伴問我能不能用代碼畫顆圣誕樹。

          我是不會,但是在這個網站中,輸入 “Christmas Tree” 搜索,就能看到各種不同風格的圣誕樹網頁啦!

          Codepen 好玩的網頁

          點擊你看中的網頁,就能進到代碼編輯頁面,在這里,你可以任意修改 HTML、CSS、JavaScript 前端代碼,并且在底部的區域實時瀏覽運行效果,非常地方便!

          在線編輯

          編輯好網頁后,可以在網頁右下角的菜單中進行全屏瀏覽、收藏、克隆、分享等,還能直接將網頁內嵌到我們自己的項目中,或者下載完整代碼包到本地。

          網頁操作

          得益于前端技術的發展,這個網站為開發者提供了搜索項目、在線編輯、分享導出的一條龍服務,使得我們能夠以自主練習的方式輕松學習別人優秀的代碼。

          下面再分享幾個類似的網站。

          CodeSandbox

          代碼沙箱,顧名思義,可以幫助你在隔離的環境中運行前端項目。

          在這里你可以基于豐富的模板來創建自己的沙箱(項目),比如 React、Vue、Angular、VuePress、Svelte 等常見的前端框架:

          創建好沙箱后,你就可以在線編輯代碼、實時查看效果,或者分享沙箱給其他小伙伴啦~

          在線編輯

          JSFiddle

          前端開發的練習場,也可以在線編寫代碼、實時瀏覽效果。相對于 Codepen,個人感覺這個網站的編輯體驗更好:

          在線編輯

          當你在網上看到了一段不錯的 JS 代碼或者插件,不必再下載到本地了。直接把代碼粘貼到 JSFiddle 中,就能以最快的方式查看運行效果了?,F在很多前端組件庫也用到了這種平臺,給開發者所見即所得的體驗。

          JSRUN

          國內的在線編程網站,除了前端外,甚至支持多達 30 多種編程語言的在線調試和運行!

          同 Codepen 一樣,你可以在這里看到很多別人編寫的代碼片段,直接下載。還可以保存和分享你的代碼,建立自己的小代碼合集。

          下載代碼

          不得不說,在國內,這個網站算是做的相當出色的了,訪問速度和功能體驗都很棒!

          Gitpod

          這個平臺要比上面提到的網站更高級一些,它是一個強大的在線 IDE(集成編程環境),提供了 VSCode 風格的編輯器,允許你在線編寫代碼完成開發。

          在線 IDE

          Gitpod 基于容器技術,可以幫助你一鍵編譯、構建、運行任何 GitHub 項目,不止前端!而且每個項目的運行都是互相隔離的,隨用隨創建、用完可隨時回收,非常靈活。

          如果你看中了一個 GitHub 項目,又不想在本地去搭建各種環境去查看它的運行效果,那么最好的方式就是使用 Gitpod 來在線構建和執行。現在也有越來越多的 GitHub 項目接入了 Gitpod,大家只要看到下圖的按鈕,都是可以一鍵部署運行的,大大提高效率!


          以上就是本期分享,有幫助的話幫忙點個  吧,謝謝大家!


          文章來源:csdn   作者:

          分享此文一切功德,皆悉回向給文章原作者及眾讀者.

          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

          代碼寫春聯【js+html版本與python版本】

          前端達人

          文章來源:人人都是產品經理   作者:新榜

          分享此文一切功德,皆悉回向給文章原作者及眾讀者.

          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

          一、春聯一

          1.前言

          需要代碼文末公眾號找我 回復【春聯】即可獲取
          在這里插入圖片描述

          效果展示

          在這里插入圖片描述

          3.代碼展示

          index.html

          <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title>css3春聯切換</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="rotating-text"> <p>春聯Show</p> <p> <span class="word alizarin">上聯:這個需求很簡單</span> <span class="word wisteria">下聯:怎么實現我不管</span> <span class="word peter-river">橫批:明天上線!</span> </p> </div> <script src="js/script.js"></script> </body> </html>  
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24

          style.css

          @import url(https://fonts.googleapis.com/css?family=Lato:600); body { display: flex; justify-content: center; align-items: center; height: 100vh; background: #222; } .rotating-text { font-family: Lato, sans-serif; font-weight: 600; font-size: 36px; color: white; transform: translateX(-80px); } .rotating-text p { display: inline-flex; margin: 0; vertical-align: top; } .rotating-text p .word { position: absolute; display: flex; opacity: 0; } .rotating-text p .word .letter { transform-origin: center center 25px; } .rotating-text p .word .letter.out { transform: rotateX(90deg); transition: 0.32s cubic-bezier(0.6, 0, 0.7, 0.2); } .rotating-text p .word .letter.in { transition: 0.38s ease; } .rotating-text p .word .letter.behind { transform: rotateX(-90deg); } .alizarin { color: #e74c3c; } .wisteria { color: #8e44ad; } .peter-river { color: #3498db; } .emerald { color: #2ecc71; } .sun-flower { color: #f1c40f; }  
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35
          • 36
          • 37
          • 38
          • 39
          • 40
          • 41
          • 42
          • 43
          • 44
          • 45
          • 46
          • 47
          • 48
          • 49
          • 50
          • 51
          • 52
          • 53
          • 54
          • 55
          • 56
          • 57
          • 58
          • 59

          script.js

          var words = document.querySelectorAll(".word"); words.forEach(function (word) { var letters = word.textContent.split(""); word.textContent = ""; letters.forEach(function (letter) { var span = document.createElement("span"); span.textContent = letter; span.className = "letter"; word.append(span); }); }); var currentWordIndex = 0; var maxWordIndex = words.length - 1; words[currentWordIndex].style.opacity = "1"; var rotateText = function () { var currentWord = words[currentWordIndex]; var nextWord = currentWordIndex === maxWordIndex ? words[0] : words[currentWordIndex + 1]; // rotate out letters of current word Array.from(currentWord.children).forEach(function (letter, i) { setTimeout(function () { letter.className = "letter out"; }, i * 80); }); // reveal and rotate in letters of next word nextWord.style.opacity = "1"; Array.from(nextWord.children).forEach(function (letter, i) { letter.className = "letter behind"; setTimeout(function () { letter.className = "letter in"; }, 340 + i * 80); }); currentWordIndex = currentWordIndex === maxWordIndex ? 0 : currentWordIndex + 1; }; rotateText(); setInterval(rotateText, 4000);  
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35
          • 36

          二、春聯二

          1.環境準備

          1.當缺少庫時會有相應提示 黑窗口執行下方命令+包名即可下載安裝
          2.博主此處用的idea 直接Alt+Enter直接下載就成了
          3.idea配置python環境也可以參考此文:Python(含PyCharm及配置)下載安裝以及簡單使用(Idea)

          2.效果展示

          在這里插入圖片描述
          在這里插入圖片描述

          3.代碼

          import io from PIL import Image #import numpy as np import requests def get_word(ch, quality): """獲取單個漢字(字符)的圖片
              ch          - 單個漢字或英文字母(僅支持大寫)
              quality     - 單字分辨率,H-640像素,M-480像素,L-320像素
              """ fp = io.BytesIO(requests.post(url='http://xufive.sdysit.com/tk', data={'ch': ch}).content) im = Image.open(fp) w, h = im.size if quality == 'M': w, h = int(w * 0.75), int(0.75 * h) elif quality == 'L': w, h = int(w * 0.5), int(0.5 * h) return im.resize((w, h)) def get_bg(quality): """獲取春聯背景的圖片""" return get_word('bg', quality) def write_couplets(text, HorV='V', quality='L', out_file=None): """生成春聯
          
              text        - 春聯內容,以空格斷行
              HorV        - H-橫排,V-豎排
              quality     - 單字分辨率,H-640像素,M-480像素,L-320像素
              out_file    - 輸出文件名
              """ usize = {'H': (640, 23), 'M': (480, 18), 'L': (320, 12)} bg_im = get_bg(quality) text_list = [list(item) for item in text.split()] rows = len(text_list) cols = max([len(item) for item in text_list]) if HorV == 'V': ow, oh = 40 + rows * usize[quality][0] + (rows - 1) * 10, 40 + cols * usize[quality][0] else: ow, oh = 40 + cols * usize[quality][0], 40 + rows * usize[quality][0] + (rows - 1) * 10 out_im = Image.new('RGBA', (ow, oh), '#f0f0f0') for row in range(rows): if HorV == 'V': row_im = Image.new('RGBA', (usize[quality][0], cols * usize[quality][0]), 'white') offset = (ow - (usize[quality][0] + 10) * (row + 1) - 10, 20) else: row_im = Image.new('RGBA', (cols * usize[quality][0], usize[quality][0]), 'white') offset = (20, 20 + (usize[quality][0] + 10) * row) for col, ch in enumerate(text_list[row]): if HorV == 'V': pos = (0, col * usize[quality][0]) else: pos = (col * usize[quality][0], 0) ch_im = get_word(ch, quality) row_im.paste(bg_im, pos) row_im.paste(ch_im, (pos[0] + usize[quality][1], pos[1] + usize[quality][1]), mask=ch_im) out_im.paste(row_im, offset) if out_file: out_im.convert('RGB').save(out_file) out_im.show() text = '思前想后幾行代碼筑萬載春秋 扶內保外一千精英帶五千干將' #對聯內容 write_couplets(text, HorV='V', quality='M', out_file='春聯.jpg') #生成普天同慶.jpg對聯圖片  
                      
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
          • 26
          • 27
          • 28
          • 29
          • 30
          • 31
          • 32
          • 33
          • 34
          • 35
          • 36
          • 37
          • 38
          • 39
          • 40
          • 41
          • 42
          • 43
          • 44
          • 45
          • 46
          • 47
          • 48
          • 49
          • 50
          • 51
          • 52
          • 53
          • 54
          • 55
          • 56
          • 57
          • 58
          • 59
          • 60
          • 61
          • 62
          • 63
          • 64
          • 65
          • 66
          • 67
          • 68
          • 69
          • 70
          • 71
          • 72
          • 73
          • 74
          白哥Java
          微信公眾號
          獲取Java面試資料/簡歷模板/項目資料
          3.代碼

          import io from PIL import Image #import numpy as np import requests def get_word(ch, quality): """獲取單個漢字(字符)的圖片 ch - 單個漢字或英文字母(僅支持大寫) quality - 單字分辨率,H-640像素,M-480像素,L-320像素 """ fp = io.BytesIO(requests.post(url='http://xufive.sdysit.com/tk', data={'ch': ch}).content) im = Image.open(fp) w, h = im.size if quality == 'M': w, h = int(w * 0.75), int(0.75 * h) elif quality == 'L': w, h = int(w * 0.5), int(0.5 * h) return im.resize((w, h)) def get_bg(quality): """獲取春聯背景的圖片""" return get_word('bg', quality) def write_couplets(text, HorV='V', quality='L', out_file=None): """生成春聯 text - 春聯內容,以空格斷行 HorV - H-橫排,V-豎排 quality - 單字分辨率,H-640像素,M-480像素,L-320像素 out_file - 輸出文件名 """ usize = {'H': (640, 23), 'M': (480, 18), 'L': (320, 12)} bg_im = get_bg(quality) text_list = [list(item) for item in text.split()] rows = len(text_list) cols = max([len(item) for item in text_list]) if HorV == 'V': ow, oh = 40 + rows * usize[quality][0] + (rows - 1) * 10, 40 + cols * usize[quality][0] else: ow, oh = 40 + cols * usize[quality][0], 40 + rows * usize[quality][0] + (rows - 1) * 10 out_im = Image.new('RGBA', (ow, oh), '#f0f0f0') for row in range(rows): if HorV == 'V': row_im = Image.new('RGBA', (usize[quality][0], cols * usize[quality][0]), 'white') offset = (ow - (usize[quality][0] + 10) * (row + 1) - 10, 20) else: row_im = Image.new('RGBA', (cols * usize[quality][0], usize[quality][0]), 'white') offset = (20, 20 + (usize[quality][0] + 10) * row) for col, ch in enumerate(text_list[row]): if HorV == 'V': pos = (0, col * usize[quality][0]) else: pos = (col * usize[quality][0], 0) ch_im = get_word(ch, quality) row_im.paste(bg_im, pos) row_im.paste(ch_im, (pos[0] + usize[quality][1], pos[1] + usize[quality][1]), mask=ch_im) out_im.paste(row_im, offset) if out_file: out_im.convert('RGB').save(out_file) out_im.show() text = '思前想后幾行代碼筑萬載春秋 扶內保外一千精英帶五千干將' #對聯內容 write_couplets(text, HorV='V', quality='M', out_file='春聯.jpg') #生成普天同慶.jpg對聯圖片
           
          


          11

          222

          文章來源:csdn  作者: 分享此文一切功德,皆悉回向給文章原作者及眾讀者.
          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。
          藍藍設計( www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合