国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端:html實(shí)現(xiàn)頁(yè)面切換、頂部標(biāo)簽欄,類似于瀏覽器的頂部標(biāo)簽欄(完整版)

這篇具有很好參考價(jià)值的文章主要介紹了前端:html實(shí)現(xiàn)頁(yè)面切換、頂部標(biāo)簽欄,類似于瀏覽器的頂部標(biāo)簽欄(完整版)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

效果

前端:html實(shí)現(xiàn)頁(yè)面切換、頂部標(biāo)簽欄,類似于瀏覽器的頂部標(biāo)簽欄(完整版),前端,前端,html,javascript

代碼

<!DOCTYPE html>
<html>

  <head>
    <style>
    /* 左側(cè)超鏈接列表 */
    .link {
      display: block;
      padding: 8px;
      background-color: #f2f2f2;
      cursor: pointer;
    }

    /* 頂部標(biāo)簽欄 */
    #tabsContainer {
      width:98%;
      display: flex;
      align-items: center;
      overflow-x: auto; /* 添加橫向滾動(dòng) */
      white-space: nowrap; /* 防止標(biāo)簽換行 */
    }
    #tabsContainer::-webkit-scrollbar {
      display: none; /* 隱藏Webkit瀏覽器的滾動(dòng)條 */
    }
    /* 關(guān)閉按鈕的寬度 */
    .line2{
      width:2%;
    }
    #all_close{
      cursor: pointer;
      display: none;
    }
    .tab_position:hover #all_close {
      display: block;
    }
    .tab_position {
			display: flex;
			align-items: center;/*垂直居中*/
		}
    .tab {
      display: flex;
      align-items: center;
      background-color: #f2f2f2;
      cursor: pointer;
      position: relative;
      margin-right: 10px;
      border-radius: 3px;
    }

    /* 標(biāo)簽標(biāo)題 */
    .tab .title {
      padding: 5px 15px 5px 15px;
      user-select: none; /* 禁止文字復(fù)制 */
    }

    /* 標(biāo)簽關(guān)閉按鈕 */
    .tab .close-btn {
      font-size: 10px;
      font-weight: bold;
      cursor: pointer;
      padding: 5px 5px 5px 0;
      user-select: none; /* 禁止文字復(fù)制 */
    }

    .tab.active {
      background-color: #ccc;
    }

    /* 左側(cè)內(nèi)容 */
    #links {
      float: left;
      width: 200px;
      padding: 10px;
    }

    #tabs {
      padding: 10px;
    }
    /* 右側(cè) */
    #content {
      border: 1px solid #ccc;
      padding: 10px;
      overflow: auto;
    }
  </style>
  </head>

  <body>
    <div id="links">
      <!-- 在這里添加你的超鏈接 -->
      <a href="#" onclick="loadContent('page1.html', '這是我的超鏈接標(biāo)題1,我要測(cè)試滾動(dòng)條');
        return
        false;"
        class="link">超鏈接1</a>
      <a href="#" onclick="loadContent('page2.html', '這是我的超鏈接標(biāo)題2,我要測(cè)試滾動(dòng)條');
        return
        false;"
        class="link">超鏈接2</a>
      <a href="#" onclick="loadContent('page3.html', '這是我的超鏈接標(biāo)題3,我要測(cè)試滾動(dòng)條');
        return
        false;"
        class="link">超鏈接3</a>
      <a href="#" onclick="loadContent('page4.html', '這是我的超鏈接標(biāo)題4,我要測(cè)試滾動(dòng)條');
        return
        false;"
        class="link">超鏈接4</a>
      <a href="#" onclick="loadContent('page5.html', '這是我的超鏈接標(biāo)題5,我要測(cè)試滾動(dòng)條');
        return
        false;"
        class="link">超鏈接5</a>
      <a href="#" onclick="loadContent('page6.html', '這是我的超鏈接標(biāo)題6,我要測(cè)試滾動(dòng)條');
        return
        false;"
        class="link">超鏈接6</a>
      <a href="#" onclick="loadContent('page7.html', '這是我的超鏈接標(biāo)題7,我要測(cè)試滾動(dòng)條');
        return
        false;"
        class="link">超鏈接7</a>
      <a href="#" onclick="loadContent('page8.html', '這是我的超鏈接標(biāo)題8,我要測(cè)試滾動(dòng)條');
        return
        false;"
        class="link">超鏈接8</a>
      <a href="#" onclick="loadContent('page9.html', '這是我的超鏈接標(biāo)題9,我要測(cè)試滾動(dòng)條');
        return
        false;"
        class="link">超鏈接9</a>
    </div>
    <div class="tab_position">
      <div id="tabsContainer"></div>
      <div id="line2">
        <div id="all_close" onclick="all_close()">X</div>
      </div>
    </div>
    <div id="content"></div>
    <script>
    var tabsContainer = document.getElementById('tabsContainer');
    var contentContainer = document.getElementById('content');
    var activeTab = null;

    // 加載內(nèi)容到右側(cè)窗口
    function loadContent(url, tabName) {
      var existingTab = tabsContainer.querySelector('[data-url="' + url + '"]');
      if (existingTab) {
        setActiveTab(existingTab);
        return;
      }

      // 檢查標(biāo)簽頁(yè)數(shù)量是否已達(dá)上限
      var tabs = Array.from(tabsContainer.getElementsByClassName('tab'));
      if (tabs.length >= 7) {
        alert('已達(dá)到標(biāo)簽頁(yè)數(shù)量上限');
        return;
      }

      // 隱藏當(dāng)前頁(yè)面內(nèi)容
      if (activeTab) {
        activeTab.classList.remove('active');
        var activeUrl = activeTab.getAttribute('data-url');
        var activeContent = document.getElementById(activeUrl);
        activeContent.style.display = 'none';
      }

      // 顯示新頁(yè)面內(nèi)容
      var content = document.getElementById(url);
      if (content) {
        content.style.display = 'block';
      } else {
        content = document.createElement('div');
        content.id = url;
        content.style.display = 'block';
        contentContainer.appendChild(content);

        var iframe = document.createElement('iframe');
        iframe.src = url;
        iframe.frameborder = '0';
        iframe.style.width = '100%';
        iframe.style.height = '100%';
        content.appendChild(iframe);
      }

      createTabAndSetActive(url, tabName);
    }


    function createTabAndSetActive(url, tabName) {
      // 如果標(biāo)簽已存在,則激活該標(biāo)簽
      var tab = tabsContainer.querySelector('[data-url="' + url + '"]');
      if (tab) {
        setActiveTab(tab);
        return;
      }

      // 創(chuàng)建新的標(biāo)簽
      tab = document.createElement('div');
      tab.className = 'tab';
      tab.setAttribute('data-url', url);

      var title = document.createElement('span');
      title.className = 'title';
      title.innerText = tabName;
      tab.appendChild(title);

      var closeBtn = document.createElement('span');
      closeBtn.innerText = 'X';
      closeBtn.className = 'close-btn';
      closeBtn.addEventListener('click', function (event) {
        event.stopPropagation();
        closeTab(tab);
      });
      tab.appendChild(closeBtn);

      // 點(diǎn)擊標(biāo)簽頁(yè)切換內(nèi)容
      tab.addEventListener('click', function () {
        loadContent(url, tabName);
        setActiveTab(tab);
      });

      tabsContainer.appendChild(tab);
      setActiveTab(tab);
    }

    // 設(shè)置活動(dòng)標(biāo)簽頁(yè)樣式
    function setActiveTab(tab) {
      var tabs = Array.from(tabsContainer.getElementsByClassName('tab'));
      tabs.forEach(function (t) {
        t.classList.remove('active');

        // 隱藏標(biāo)簽頁(yè)對(duì)應(yīng)的內(nèi)容
        var tabUrl = t.getAttribute('data-url');
        var tabContent = document.getElementById(tabUrl);
        if (tabContent) {
          tabContent.style.display = 'none';
        }
      });

      tab.classList.add('active');
      activeTab = tab;

      // 顯示當(dāng)前標(biāo)簽頁(yè)對(duì)應(yīng)的內(nèi)容
      var url = tab.getAttribute('data-url');
      var content = document.getElementById(url);
      if (content) {
        content.style.display = 'block';
      }
    }

    // 關(guān)閉標(biāo)簽頁(yè)
    function closeTab(tab) {
      var isActiveTab = (tab === activeTab);
      var nextActiveTab = tab.previousElementSibling || tab.nextElementSibling;

      tab.parentNode.removeChild(tab);

      // 如果關(guān)閉的是活動(dòng)標(biāo)簽頁(yè)且還有其他標(biāo)簽頁(yè)存在,則將頁(yè)面鎖定到下一個(gè)標(biāo)簽頁(yè)
      if (isActiveTab && nextActiveTab) {
        setActiveTab(nextActiveTab);
        loadContent(nextActiveTab.getAttribute('data-url'), nextActiveTab.querySelector('.title').innerText);
      }

      // 如果關(guān)閉的是活動(dòng)標(biāo)簽頁(yè)且沒有其他標(biāo)簽頁(yè)存在,則清空內(nèi)容和活動(dòng)標(biāo)簽頁(yè)
      if (isActiveTab && !nextActiveTab) {
        contentContainer.innerHTML = '';
        activeTab = null;
      }
      // 隱藏當(dāng)前頁(yè)面內(nèi)容
      if (isActiveTab) {
        var activeUrl = tab.getAttribute('data-url');
        var activeContent = document.getElementById(activeUrl);
        activeContent.style.display = 'none';
      }
    }

    // 關(guān)閉全部未激活標(biāo)簽頁(yè)
    function all_close() {     
      var confirmation = confirm('是否關(guān)閉全部標(biāo)簽頁(yè)?'); // 顯示確認(rèn)和取消提示框
      if (confirmation) {
        var tabs = Array.from(tabsContainer.getElementsByClassName('tab'));
        tabs.forEach(function (tab) {
          if (!tab.classList.contains('active')) {
            closeTab(tab);
          }
        });
        // 清空內(nèi)容、活動(dòng)標(biāo)簽頁(yè)和標(biāo)簽導(dǎo)航欄
        contentContainer.innerHTML = '';
        activeTab = null;
        tabsContainer.innerHTML = '';
      } else {
        console.log('取消')
      }       
    }
    

    var isMouseDown = false;
    var startX = 0;
    var scrollLeft = 0;

    tabsContainer.addEventListener('mousedown', function (e) {
      isMouseDown = true;
      startX = e.pageX - tabsContainer.offsetLeft;
      scrollLeft = tabsContainer.scrollLeft;
    });

    tabsContainer.addEventListener('mouseleave', function () {
      isMouseDown = false;
    });

    tabsContainer.addEventListener('mouseup', function () {
      isMouseDown = false;
    });

    tabsContainer.addEventListener('mousemove', function (e) {
      if (!isMouseDown) return;
      e.preventDefault();
      var x = e.pageX - tabsContainer.offsetLeft;
      var walk = (x - startX) * 2; // 調(diào)整滾動(dòng)速度
      tabsContainer.scrollLeft = scrollLeft - walk;
    });
  </script>
  </body>

