国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 css教學 讓bootstrap選項卡與磚石配合使用

讓bootstrap選項卡與磚石配合使用

Feb 15, 2025 am 08:31 AM

Getting Bootstrap Tabs to Play Nice with Masonry

關鍵要點

  • Bootstrap 和 Masonry 都是強大的 Web 開發(fā)工具,但同時使用它們可能會導致佈局錯誤,尤其是在隱藏選項卡的情況下。
  • Masonry,一個 JavaScript 網(wǎng)格佈局庫,即使存在某些瀏覽器兼容性問題,也是創(chuàng)建具有不等長卡片網(wǎng)格的可行方案。
  • 將 Bootstrap 選項卡與 Masonry 集成並非易事。默認活動選項卡面板內的網(wǎng)格可能顯示正確,但單擊選項卡導航鏈接以顯示隱藏面板的內容可能會導致網(wǎng)格項目堆疊不正確。
  • 佈局錯誤的解決方案是在每個面板可見後重新初始化 Masonry 庫。這可以通過使用“shown.bs.tab”事件來實現(xiàn)。有了這個解決方案,創(chuàng)建出色的平鋪佈局就更容易了。

Bootstrap 是最廣泛採用的開源前端框架之一。在您的項目中包含 Bootstrap,您將能夠立即創(chuàng)建響應式網(wǎng)頁。如果您嘗試將 Masonry 與 Bootstrap 選項卡小部件(Bootstrap 提供的眾多 JavaScript 組件之一)一起使用,您很可能會遇到某種令人討厭的行為。

在 Masonry 網(wǎng)站上,我們讀到 Masonry 是……

一個 JavaScript 網(wǎng)格佈局庫。它的工作原理是根據(jù)可用的垂直空間將元素放置在最佳位置,有點像泥瓦匠將石頭砌在牆上。

我確實遇到了這個問題,本文重點介紹了問題所在以及您可以採取的解決方法。

Bootstrap 選項卡詳解

Bootstrap 選項卡組件包含兩個關鍵的相關部分:選項卡導航元素和多個內容面板。頁面加載時,第一個面板應用了 .active 類。這使得面板默認可見。此類通過 JavaScript 使用,通過選項卡導航鏈接觸發(fā)的事件來切換面板的可見性:如果存在 .active,則面板可見,否則面板隱藏。

如果您有一些 Web 內容最好以單獨的塊呈現(xiàn),而不是全部擠在一個地方,則 Bootstrap 選項卡組件可能派上用場。

為什麼選擇 Masonry?

在某些情況下,每個面板內的內容適合以響應式網(wǎng)格佈局顯示。例如,一系列產品、服務和作品集項目是可以以網(wǎng)格格式顯示的內容類型。

但是,如果網(wǎng)格單元格的高度不相等,則可能會發(fā)生如下情況。

Getting Bootstrap Tabs to Play Nice with Masonry

兩個內容行之間存在很大的間隙,佈局看起來已損壞。

如今,Bootstrap 使用基於 Flexbox 的全新卡片組件解決了等寬問題。只需向一組卡片組件添加 card-deck 類就足以實現(xiàn)等寬列。

如果您希望卡片長度不一致,可以使用 CSS3 多列佈局。 (畢竟,即使存在一些瀏覽器兼容性問題,總體而言它還是相當不錯的。)這是與卡片組件一起提供的新的卡片列選項的基礎。但是,如果您仍然喜歡 Masonry JavaScript 庫開箱即用的精美動畫及其廣泛的瀏覽器兼容性,那麼在這種情況下,JavaScript 仍然是一個可行的選擇。

設置演示頁面

啟動一個演示頁面有助於說明將 Bootstrap 選項卡與 Masonry 集成並非像預期的那樣簡單。

本文的演示頁面基於 Bootstrap 網(wǎng)站上提供的入門模板。

以下是 Bootstrap 選項卡組件標記的框架:

<ul class="nav nav-tabs" id="myTab" role="tablist">
  <li class="nav-item">
    <a class="nav-link active" id="home-tab" data-toggle="tab" href="http://miracleart.cn/link/6fbb2c2ee065c77a193d0057aab8fa11" role="tab" aria-controls="home" aria-selected="true">Home</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" id="profile-tab" data-toggle="tab" href="http://miracleart.cn/link/0bd97cb91b8d57dad18542081fb8f2b1" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" id="contact-tab" data-toggle="tab" href="http://miracleart.cn/link/18fb150bb65a5825c83969a59f3febc1" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
  </li>
