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

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

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

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

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

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

Bootstrap 選項(xiàng)卡詳解

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

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

為什么選擇 Masonry?

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

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

Getting Bootstrap Tabs to Play Nice with Masonry

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

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

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

設(shè)置演示頁(yè)面

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

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

以下是 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://m.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://m.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://m.miracleart.cn/link/18fb150bb65a5825c83969a59f3febc1" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
  </li>
</ul>

nav nav-tabs 類(lèi)負(fù)責(zé)賦予選項(xiàng)卡其特有的外觀。href 屬性的值形成了單個(gè)選項(xiàng)卡與其對(duì)應(yīng)的選項(xiàng)卡內(nèi)容之間的關(guān)系。例如,href 值為 http://m.miracleart.cn/link/6fbb2c2ee065c77a193d0057aab8fa11 會(huì)與 id 值為 home 的 div 內(nèi)的選項(xiàng)卡內(nèi)容建立關(guān)系:?jiǎn)螕粼撎囟ㄟx項(xiàng)卡將顯示該 div 內(nèi)的內(nèi)容。

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

以下代碼片段說(shuō)明了選項(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ě)的選項(xiàng)卡元素對(duì)應(yīng)的每個(gè)選項(xiàng)卡內(nèi)容部分添加類(lèi)似的結(jié)構(gòu)即可。

有關(guān)完整代碼,請(qǐng)查看 CodePen 演示。

添加 Masonry 庫(kù)

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

為了避免布局問(wèn)題,庫(kù)的作者建議將 Masonry 與 imagesLoaded 插件一起使用。

Masonry 不需要 jQuery 庫(kù)即可工作。但是,由于 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 的變量中。

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

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

哎呀!隱藏面板怎么了?

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

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

Getting Bootstrap Tabs to Play Nice with Masonry

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

Getting Bootstrap Tabs to Play Nice with Masonry

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

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

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

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

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

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

因?yàn)樵陲@示選項(xiàng)卡后 Masonry 布局會(huì)變得混亂,所以選擇 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://m.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://m.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://m.miracleart.cn/link/18fb150bb65a5825c83969a59f3febc1" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
  </li>
</ul>

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

jQuery .each() 函數(shù)循環(huán)遍歷每個(gè)選項(xiàng)卡導(dǎo)航鏈接并偵聽(tīng) shown.bs.tab 事件。當(dāng)事件觸發(fā)時(shí),面板變得可見(jiàn),并且在所有圖像加載完成后重新初始化 Masonry。

測(cè)試代碼

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

CodePen 演示鏈接

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

就是這樣,工作完成了!

結(jié)論

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

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

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

祝您 Bootstrap 使用愉快!

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

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

以上是讓bootstrap選項(xiàng)卡與磚石配合使用的詳細(xì)內(nèi)容。更多信息請(qǐng)關(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)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

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

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(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集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話題

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

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

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

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

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

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

什么是圓錐級(jí)函數(shù)? 什么是圓錐級(jí)函數(shù)? Jul 01, 2025 am 01:16 AM

theconic-Gradient()functionIncsscreatesCircularGradientsThatRotateColorStopSaroundAcentralPoint.1.IsidealForPieCharts,ProgressIndicators,colordichers,colorwheels和decorativeBackgrounds.2.itworksbysbysbysbydefindefingincolordefingincolorstopsatspecificains off.

CSS教程,用于創(chuàng)建粘性標(biāo)頭或頁(yè)腳 CSS教程,用于創(chuàng)建粘性標(biāo)頭或頁(yè)腳 Jul 02, 2025 am 01:04 AM

TocreatestickyheadersandfooterswithCSS,useposition:stickyforheaderswithtopvalueandz-index,ensuringparentcontainersdon’trestrictit.1.Forstickyheaders:setposition:sticky,top:0,z-index,andbackgroundcolor.2.Forstickyfooters,betteruseposition:fixedwithbot

CSS自定義屬性的范圍是什么? CSS自定義屬性的范圍是什么? Jun 25, 2025 am 12:16 AM

CSS自定義屬性的作用域取決于其聲明的上下文,全局變量通常定義在:root中,而局部變量則定義在特定選擇器內(nèi),以便組件化和隔離樣式。例如,定義在.card類(lèi)中的變量?jī)H對(duì)匹配該類(lèi)的元素及其子元素可用。最佳實(shí)踐包括:1.使用:root定義全局變量如主題色;2.在組件內(nèi)部定義局部變量以實(shí)現(xiàn)封裝;3.避免重復(fù)聲明同一變量;4.注意選擇器特異性可能引發(fā)的覆蓋問(wèn)題。此外,CSS變量區(qū)分大小寫(xiě),且應(yīng)在使用前定義以避免錯(cuò)誤。若變量未定義或引用失敗,則會(huì)采用回退值或默認(rèn)值initial。調(diào)試時(shí)可通過(guò)瀏覽器開(kāi)發(fā)者工

解鎖CSS動(dòng)畫(huà)的潛力:深度潛水 解鎖CSS動(dòng)畫(huà)的潛力:深度潛水 Jun 20, 2025 am 12:14 AM

cssanimationsenhancewebpagesbyimprovinguserexperienceandsiteFunctionallity.1)usetransitionsforsmoothstylechanges,asinthebuttoncolorexample.2)losplyKeyKeyframesforeSfordEteTailEdAnimations.3)

See all articles