</html>

解決BUG:關(guān)閉單頁(yè)時(shí),單頁(yè)數(shù)據(jù)未清空,導(dǎo)致再次打開單頁(yè)時(shí)出現(xiàn)內(nèi)容仍然存在的問題文章來源地址http://www.zghlxwxcb.cn/news/detail-681519.html

// 關(guān)閉標(biāo)簽頁(yè)
function closeTab(tab) {
	var isActiveTab = (tab === activeTab);
	var nextActiveTab = tab.previousElementSibling || tab.nextElementSibling;
	var tabUrl = tab.getAttribute('data-url');
	var tabContent = document.getElementById(tabUrl);
	tab.parentNode.removeChild(tab);
	tabContent.parentNode.removeChild(tabContent); // 移除對(duì)應(yīng)的內(nèi)容
	if (isActiveTab) {
		activeTab = null; // 清空活動(dòng)標(biāo)簽頁(yè)
	}
	// 如果關(guān)閉的是活動(dòng)標(biāo)簽頁(yè)且還有其他標(biāo)簽頁(yè)存在,則將頁(yè)面鎖定到下一個(gè)標(biāo)簽頁(yè)
	if (isActiveTab && nextActiveTab) {
		setActiveTab(nextActiveTab);
		loadContent(nextActiveTab.getAttribute('data-url'), nextActiveTab.querySelector('.title').innerText);
	}
	// 如果關(guān)閉的是活動(dòng)標(biāo)簽頁(yè)且沒有其他標(biāo)簽頁(yè)存在,則清空內(nèi)容和活動(dòng)標(biāo)簽頁(yè)
	if (isActiveTab && !nextActiveTab) {
		contentContainer.innerHTML = '';
	}
}

