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 国产亚洲精品久久综合影院,日本精品一区二区三区在线 ,国产一区二区不卡视频

          整合營銷服務商

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

          免費咨詢熱線:

          前端開發之使用純CSS實現炫酷Tab切換

          前端開發之使用純CSS實現炫酷Tab切換

          果展示

          選中樣式制作

          • 將每個 tab 設置固定寬度。
          • 每個tab 添加相對定位,居中,行高
          • 添加偽類,偽類設置絕對定位,在底部。
          • 設置偽類的寬度為 0%(偽類會繼承該元素的寬度)
          • 設置選中時候的偽類寬度為50%(視情況而定)
          • 給元素添加過渡樣式

          HTML代碼(wxml)

          			
          				{{item.name}}
          			

          CSS(less):

          		.nav-bar{
          			position: relative;
          			z-index: 10;
          			height: 90upx;
          			white-space: nowrap;
          			background-color: #fbfbfb;
          			
          			.nav-item{
          				display: inline-block;
          				width: 150upx;
          				height: 90upx;
          				text-align: center;
          				line-height: 90upx;
          				font-size: 30upx;
          				color: #a4a4a4;
          				position: relative;
          			}
          			
          			.current{
          				color: #3f3f3f;
          				font-weight: bold;
          			}
          		}

          實現效果大致為這樣的:

          拓展

          PS: 以上為純CSS實現部分,如果項目 tab數量 為通過接口動態獲取的,可以適當加入一些 js 計算。

          JS 思路:

          • 獲取當前選中的 tab 的寬度
          • 獲取當前選中 tab 以及它之前全部 tab 的寬度總和。
          • 獲取當前屏幕寬度
          • 判斷當前選中 tab 是否超過屏幕中心點(當前選中 tab 以及它之前全部 tab 的寬度總和 - 當前選中 tab 寬度/2
          • 移動當前 tabs 到屏幕的重心點位置

          大致為(以微信小程序為例):

          				let width=0; // 當前選中選項卡及它之前的選項卡之和總寬度
          				let nowWidth=0; // 當前選項卡的寬度
          				//獲取可滑動總寬度
          				for (let i=0; i <=index; i++) {
          					let result=await this.getElSize('tab' + i);
          					width +=result.width;
          					if(i===index){
          						nowWidth=result.width;
          					}
          				}
          				// console.log(width, nowWidth, windowWidth)
          				//等待swiper動畫結束再修改tabbar
          				this.$nextTick(()=> {
          					if (width - nowWidth/2 > windowWidth / 2) {
          						//如果當前項越過中心點,將其放在屏幕中心
          						this.scrollLeft=width - nowWidth/2 - windowWidth / 2;
          						console.log(this.scrollLeft)
          					}else{
          						this.scrollLeft=0;
          					}
          					if(typeof e==='object'){
          						this.tabCurrentIndex=index; 
          					}
          					this.tabCurrentIndex=index; 
          				})

          ps: getElSize() 函數代碼為:

          			getElSize(id) { 
          				return new Promise((res, rej)=> {
          					let el=uni.createSelectorQuery().select('#' + id);
          					el.fields({
          						size: true,
          						scrollOffset: true,
          						rect: true
          					}, (data)=> {
          						res(data);
          					}).exec();
          				});
          			},

          這樣就可以實現動態 tab 切換了:

          插件安裝方式,ctrl+shift+p輸入install packages

          CSS3:支持CSS3里的語法高亮。(Sublime3里自帶的CSS高亮不夠用)。安裝后, 打開一個CSS文件,然后按照下面GIF操作,將CSS3高亮作為CSS文件的默認高亮。

          livestyle:調試后實時更新頁面。安裝這個還需要安裝谷歌的插件。

          Emmet:快速生成代碼,用過h5build的應該知道。ul*li*3相當于:

          <ul><li></li><li></li><li></li></ul>
          

          記下語法就ok.

          ConvertToUTF8:編碼轉utf8

          CSScomb:css屬性排序

          html5:html規范包,輸入html+tab生成html規范文檔

          Alignment:代碼對齊,快捷鍵ctrl alt a

          Autoprefixer插件:css3私有前綴自動補全插件

          AutoFileName:自動完成文件名的輸入,如圖片選取,快捷輸入文件名路徑補全

          less sass插件

          JsFormat js格式化插件

          Terminal 命令行插件

          Minify 代碼美化壓縮插件

          Color Highlighter 顏色選擇插件

          快捷鍵

          Ctrl+D 選中光標所占的文本,繼續操作則會選中下一個相同的文本。

          Alt+F3 選中文本按下快捷鍵,即可一次性選擇全部的相同文本進行同時編輯。舉個栗子:快速選中并更改所有相同的變量名、函數名等。

          Ctrl+L 選中整行,繼續操作則繼續選擇下一行,效果和 Shift+↓ 效果一樣。

          Ctrl+Shift+L 先選中多行,再按下快捷鍵,會在每行行尾插入光標,即可同時編輯這些行。

          Ctrl+Shift+M 選擇括號內的內容(繼續選擇父括號)。舉個栗子:快速選中刪除函數中的代碼,重寫函數體代碼或重寫括號內里的內容。

          Ctrl+M 光標移動至括號內結束或開始的位置。

          Ctrl+Enter 在下一行插入新行。舉個栗子:即使光標不在行尾,也能快速向下插入一行。

          Ctrl+Shift+Enter 在上一行插入新行。舉個栗子:即使光標不在行首,也能快速向上插入一行。

          Ctrl+Shift+[ 選中代碼,按下快捷鍵,折疊代碼。

          Ctrl+Shift+] 選中代碼,按下快捷鍵,展開代碼。

          Ctrl+K+0 展開所有折疊代碼。

          Ctrl+← 向左單位性地移動光標,快速移動光標。

          Ctrl+→ 向右單位性地移動光標,快速移動光標。

          shift+↑ 向上選中多行。

          shift+↓ 向下選中多行。

          Shift+← 向左選中文本。

          Shift+→ 向右選中文本。

          Ctrl+Shift+← 向左單位性地選中文本。

          Ctrl+Shift+→ 向右單位性地選中文本。

          Ctrl+Shift+↑ 將光標所在行和上一行代碼互換(將光標所在行插入到上一行之前)。

          Ctrl+Shift+↓ 將光標所在行和下一行代碼互換(將光標所在行插入到下一行之后)。

          Ctrl+Alt+↑ 向上添加多行光標,可同時編輯多行。

          Ctrl+Alt+↓ 向下添加多行光標,可同時編輯多行。

          Ctrl+J 合并選中的多行代碼為一行。舉個栗子:將多行格式的CSS屬性合并為一行。

          Ctrl+Shift+D 復制光標所在整行,插入到下一行。

          Tab 向右縮進。

          Shift+Tab 向左縮進。

          Ctrl+K+K 從光標處開始刪除代碼至行尾。

          Ctrl+Shift+K 刪除整行。

          Ctrl+/ 注釋單行。

          Ctrl+Shift+/ 注釋多行。

          Ctrl+K+U 轉換大寫。

          Ctrl+K+L 轉換小寫。

          Ctrl+Z 撤銷。

          Ctrl+Y 恢復撤銷。

          Ctrl+U 軟撤銷,感覺和 Gtrl+Z 一樣。

          Ctrl+F2 設置書簽

          Ctrl+T 左右字母互換。

          F6 單詞檢測拼寫

          Ctrl+F 打開底部搜索框,查找關鍵字。

          Ctrl+shift+F 在文件夾內查找,與普通編輯器不同的地方是sublime允許添加多個文件夾進行查找,略高端,未研究。

          Ctrl+P 打開搜索框。舉個栗子:1、輸入當前項目中的文件名,快速搜索文件,2、輸入@和關鍵字,查找文件中函數名,3、輸入:和數字,跳轉到文件中該行代碼,4、輸入#和關鍵字,查找變量名。

          Ctrl+G 打開搜索框,自動帶:,輸入數字跳轉到該行代碼。舉個栗子:在頁面代碼比較長的文件中快速定位。

          Ctrl+R 打開搜索框,自動帶@,輸入關鍵字,查找文件中的函數名。舉個栗子:在函數較多的頁面快速查找某個函數。

          Ctrl+: 打開搜索框,自動帶#,輸入關鍵字,查找文件中的變量名、屬性名等。

          Ctrl+Shift+P 打開命令框。場景栗子:打開命名框,輸入關鍵字,調用sublime text或插件的功能,例如使用package安裝插件。

          Esc 退出光標多行選擇,退出搜索框,命令框等。

          Ctrl+Tab 按文件瀏覽過的順序,切換當前窗口的標簽頁。

          Ctrl+PageDown 向左切換當前窗口的標簽頁。

          Ctrl+PageUp 向右切換當前窗口的標簽頁。

          Alt+Shift+1 窗口分屏,恢復默認1屏(非小鍵盤的數字)

          Alt+Shift+2 左右分屏-2列

          Alt+Shift+3 左右分屏-3列

          Alt+Shift+4 左右分屏-4列

          Alt+Shift+5 等分4屏

          Alt+Shift+8 垂直分屏-2屏

          Alt+Shift+9 垂直分屏-3屏

          Ctrl+K+B 開啟/關閉側邊欄。

          F11 全屏模式

          Shift+F11 免打擾模式


          蒙 ArkTS(HarmonyOS ArkTS)是適用于鴻蒙操作系統(HarmonyOS)的 TypeScript 開發框架。在鴻蒙 ArkTS 中實現動態添加 `tabcontent` 的功能,與在 Unity 中使用 ArkTS 的過程類似,都需要通過編程來控制用戶界面的顯示。

          以下是一個基于鴻蒙 ArkTS 的簡單示例,用于動態添加 `tabcontent`:

          1. **定義Tab組件**:首先,你需要定義一個Tab組件,用于表示每個Tab頁。這個組件應該包含所有你希望在Tab頁上展示的內容。

          2. **創建Tab容器**:在ArkTS中,你可以創建一個容器來管理所有的Tab頁面。這個容器可以是一個簡單的StackPanel或者Grid,用于排列所有的Tab內容。

          3. **動態添加Tab內容**:通過編程的方式,你可以根據需要動態地創建Tab組件,并將其添加到Tab容器中。

          下面是一個簡化的ArkTS TypeScript示例代碼,說明如何實現動態添加Tab內容的邏輯:

          import { Component, Prop, h } from '@akeros/arkts';
          
          @Component
          
          export class TabContent extends HTMLElement {
          
          @Prop() tabId: string;
          
          @Prop() content: string;
          
          constructor(private host: HTMLElement) {
          
          super();
          
          this.render();
          
          }
          
          render() {
          
          this.innerHTML=`
          
          <div class="tab-content">
          
          <h2>${this.content}</h2>
          
          </div>
          
          `;
          
          }
          
          }
          
          @Component
          
          export class TabController extends HTMLElement {
          
          private tabs: Map<string, TabContent>=new Map();
          
          addTab(tabId: string, content: string) {
          
          const tabContent=new TabContent(this.host);
          
          tabContent.tabId=tabId;
          
          tabContent.content=content;
          
          this.tabs.set(tabId, tabContent);
          
          this.host.appendChild(tabContent);
          
          }
          
          updateTab(tabId: string, newContent: string) {
          
          const tabContent=this.tabs.get(tabId);
          
          if (tabContent) {
          
          tabContent.content=newContent;
          
          tabContent.render();
          
          }
          
          }
          
          removeTab(tabId: string) {
          
          const tabContent=this.tabs.get(tabId);
          
          if (tabContent) {
          
          tabContent.remove();
          
          this.tabs.delete(tabId);
          
          }
          
          }
          
          }

          在這個示例中,`TabContent` 組件用于表示單個Tab的內容,而 `TabController` 組件則負責管理所有的Tab頁面。`addTab` 方法用于添加新的Tab內容,`updateTab` 方法用于更新現有Tab的內容,而 `removeTab` 方法則用于刪除不再需要的Tab。

          請注意,這個代碼示例是一個簡化的版本,用于說明如何在鴻蒙 ArkTS 中動態添加和更新Tab內容。在實際應用中,你可能需要根據具體的鴻蒙 ArkTS 版本和項目需求來調整代碼。

          在鴻蒙 ArkTS 項目中,你可以通過調用 `TabController` 組件的方法來動態地添加、更新或刪除Tab內容,從而實現靈活的用戶界面管理。


          主站蜘蛛池模板: 无码AV中文一区二区三区| 日本一区二区三区在线视频| 亚洲第一区精品观看| 久久久久一区二区三区| 香蕉久久ac一区二区三区| 精品无码一区二区三区爱欲| 久久国产午夜精品一区二区三区 | V一区无码内射国产| 蜜臀AV无码一区二区三区| 亚洲一区二区三区免费视频| 免费av一区二区三区| 久久精品人妻一区二区三区| 精品在线一区二区三区| 欧洲精品码一区二区三区| 精品一区二区ww| 九九无码人妻一区二区三区| 亚洲欧美成人一区二区三区| 人妻体内射精一区二区三区| 国产av一区二区三区日韩| 无码人妻精品一区二区三18禁| 一区二区三区影院| 精品视频一区二区三区免费| 国产成人精品无码一区二区三区| 精品成人av一区二区三区| 国产精品自在拍一区二区不卡| 精品91一区二区三区| 久久青青草原一区二区| 精品无码国产AV一区二区三区 | 国产精品男男视频一区二区三区| 国模极品一区二区三区| 韩国精品一区视频在线播放| 性色av无码免费一区二区三区| 天天视频一区二区三区| 国产成人高清亚洲一区久久| 日本精品少妇一区二区三区| 日韩精品人妻av一区二区三区| 国模无码人体一区二区| 久久精品一区二区三区不卡| 亚洲综合色一区二区三区小说| 亚洲爆乳精品无码一区二区| av一区二区三区人妻少妇|