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

首頁 web前端 css教程 讓bootstrap選項(xiàng)卡與磚石配合使用

讓bootstrap選項(xiàng)卡與磚石配合使用

Feb 15, 2025 am 08:31 AM

Getting Bootstrap Tabs to Play Nice with Masonry

關(guān)鍵要點(diǎn)

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

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

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

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

我確實(shí)遇到了這個問題,本文重點(diǎn)介紹了問題所在以及您可以采取的解決方法。

Bootstrap 選項(xiàng)卡詳解

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

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

為什么選擇 Masonry?

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

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

Getting Bootstrap Tabs to Play Nice with Masonry

兩個內(nèi)容行之間存在很大的間隙,布局看起來已損壞。

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

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

設(shè)置演示頁面

啟動一個演示頁面有助于說明將 Bootstrap 選項(xiàng)卡與 Masonry 集成并非像預(yù)期的那樣簡單。

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

以下是 Bootstrap 選項(xiàng)卡組件標(biāo)記的框架:

<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 類負(fù)責(zé)賦予選項(xiàng)卡其特有的外觀。href 屬性的值形成了單個選項(xiàng)卡與其對應(yīng)的選項(xiàng)卡內(nèi)容之間的關(guān)系。例如,href 值為 http://miracleart.cn/link/6fbb2c2ee065c77a193d0057aab8fa11 會與 id 值為 home 的 div 內(nèi)的選項(xiàng)卡內(nèi)容建立關(guān)系:單擊該特定選項(xiàng)卡將顯示該 div 內(nèi)的內(nèi)容。

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

以下代碼片段說明了選項(xiàng)卡內(nèi)容的結(jié)構(gòu):

<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>

只需為上面編寫的選項(xiàng)卡元素對應(yīng)的每個選項(xiàng)卡內(nèi)容部分添加類似的結(jié)構(gòu)即可。

有關(guān)完整代碼,請查看 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 的變量中。

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

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

哎呀!隱藏面板怎么了?

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

首先,它看起來還不錯,因?yàn)槟J(rèn)活動選項(xiàng)卡面板內(nèi)的網(wǎng)格顯示正確:

Getting Bootstrap Tabs to Play Nice with Masonry

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

Getting Bootstrap Tabs to Play Nice with Masonry

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

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

讓我們修復(fù)布局錯誤

由于意外的布局錯誤在單擊選項(xiàng)卡導(dǎo)航鏈接后變得明顯,讓我們更仔細(xì)地研究一下 Bootstrap 選項(xiàng)卡觸發(fā)的事件。

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

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

因?yàn)樵陲@示選項(xiàng)卡后 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)遍歷每個選項(xiàng)卡導(dǎo)航鏈接并偵聽 shown.bs.tab 事件。當(dāng)事件觸發(fā)時,面板變得可見,并且在所有圖像加載完成后重新初始化 Masonry。

測試代碼

如果您一直在關(guān)注,請?jiān)跒g覽器中啟動您的演示,或嘗試下面的 CodePen 演示以查看結(jié)果:

CodePen 演示鏈接

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

就是這樣,工作完成了!

結(jié)論

在本文中,我演示了如何將 Bootstrap 選項(xiàng)卡組件與 Masonry JavaScript 庫集成。

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

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

祝您 Bootstrap 使用愉快!

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

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

以上是讓bootstrap選項(xiàng)卡與磚石配合使用的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

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

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

外部與內(nèi)部CSS:最好的方法是什么? 外部與內(nèi)部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)避免使用促進(jìn)性技術(shù),3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

CSS案例靈敏度:了解重要的 CSS案例靈敏度:了解重要的 Jun 20, 2025 am 12:09 AM

cssismostlycaseminemintiment,buturlsandfontfamilynamesarecase敏感。1)屬性和valueslikeColor:紅色; prenotcase-sensive.2)urlsmustmustmatchtheserver'server'scase,例如

什么是AutoPrefixer,它如何工作? 什么是AutoPrefixer,它如何工作? Jul 02, 2025 am 01:15 AM

Autoprefixer是一個根據(jù)目標(biāo)瀏覽器范圍自動為CSS屬性添加廠商前綴的工具。1.它解決了手動維護(hù)前綴易出錯的問題;2.通過PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設(shè)置browserslist、在構(gòu)建流程中啟用;4.注意事項(xiàng)有不手動加前綴、保持配置更新、非所有屬性都加前綴、建議配合預(yù)處理器使用。

什么是CSS計(jì)數(shù)器? 什么是CSS計(jì)數(shù)器? Jun 19, 2025 am 12:34 AM

csscounterscanautomationallymentermentermentections和lists.1)usecounter-ensettoInitializize,反插入式發(fā)芽,andcounter()orcounters()

CSS:何時重要(何時不)? CSS:何時重要(何時不)? Jun 19, 2025 am 12:27 AM

在CSS中,選擇器和屬性名不區(qū)分大小寫,而值、命名顏色、URL和自定義屬性則區(qū)分大小寫。1.選擇器和屬性名不區(qū)分大小寫,例如background-color和Background-Color相同。2.值中的十六進(jìn)制顏色不區(qū)分大小寫,但命名顏色區(qū)分大小寫,如red有效而Red無效。3.URL區(qū)分大小寫,可能導(dǎo)致文件加載問題。4.自定義屬性(變量)區(qū)分大小寫,使用時需注意大小寫一致。

CSS中的情況敏感性:選擇器,屬性和值所解釋的 CSS中的情況敏感性:選擇器,屬性和值所解釋的 Jun 19, 2025 am 12:38 AM

cssselectorsand and propertynamesarecase-insimentimentiment.1)selectorSlike like'div'div'div'div'and'and'and'And'Andiv'areequivalent.2)propertioessuchas'backusuchas'backusuchas'backusuchas'backusuchas'backer'back-and'background and backorgook crolor'backorground-artreateateDthesementhesame.3)

See all articles