到了這里,關(guān)于前端:html實(shí)現(xiàn)頁(yè)面切換、頂部標(biāo)簽欄,類似于瀏覽器的頂部標(biāo)簽欄(完整版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 實(shí)現(xiàn)html頁(yè)面插入視頻的自動(dòng)播放、視頻播放結(jié)束后的事件觸發(fā)(video標(biāo)簽)

    要實(shí)現(xiàn)自動(dòng)播放需要同時(shí)使用autoplay和muted屬性,簡(jiǎn)單示例代碼如下: html代碼: css代碼: 要實(shí)現(xiàn)視頻播放結(jié)束后的事件觸發(fā)需要使用addEventListener(“ended”, function () {})進(jìn)行事件監(jiān)聽,簡(jiǎn)單示例代碼如下: html代碼: css代碼: js代碼: (1)菜鳥網(wǎng)址:https://www.runoob.com/tags/t

    2024年02月05日
    瀏覽(27)
  • JS監(jiān)聽瀏覽器關(guān)閉、刷新及切換標(biāo)簽頁(yè)觸發(fā)事件

    蠻簡(jiǎn)單的東西,知道就會(huì),不知道就不會(huì),沒什么邏輯可言。簡(jiǎn)單記錄一下,只為加深點(diǎn)兒印象。 visibilitychange visibilitychange可以監(jiān)聽到瀏覽器的切換標(biāo)簽頁(yè)。? 直接上代碼:? beforeunload? beforeunload可以監(jiān)聽到頁(yè)面的關(guān)閉,頁(yè)簽切換不會(huì)觸發(fā) 關(guān)閉瀏覽器窗口的時(shí)候觸發(fā) 通過點(diǎn)

    2024年02月08日
    瀏覽(27)
  • HTML標(biāo)簽根據(jù)瀏覽器窗口大小自適應(yīng)

    1.使用calc實(shí)現(xiàn)自適應(yīng) (需要父盒子寬高固定) 2.使用flex布局,兩欄布局,三欄布局 文章就到這里啦,本人功力尚淺,若有不妥之處請(qǐng)諒解指正,謝謝!

    2024年02月11日
    瀏覽(24)
  • 前端vue基于html2canva jspdf 實(shí)現(xiàn)前端頁(yè)面加水印 并導(dǎo)出頁(yè)面PDF

    前端vue基于html2canva jspdf 實(shí)現(xiàn)前端頁(yè)面加水印 并導(dǎo)出頁(yè)面PDF

    隨著技術(shù)的發(fā)展,開發(fā)的復(fù)雜度也越來越高,傳統(tǒng)開發(fā)方式將一個(gè)系統(tǒng)做成了整塊應(yīng)用,經(jīng)常出現(xiàn)的情況就是一個(gè)小小的改動(dòng)或者一個(gè)小功能的增加可能會(huì)引起整體邏輯的修改,造成牽一發(fā)而動(dòng)全身。通過組件化開發(fā),可以有效實(shí)現(xiàn)單獨(dú)開發(fā),單獨(dú)維護(hù),而且他們之間可以隨

    2024年02月03日
    瀏覽(29)
  • 如何處理html5新標(biāo)簽的瀏覽器兼容問題?

    處理HTML5新標(biāo)簽的瀏覽器兼容問題,特別是針對(duì)較舊的瀏覽器,可以采用以下幾種方法: 使用JavaScript創(chuàng)建元素 : 對(duì)于不支持HTML5新標(biāo)簽的瀏覽器,可以使用JavaScript(特別是Document Object Model,DOM)來創(chuàng)建這些元素。例如,可以使用 document.createElement(\\\'article\\\') 來在DOM中創(chuàng)建 art

    2024年01月21日
    瀏覽(25)
  • CSS樣式前端HTML頁(yè)面常用CSS效果實(shí)現(xiàn)及其相關(guān)配置信息------前端入門基礎(chǔ)教程

    !DOCTYPE html !-- 這是HTML的注釋 -- html lang=\\\"en\\\" id=\\\"myHtml\\\" ?? ?head ?? ??? ?!-- 這里不是設(shè)置了編碼,而是告訴瀏覽器,用什么編碼方式打開文件避免亂碼 -- ?? ??? ?meta charset=\\\"UTF-8\\\" ?? ??? ?meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\" ?? ??? ?titleHtmlAll/title ?? ??? ?

    2024年02月05日
    瀏覽(35)
  • Html轉(zhuǎn)PDF,前端JS實(shí)現(xiàn)Html頁(yè)面導(dǎo)出PDF(html2canvas+jspdf)

    Html轉(zhuǎn)PDF,前端JS實(shí)現(xiàn)Html頁(yè)面導(dǎo)出PDF(html2canvas+jspdf)

    一、背景介紹 ? 當(dāng)我們?cè)诓幌敫淖兒蠖舜a的同時(shí)想是純html頁(yè)面導(dǎo)出PDF,那么(html2canvas+jspdf)就是無疑最好的選擇,導(dǎo)出時(shí)它不占用我們服務(wù)器的資源,而是由用戶本地自行執(zhí)行js文件下載PDF,不占用我們系統(tǒng)的帶寬,所以這無非是最好的選擇方式。 二、疑問 1、為什么要

    2024年01月23日
    瀏覽(25)
  • Android 頂部標(biāo)簽欄及內(nèi)容列表的設(shè)計(jì)與實(shí)現(xiàn)

    Android 頂部標(biāo)簽欄及內(nèi)容列表的設(shè)計(jì)與實(shí)現(xiàn)

    案例演示 1、主頁(yè)面添加ViewPager控件 activity_main.xml 2、創(chuàng)建適配器繼承FragmentPagerAdapter 在適配器類中創(chuàng)建構(gòu)造方法,傳入FragmentManager對(duì)象及放入ViewPager的Fragment對(duì)象集合 MyAdapter.java 3、為ViewPager對(duì)象設(shè)置適配器 準(zhǔn)備Fragment集合 創(chuàng)建MyAdapter適配器 MainActivity.java 4、設(shè)置ViewPager監(jiān)聽

    2023年04月19日
    瀏覽(20)
  • 記錄--“瀏覽器切換到其他頁(yè)面或最小化時(shí),倒計(jì)時(shí)不準(zhǔn)確“問題解析

    記錄--“瀏覽器切換到其他頁(yè)面或最小化時(shí),倒計(jì)時(shí)不準(zhǔn)確“問題解析

    我最近修復(fù)了一個(gè)倒計(jì)時(shí)延遲的bug,情況是用戶10:00設(shè)置了10分鐘倒計(jì)時(shí),10:06查看時(shí)發(fā)現(xiàn)倒計(jì)時(shí)還有8分鐘,倒計(jì)時(shí)出不準(zhǔn)確、延遲的情況。 倒計(jì)時(shí)大概邏輯如下: 通過排查是 瀏覽器的優(yōu)化策略 導(dǎo)致的。 為什么瀏覽器優(yōu)化策略會(huì)造成定時(shí)器不準(zhǔn)時(shí)?又該怎么解決這個(gè)問題?本

    2024年02月03日
    瀏覽(21)
  • 如何使用CSS實(shí)現(xiàn)一個(gè)平滑滾動(dòng)到頁(yè)面頂部的效果(回到頂部按鈕)?

    如何使用CSS實(shí)現(xiàn)一個(gè)平滑滾動(dòng)到頁(yè)面頂部的效果(回到頂部按鈕)?

    前端入門之旅:探索Web開發(fā)的奇妙世界 記得點(diǎn)擊上方或者右側(cè)鏈接訂閱本專欄哦 幾何帶你啟航前端之旅 歡迎來到前端入門之旅!這個(gè)專欄是為那些對(duì)Web開發(fā)感興趣、剛剛踏入前端領(lǐng)域的朋友們量身打造的。無論你是完全的新手還是有一些基礎(chǔ)的開發(fā)者,這里都將為你提供一

    2024年02月11日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包