Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 日韩一区二区免费视频,中文字幕免费在线看,亚洲欧美中文字幕

          整合營銷服務商

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

          免費咨詢熱線:

          HTML使用Canvas繪制動畫時鐘

          么是Canvas

          <canvas> 是HTML中的一個元素,它可被用來通過 JavaScript(Canvas API 或 WebGL API)繪制圖形及圖形動畫。

          Canvas API 提供了一個通過 JavaScriptHTML<canvas> 元素來繪制圖形的方式。它可以用于動畫、游戲畫面、數據可視化、圖片編輯以及實時視頻處理等方面。

          <canvas>標簽本身沒有繪圖能力,它僅僅是圖形的容器。在HTML,一般通過Javascript語言來完成實際的操作。

          創建HTML頁面并添加繪圖容器

          本文通過Javascript操作Canvas制作一個簡單的顯示當前時間的動畫時鐘,了解和學習簡單的canvas用法,僅以拋磚引玉。

          首先創建一個HTML文件,為了方便管理,使用一個div標簽包裹兩個canvas標簽,并加上一些簡單的css樣式。

          <!doctype html>
          <html lang="zh-cn">
          <head><title>Canvas繪制動畫時鐘</title>
          <style>
          html,body{margin:0;padding:0}
          #clockWrap {
          	position: relative;
          }
          canvas {
          	position: absolute;
          }
          #clock-ui {
          	z-index: 2;
          }
          #clock-plate {
          	z-index: 1;
          }
          </style>
          </head>
          <body>
            <div id="clockWrap">
            <canvas id="clock-plate"></canvas>
            <canvas id="clock-ui"></canvas>
          </div>
          <script></script>
          </body></html>

          本示例中使用了兩個canvas標簽(為什么使用兩個,一個不是更簡單嗎?),一個用于繪制鐘面,一個根據當前時間實時顯示和更新時針、分針和秒針的動態指向。好了,話不多說,開干。

          繪制鐘面刻度

          一個簡單的時鐘,可以分為鐘面上的刻度和指針。其中刻度和12個數字是固定的,我們可以將它們繪制在當作背景的canvas上(示例中id為clock-plate的canvas)。

          (1)要使用canvas,首先必須通過容器獲取渲染上下文:

          var $=function(id){return document.querySelector(id);}//這個函數只是為了方便獲取dom元素
          const canvasbg=$("#clock-plate"),
                canvas=$("#clock-ui"),
                ctx = canvasbg.getContext("2d"),//背景容器上下文
                ctxUI = canvas.getContext("2d");//指針容器上下文,后面代碼要用
          //定義畫布寬度和高度,時鐘圓直徑,并設置畫布大小
          const oW=1000,oH=800,cW=400,r=cW/2,oX=oW/2,oY=oH/2;
          canvas.width=oW;
          canvas.height=oH;
          canvasbg.width=oW;
          canvasbg.height=oH;

          (2)畫鐘的邊框,為了好看,這里畫兩個圈:

           //畫出時鐘外圓框
            ctx.lineWidth = 12;
          	ctx.beginPath();
          	ctx.arc(oX, oY, r+14, 0, 2 * Math.PI);
          	ctx.stroke();
          	ctx.closePath();
          	ctx.lineWidth = 8;
          	//畫出時鐘內圓框(刻度圈)
          	ctx.beginPath();
          	ctx.arc(oX, oY, r, 0, 2 * Math.PI);
          	ctx.stroke();
          	ctx.closePath();
          	ctx.beginPath();

          邊框效果圖

          (3)繪制刻度線和數字,可以利用三角函數計算出每個刻度的坐標:

          利用三角函數計算刻度線的坐標位置

          鐘面上有12個大格,從正上方12開始,它們的度數分別是270,300,330,0,30,60,90,120,150,180,210,240。然后利用JS的Math.sin和Math.cos分別計算出各大格的坐標。注意:js中Math.sin()和Math.cos()的參數不是角度數弧度。可以使用Math.PI/180*角度來轉化,比如將30度轉換成弧度=Math.PI/180*30

          //繪制鐘表中心點
          	ctx.beginPath();
          	ctx.arc(oX, oY, 8, 0, 2 * Math.PI);//圓心
          	ctx.fill();
          	ctx.closePath();
          	//設置刻度線粗細度
          	ctx.lineWidth = 3;
          	//設置鐘面12個數字的字體、大小和對齊方式
          	ctx.font = "30px serif";
          	ctx.textAlign="center";
          	ctx.textBaseline="middle";
          	var kdx,kdy;
          	//繪制12個大刻度和12個數字
          	//為方便計算,先定義了0-11這12個刻度對應的度數,也可以直接定義對應的弧度。
          	const hd=Math.PI/180,degr=[270,300,330,0,30,60,90,120,150,180,210,240];
          	for(var i=0;i<12;i++){
          		kdx=oX+Math.cos(hd*degr[i])*(r-3);
          		kdy=oY+Math.sin(hd*degr[i])*(r-3);
          		ctx.beginPath();
          		ctx.arc(kdx, kdy, 6, 0, 2 * Math.PI);//畫圓形大刻度
          		ctx.fill();
              //繪制刻度對應的數字
          		ctx.strokeText(i==0? 12 : i,oX+Math.cos(hd*degr[i])*(r-24),oY+Math.sin(hd*degr[i])*(r-24));
          		ctx.closePath();
          	}
          	
          	//繪制小刻度
          	ctx.lineWidth = 2;
          	for(var i=0;i<60;i++){
          		if(i % 5 == 0) continue;//跳過與刻度重疊的刻度
          		x0=Math.cos(hd*i*6);
          		y0=Math.sin(hd*i*6);
          		ctx.beginPath();
          		ctx.moveTo(oX+x0*(r-10), oY+y0*(r-10)); 
          		ctx.lineTo(oX+x0*r, oY+y0*r); //畫短刻度線
          		ctx.stroke(); 
          		ctx.closePath();
          	}

          效果如圖:

          鐘面效果圖

          (4)根據當前時間繪制指針

          習慣上,時針粗短,分針略粗而長,秒針細長。為加大區別,示例中秒針細長并且繪制成紅色。

          function drawHp(i){//繪制時針
          	const x0=Math.cos(hd*i*30),y0=Math.sin(hd*i*30);
          	drawPointer(oX,oY,oX+x0*(r-90),oY+y0*(r-90),10,"#000000");
          }
          function drawMp(i){//繪制分針
          	const x0=Math.cos(hd*i*6),y0=Math.sin(hd*i*6);
          	drawPointer(oX,oY,oX+x0*(r-60),oY+y0*(r-60),5,"#000000");
          }
          function drawSp(i){//繪制秒針
          	const x0=Math.cos(hd*i*6),y0=Math.sin(hd*i*6);
          	drawPointer(oX,oY,oX+x0*(r-20),oY+y0*(r-20),2,"#FF0000");
          }
          //抽取出繪制三種指針時共同的部分,注意指針繪制在渲染上下文ctxUI中
          function drawPointer(ox,oy,tx,ty,width,color){
          	ctxUI.strokeStyle = color;
          	ctxUI.lineCap = "round";
          	ctxUI.lineWidth = width;
          	ctxUI.beginPath();
          	ctxUI.moveTo(ox, oy);
          	ctxUI.lineTo(tx,ty);
          	ctxUI.stroke();
          	ctxUI.closePath();
          }

          現在已經有了繪制三種指針的方法,參數是當前時間的時、分和秒,將根據它們的值確定指針的坐標。不過,因為使用的是默認的convas坐標體系,0值實際指向3的位置,需要小小的修正一下。

          window.requestAnimationFrame(function fn(){
          		var d = new Date();
          		ctxUI.clearRect(0,0,oW,oH);
          		//度數從0開始,而0在3刻度(15分/秒位置),修正為全值減15,如果小于0則修正回來
              var hour=d.getHours(),minute=d.getMinutes()-15,second=d.getSeconds()-15;
          		hour=hour>11? hour-15 : hour-3;
          		drawHp(hour>=0? hour : 12+hour);
          		drawMp(minute>=0? minute : 60+minute);
          		drawSp(second>=0? second : 60+second);
          		window.requestAnimationFrame(fn);
          });

          接下來,調用window.requestAnimationFrame,在其中繪制并更新指標的位置。看看效果如何:

          指針繪制情況與實際時間相符

          貌似效果有了,截圖時電腦上的時間是10時17分,指針繪制上,時針指向10時,分針指向17。嗯,感覺有點別扭?對了,時針和分針怎么是端端正正地指向它們的整時整分刻度上呢?實際鐘表上時針和分針是展示動態進度的,此時時針應該越過10時的位置才對。沒關系,我們在繪制時針和分針時別點東西,讓它的角度值加上分針和秒針的值試試。

          //修改后的繪制三種指針的方法
          function drawHp(i,f,m){//繪制時針,參數:時,分,秒
          	const x0=Math.cos(hd*(i+(f/60)+(m/600))*30),y0=Math.sin(hd*(i+(f/60)+(m/600))*30);
          	drawPointer(oX,oY,oX+x0*(r-90),oY+y0*(r-90),10,"#000000");
          }
          function drawMp(i,f){//繪制分針,參數,分,秒
          	const x0=Math.cos(hd*(i+(f/60))*6),y0=Math.sin(hd*(i+(f/60))*6);
          	drawPointer(oX,oY,oX+x0*(r-60),oY+y0*(r-60),5,"#000000");
          }
          function drawSp(i){//繪制秒針
          	const x0=Math.cos(hd*i*6),y0=Math.sin(hd*i*6);
          	drawPointer(oX,oY,oX+x0*(r-20),oY+y0*(r-20),2,"#FF0000");
          }

          再來看看效果,嗯,立竿見影呀:

          指針指向更合理了

          到此為止,canvas繪制一個簡易時鐘就完成了。下面繼續優化一下。剛才使用requestAnimationFrame方法即時更新繪制情況。這個方法與刷新率有關,看看mdn上面怎么說的:

          window.requestAnimationFrame() 方法會告訴瀏覽器你希望執行一個動畫。它要求瀏覽器在下一次重繪之前,調用用戶提供的回調函數。

          對回調函數的調用頻率通常與顯示器的刷新率相匹配。雖然 75hz、120hz 和 144hz 也被廣泛使用,但是最常見的刷新率還是 60hz(每秒 60 個周期/幀)。為了提高性能和電池壽命,大多數瀏覽器都會暫停在后臺選項卡或者隱藏的 <iframe> 中運行的 requestAnimationFrame()。

          本示例中,更新指針的位置并不需要很高的刷新頻率,可以通過節流進行一下優化:

          var fps = 5, fpsInterval = 1000 / fps,lastTime = new Date().getTime(); //記錄上次執行的時間
          function runStep() {
              requestAnimationFrame(runStep);
              var d=new Date(),now = d.getTime()
              var elapsed = now - lastTime;
              if (elapsed > fpsInterval) {
          				ctxUI.clearRect(0,0,oW,oH);
                  lastTime = now - (elapsed % fpsInterval); 
          			//度數從0開始,而0在3刻度(15分/秒位置),修正為全值-15,如果小于0則用60減回
                  var hour=d.getHours(),minute=d.getMinutes()-15,second=d.getSeconds()-15;//console.log(d.getSeconds(),second);
                  hour=hour>11? hour-15 : hour-3;
                  drawHp(hour>=0? hour : 12+hour,minute+15,second+15);
                  drawMp(minute>=0? minute : 60+minute,second+15);
                  drawSp(second>=0? second : 60+second);
              }
          }
          runStep();

          當然,實現時鐘的方法是很多,比如可以使用畫布的旋轉(rotate方法)來實現指針的動態轉動等等。

          完整HTML+JS源碼:

          <html>
          <head>
          <title>圖文混排</title>
          <style type="text/css">
          <!--
          body{
              background-color:543b32; /* 頁面背景顏色 */
              margin:0px;
              padding:0px;
          }
          img{
              float:left; /* 文字環繞圖片 */
          }
          p{
              color:#FFFF00; /* 文字顏色 */
              margin:0px;
              padding-top:10px;
              padding-left:5px;
              padding-right:5px;
          }
          span{
              float:left; /* 首字放大 */
              font-size:85px;
              font-family:黑體;
              margin:0px;
              padding-right:5px;
          }
          -->
          </style>
          </head>
          <body>
          <img src="hop.jpg" border="0">
          <p><span>河</span>馬,偶蹄目、河馬科,英文名hoppopotamus。原來遍布非洲所有深水的河流與溪流中,現在范圍已縮小,主要居住在非洲熱帶的河流間。它們喜歡棲息在河流附近沼澤地和有蘆葦的地方。生活中的覓食、交配、產仔、哺乳也均在水中進行。</p>
          <p>河馬的特點是吻寬嘴大,四肢短粗、軀體象個粗圓桶。胃3室不反芻。鼻孔在吻端上面,與上方的眼睛和耳朵呈一條直線。這樣它全體潛伏水中只須將頭頂露出水面就能嗅、視、聽兼呼吸了。體長3.75-4.6米,尾長約56厘米,肩高約1.5米,體重3-4.6噸,下犬齒長約60厘米,可重達3公斤。河馬皮膚排出的液體含紅色色素,經皮膚反射顯得象是紅色的,引起了河馬出“血汗”的說法。</p>
          <p>河馬極善游泳,在受驚時,一般避入水中。每天大部分時間在水中,潛伏水下時一般每3、5分鐘把頭露出水面呼吸一次,但可潛伏約半小時不出水面來換氣。它們的皮膚長時間離水會干裂。河馬成對或結成小群活動,老年雄性常單獨活動。夜行性:它們幾乎整個白天都在河水中或是河流附近睡覺或休息,晚上出來吃食,有時會順水游出30多公里覓食。主要以水生植物為食;偶食陸地作物,以草為主,有時到田地去吃莊稼,食物短缺時,它們也吃肉,據稱,河馬是路地上最大的食肉動物(雜食)。河馬無定居:不在一個地方長期停留,每隔數日便遷到新地方去。</p>
          <p>河馬繁殖期不固定,全年均繁殖,每產一仔,孕期227-240天,仔獸出生時體重27-45公斤。在人為飼養下約3歲性成熟,在野外5、6歲成熟。壽命40-50年。河馬的皮下脂肪約5厘米厚。人們常獵殺它取其脂肪、肉和厚皮。脂肪可得90公斤。當地人非常珍視它的肉,肉味略同于野豬肉。牙齒質量也很好,是珍貴的雕刻材料,可作為象牙替代品。</p>
          </body>
          </html>
          

          #34;夏哉ke":quangneng.com/5065/

          HTML5的介紹和案例實戰

          HTML5 是 HTML 的第五個主要版本,是用于構建和呈現網頁內容的最新標準。它引入了許多新特性和改進,使得開發者能夠創建更豐富、更交互性的網頁應用。HTML5 的一些主要特性包括:

          1. 語義化標記: HTML5 引入了許多新的語義化標簽,如 <header>, <footer>, <nav>, <article> 等,使得開發者能夠更清晰地描述網頁的結構,有助于搜索引擎優化(SEO)和可訪問性(Accessibility)。
          2. 多媒體支持: HTML5 提供了原生支持音頻和視頻的 <audio> 和 <video> 標簽,不再需要依賴第三方插件如 Flash。開發者可以直接在網頁中嵌入音頻和視頻,并控制播放、暫停等操作。
          3. Canvas 繪圖: HTML5 的 <canvas> 元素允許開發者使用 JavaScript 繪制圖形、動畫和其他視覺效果。Canvas 提供了一種靈活的方式來創建交互式圖形,如游戲、數據可視化等。
          4. 本地存儲: HTML5 引入了 Web Storage 和 IndexedDB,允許開發者在客戶端存儲數據,而無需依賴服務器。這對于創建離線應用程序和提高性能有很大幫助。
          5. 響應式設計: HTML5 提供了更好的支持響應式設計的能力,使得網頁能夠適應不同設備的屏幕大小和分辨率,提供更好的用戶體驗。
          6. Web 組件: HTML5 引入了 Web Components,允許開發者創建可重用的自定義 HTML 元素,從而提高開發效率和代碼復用性。
          7. 更嚴格的語法和錯誤處理: HTML5 規范對 HTML 的語法進行了更新和優化,使得瀏覽器能夠更好地處理語法錯誤,并提供更準確的錯誤提示。

          案例實戰可以是:

          1. 音樂播放器應用: 使用 HTML5 的 <audio> 標簽和 JavaScript,創建一個簡單的音樂播放器應用,允許用戶播放、暫停和切換音樂。
          2. 圖像畫廊: 使用 HTML5 的 <canvas> 元素和 JavaScript,在網頁上創建一個交互式的圖像畫廊,允許用戶查看和縮放圖片。
          3. 在線游戲: 使用 HTML5 和 Canvas 繪圖功能,開發一個簡單的在線游戲,如拼圖、打磚塊等,展示 HTML5 在游戲開發中的應用。
          4. 數據可視化應用: 使用 HTML5、CSS 和 JavaScript,創建一個數據可視化應用,展示數據圖表、地圖等,并允許用戶與數據進行交互。
          5. 響應式網站: 使用 HTML5 和 CSS3,創建一個響應式網站,使得網頁能夠在不同設備上自適應布局,并提供良好的用戶體驗。

          這些案例實戰可以幫助開發者熟悉 HTML5 的各種特性和用法,并在實際項目中應用它們來構建豐富、交互性強的網頁應用。

          CSS3的介紹和案例實戰

          CSS3 是 CSS 的第三個主要版本,是用于樣式化網頁內容的最新標準。它引入了許多新特性和改進,使得開發者能夠創建更漂亮、更交互性的網頁設計。CSS3 的一些主要特性包括:

          1. 新的選擇器: CSS3 引入了許多新的選擇器,如屬性選擇器、偽類選擇器和偽元素選擇器,使得開發者能夠更精確地選中文檔中的元素,并對其應用樣式。
          2. 盒子模型: CSS3 提供了更靈活的盒子模型,允許開發者使用 box-sizing 屬性控制盒子的尺寸計算方式,包括 content-box 和 border-box,從而更方便地設計布局。
          3. 圓角和陰影: CSS3 提供了 border-radius 屬性和 box-shadow 屬性,使得開發者能夠輕松地為元素添加圓角和陰影效果,增強頁面的美觀度。
          4. 漸變和背景圖像: CSS3 允許開發者使用線性漸變和徑向漸變來創建平滑的過渡效果,同時支持多個背景圖像疊加,使得頁面的背景更加豐富多彩。
          5. 動畫和過渡: CSS3 提供了 @keyframes 規則和 transition 屬性,使得開發者能夠創建簡單的動畫和過渡效果,而無需使用 JavaScript 或 Flash。
          6. 響應式布局: CSS3 提供了媒體查詢(Media Queries)功能,允許開發者根據設備的特性和屏幕大小來應用不同的樣式,從而創建響應式布局的網頁設計。
          7. 字體和文本效果: CSS3 支持自定義字體(@font-face),以及文本陰影、文字溢出效果等,使得開發者能夠更加靈活地設計文本樣式。
          8. Flexbox 和 Grid 布局: CSS3 引入了 Flexbox 和 Grid 布局模型,使得開發者能夠更方便地設計復雜的網頁布局,實現水平和垂直居中、自適應布局等功能。

          案例實戰可以是:

          1. 響應式導航菜單: 使用 CSS3 的媒體查詢和動畫效果,創建一個響應式導航菜單,在不同設備上呈現不同的布局和樣式。
          2. 圖片展示畫廊: 使用 CSS3 的過渡和漸變效果,創建一個圖片展示畫廊,實現圖片的平滑過渡和點擊放大效果。
          3. 卡片式布局: 使用 CSS3 的 Flexbox 或 Grid 布局,創建一個卡片式布局的網頁,實現卡片的等高排列和自適應布局。
          4. 輪播圖效果: 使用 CSS3 的動畫效果,創建一個簡單的輪播圖效果,實現圖片的自動切換和淡入淡出動畫。
          5. 按鈕樣式設計: 使用 CSS3 的邊框樣式、陰影效果和漸變背景,設計一組漂亮的按鈕樣式,增強用戶交互體驗。

          這些案例實戰可以幫助開發者熟悉 CSS3 的各種特性和用法,并在實際項目中應用它們來實現各種炫酷的網頁設計效果。

          JavaScript的介紹和案例實戰:

          JavaScript 是一種高級的、動態的、解釋性的編程語言,主要用于為網頁添加交互性和動態功能。它是 Web 開發中最常用的腳本語言之一,可以直接嵌入到 HTML 中,也可以作為外部文件引入到 HTML 頁面中。

          JavaScript 的特點包括:

          1. 客戶端腳本語言: JavaScript 主要運行在用戶的瀏覽器中,用于處理網頁的交互邏輯,與用戶進行實時的交互。
          2. 輕量級和靈活性: JavaScript 的語法簡潔明了,學習曲線較為平緩,開發者可以快速上手。同時,JavaScript 也是一種靈活的語言,支持多種編程范式,如面向對象編程(OOP)、函數式編程等。
          3. 事件驅動和異步編程: JavaScript 是一種事件驅動的語言,可以通過監聽用戶的交互事件(如點擊、滾動、鍵盤輸入等)來觸發相應的操作。同時,JavaScript 也支持異步編程模式,通過回調函數、Promise 或 async/await 等機制來處理異步操作,保持頁面的流暢性和響應性。
          4. 跨平臺性: 由于 JavaScript 運行在瀏覽器中,因此具有較好的跨平臺性,無論是在 Windows、macOS、Linux 還是移動設備上,都能夠正常運行。
          5. 豐富的生態系統: JavaScript 生態系統非常豐富,擁有大量的開源庫和框架,如jQuery、React、Angular、Vue.js 等,可以幫助開發者快速構建復雜的 Web 應用程序。

          案例實戰可以是:

          1. 交互式表單驗證: 使用 JavaScript 實現表單的實時驗證功能,包括驗證必填字段、郵箱格式、密碼強度等,并在用戶輸入不符合要求時給出相應的提示信息。
          2. 圖片輪播效果: 使用 JavaScript 編寫輪播圖組件,實現圖片的自動播放、手動切換、指示器顯示等功能,提升網頁的視覺效果和用戶體驗。
          3. 無限滾動加載: 使用 JavaScript 監聽頁面滾動事件,當用戶滾動到頁面底部時,自動加載更多的內容,實現無限滾動效果,提升頁面的內容呈現效果。
          4. 實時搜索功能: 使用 JavaScript 編寫實時搜索組件,當用戶在搜索框中輸入關鍵字時,自動展示匹配的搜索結果,并支持關鍵字高亮顯示,提升搜索體驗。
          5. 模態框和彈出窗口: 使用 JavaScript 編寫模態框(Modal)或彈出窗口(Popup)組件,實現在頁面上彈出特定內容的交互式窗口,如登錄框、消息提示框等。

          這些案例實戰可以幫助開發者熟悉 JavaScript 的語法和常用操作,理解 JavaScript 在網頁開發中的應用場景,從而更好地運用 JavaScript 來實現各種動態和交互式的功能。


          主站蜘蛛池模板: 精品无码国产一区二区三区麻豆| 精品91一区二区三区| 国产凸凹视频一区二区| 日本免费一区二区久久人人澡| 国产成人精品久久一区二区三区| 国产不卡视频一区二区三区| 成人免费一区二区无码视频 | 久久无码AV一区二区三区| 男人的天堂亚洲一区二区三区| 亚洲熟妇av一区| 无码人妻精品一区二区三区在线| 久久一区二区三区99| 美女免费视频一区二区| 国产乱码精品一区三上 | 精品女同一区二区三区在线| 日韩一区二区视频| 亚洲国产高清在线精品一区| 在线播放一区二区| 亚洲高清日韩精品第一区 | 一区二区3区免费视频| 日本一区二区在线不卡| 美日韩一区二区三区| 国模大胆一区二区三区| 色婷婷av一区二区三区仙踪林| 伦精品一区二区三区视频| 天堂一区二区三区在线观看| 国产精品av一区二区三区不卡蜜| 久热国产精品视频一区二区三区| 五十路熟女人妻一区二区| 一区二区无码免费视频网站| 精品国产一区二区三区| 国产无人区一区二区三区| 激情爆乳一区二区三区| 一区二区三区中文| 肉色超薄丝袜脚交一区二区| 麻豆一区二区免费播放网站| 福利电影一区二区| 国产亚洲日韩一区二区三区| 无码视频一区二区三区在线观看| 亚洲AV成人一区二区三区观看 | 国产精品熟女一区二区|