</ul>

nav nav-tabs 類負責賦予選項卡其特有的外觀。 href 屬性的值形成了單個選項卡與其對應的選項卡內容之間的關係。例如,href 值為 http://miracleart.cn/link/6fbb2c2ee065c77a193d0057aab8fa11 會與 id 值為 home 的 div 內的選項卡內容建立關係:單擊該特定選項卡將顯示該 div 內的內容。

此外,請注意 Bootstrap 如何關注輔助功能屬性,例如 role、aria-controls 等。

以下代碼片段說明了選項卡內容的結構:

<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
  <h3>Tab 1 Content</h3>
  <div class="card-group">
    <div class="card">
      <img src="/static/imghw/default1.png"  data-src="https://img.php.cn/"  class="lazy" alt="Getting Bootstrap Tabs to Play Nice with Masonry " />
      <div class="card-body">
        <h5 class="card-title">Card title</h5>
        <p class="card-text">Card text here.</p>
        <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
      </div>
    </div>
    <div class="card">
      </div>
    <div class="card">
      </div>
  </div>
</div>

只需為上面編寫的選項卡元素對應的每個選項卡內容部分添加類似的結構即可。

有關完整代碼,請查看 CodePen 演示。

添加 Masonry 庫

您可以通過單擊“下載 masonry.pkgd.min.js”按鈕從官方網(wǎng)站下載 Masonry。

為了避免佈局問題,庫的作者建議將 Masonry 與 imagesLoaded 插件一起使用。

Masonry 不需要 jQuery 庫即可工作。但是,由於 Bootstrap JavaScript 組件已經(jīng)使用 jQuery,因此我將使生活更輕鬆,並以 jQuery 方式初始化 Masonry。

以下是使用 jQuery 和 imagesLoaded 初始化 Masonry 的代碼片段:

var $container = $('.masonry-container');
$container.imagesLoaded( function () {
  $container.masonry({
    columnWidth: '.card',
    itemSelector: '.card'
  });   
});  

上面的代碼將包裝所有卡片元素的 div 緩存在名為 $container 的變量中。

接下來,使用幾個推薦的選項在 $container 上初始化 Masonry。 columnWidth 選項指示水平網(wǎng)格列的寬度。在這裡,它通過使用其類名設置為單個卡片項目的寬度。 itemSelector 選項指示要將哪些子元素用作項目元素。在這裡,它也設置為單個卡片項目。

現(xiàn)在是測試代碼的時候了。

哎呀!隱藏面板怎麼了?

在不使用 Bootstrap 選項卡的網(wǎng)頁上,上面的代碼運行良好。但是,在這種情況下,您很快就會意識到會發(fā)生某種奇怪的行為。

首先,它看起來還不錯,因為默認活動選項卡面板內的網(wǎng)格顯示正確:

Getting Bootstrap Tabs to Play Nice with Masonry

但是,如果您單擊選項卡導航鏈接以顯示隱藏面板的內容,則會發(fā)生以下情況:

Getting Bootstrap Tabs to Play Nice with Masonry

查看源代碼會發(fā)現(xiàn) Masonry 已按預期觸發(fā),但每個項目的位置計算不正確:網(wǎng)格項目像一疊卡片一樣全部堆疊在一起。

而且不止如此。調整瀏覽器窗口大小會導致網(wǎng)格項目正確地定位自身。

讓我們修復佈局錯誤

由於意外的佈局錯誤在單擊選項卡導航鏈接後變得明顯,讓我們更仔細地研究一下 Bootstrap 選項卡觸發(fā)的事件。

事件列表非常短。這是它。

  • show.bs.tab 在選項卡顯示時觸發(fā),但在新選項卡顯示之前
  • shown.bs.tab 在選項卡顯示後觸發(fā)
  • hide.bs.tab 在要顯示新選項卡時觸發(fā)(因此之前的活動選項卡將被隱藏)
  • hidden.bs.tab 在顯示新選項卡後觸發(fā)(因此之前的活動選項卡被隱藏)。

因為在顯示選項卡後 Masonry 佈局會變得混亂,所以選擇 shown.bs.tab 事件。這是您可以將其放在前面代碼片段正下方的代碼:

