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 91在线|porny|欧美,日韩视频免费一区二区三区,亚洲男男视频

          整合營銷服務商

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

          免費咨詢熱線:

          前端開發之使用純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內容,從而實現靈活的用戶界面管理。


          主站蜘蛛池模板: 国产成人精品无码一区二区| 国产福利一区二区三区在线观看| 亚洲乱码国产一区网址| 国产精品538一区二区在线| 国产成人亚洲综合一区| 一区二区三区四区国产| 精品欧洲av无码一区二区14| 制服丝袜一区二区三区| 日韩一区二区三区在线| 久久精品一区二区三区资源网 | 亚洲欧洲精品一区二区三区| 国产综合无码一区二区三区| 暖暖免费高清日本一区二区三区| 色狠狠AV一区二区三区| 中文字幕精品无码一区二区| 国产一区二区在线|播放| 伊人久久精品无码麻豆一区| 中文字幕一区二区三区久久网站| 任你躁国产自任一区二区三区| 色综合视频一区二区三区| 日韩人妻无码免费视频一区二区三区| 精品动漫一区二区无遮挡| 亚洲天堂一区二区三区| 麻豆aⅴ精品无码一区二区| 国产激情无码一区二区| 亚洲av午夜福利精品一区| 中文字幕一区在线播放| 国产一区二区三区高清在线观看 | 亚洲AV成人精品日韩一区18p| 日韩在线一区高清在线| 国产日韩综合一区二区性色AV| 青娱乐国产官网极品一区| 国产在线精品一区在线观看| 日本一区二区三区在线看 | 久久精品一区二区三区AV| 亚洲一区二区三区无码国产| 中文字幕无码不卡一区二区三区| 国产精品综合AV一区二区国产馆 | 日产精品久久久一区二区| 91在线看片一区国产| 麻豆精品人妻一区二区三区蜜桃|