<ul class="nav nav-tabs" id="myTab" role="tablist">
  <li class="nav-item">
    <a class="nav-link active" id="home-tab" data-toggle="tab" href="http://miracleart.cn/link/6fbb2c2ee065c77a193d0057aab8fa11" role="tab" aria-controls="home" aria-selected="true">Home</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" id="profile-tab" data-toggle="tab" href="http://miracleart.cn/link/0bd97cb91b8d57dad18542081fb8f2b1" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" id="contact-tab" data-toggle="tab" href="http://miracleart.cn/link/18fb150bb65a5825c83969a59f3febc1" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
  </li>
</ul>

以下是上面代碼中發(fā)生的情況:

jQuery .each() 函數(shù)循環(huán)遍歷每個選項卡導航鏈接並偵聽 shown.bs.tab 事件。當事件觸發(fā)時,面板變得可見,並且在所有圖像加載完成後重新初始化 Masonry。

測試代碼

如果您一直在關注,請在瀏覽器中啟動您的演示,或嘗試下面的 CodePen 演示以查看結果:

CodePen 演示鏈接

單擊選項卡導航鏈接,並註意這次網(wǎng)格項目如何均勻地適應每個內容面板。調整瀏覽器大小會導致項目以精美的動畫效果正確地重新定位自身。

就是這樣,工作完成了!

結論

在本文中,我演示瞭如何將 Bootstrap 選項卡組件與 Masonry JavaScript 庫集成。

這兩個腳本都易於使用且功能強大。但是,將它們放在一起,您將面臨一些影響隱藏選項卡的煩人的佈局錯誤。如上所示,訣竅是在每個面板可見後重新初始化 Masonry 庫。

有了這個解決方案,創(chuàng)建出色的平鋪佈局將輕而易舉。

祝您 Bootstrap 使用愉快!

Bootstrap 選項卡和 Masonry 的常見問題解答 (FAQ)

(此處應插入FAQ部分,內容與原文FAQ部分一致,並根據(jù)需要進行輕微改寫,保持語義不變)

以上是讓bootstrap選項卡與磚石配合使用的詳細內容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何僅在某些頁面上包括CSS? 如何僅在某些頁面上包括CSS? Jun 11, 2025 am 12:01 AM

選擇性包含CSS在特定頁面上的方法有三種:1.內聯(lián)CSS,適用於不常訪問或需要獨特樣式的頁面;2.使用JavaScript條件加載外部CSS文件,適合需要靈活性的情況;3.服務器端包含,適用於使用服務器端語言的場景。這種方法可以優(yōu)化網(wǎng)站性能和可維護性,但需平衡模塊化與性能。

Flexbox與網(wǎng)格:了解CSS佈局的關鍵差異 Flexbox與網(wǎng)格:了解CSS佈局的關鍵差異 Jun 10, 2025 am 12:03 AM

flexboxisidealforone-dimensionAllayouts,while gridsuitStwo,complex layouts.useflexboxforaligningItemsinasingLeaxisAndGridForRidForPreciseconcontroloverroverroverroverroverroverroverrowsandsininintricatientricatedesigns。

使用HTML彈出案創(chuàng)建自動關閉通知 使用HTML彈出案創(chuàng)建自動關閉通知 Jun 10, 2025 am 09:45 AM

HTML彈出屬性將元素轉換為頂層元素,可以使用按鈕或JavaScript打開和關閉??梢詫棾霭格g回多種方式,但是沒有選擇自動關閉它們。 preethi有一種技術,你可以

什麼是'渲染障礙CSS”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會阻塞頁面渲染是因為瀏覽器默認將內聯(lián)和外部CSS視為關鍵資源,尤其是使用引入的樣式表、頭部大量內聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。 1.提取關鍵CSS並內嵌至HTML;2.延遲加載非關鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合併CSS減少請求。建議使用工具提取關鍵CSS,結合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復雜腳本控制。

如何在無花果中使用Lotties 如何在無花果中使用Lotties Jun 14, 2025 am 10:17 AM

在接下來的教程中,我將向您展示如何在無花果中創(chuàng)建Lottie動畫。我們將使用兩種彩色設計來超越如何在無花果上進行動畫,然後向您展示如何從Figma到Lottie動畫。您只需要免費無花果

打破邊界:用(s)CSS構建湯姆拼圖 打破邊界:用(s)CSS構建湯姆拼圖 Jun 13, 2025 am 11:33 AM

我們對其進行了測試,事實證明,至少在低級邏輯和拼圖行為時,Sass可以替換JavaScript。除了地圖,混音,功能和大量數(shù)學外,我們都設法使我們的Tangram難題栩栩如生,沒有J

外部與內部CSS:最好的方法是什麼? 外部與內部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進性技術,3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

See all articles