基於.NetCore開發部落格專案 StarBlog - (10) 圖片瀑布流

程式設計實驗室發表於2022-06-01

系列文章

前言

上一篇介紹了圖片批量匯入操作,我看到有同學留言問怎麼沒有上傳圖片的介紹,這裡再解釋一下,本系列文章介紹的順序是:

  • 部落格的網站前臺管理後臺
  • 從 後端C#程式碼 到 前端Vue+ElementUI

所以上傳圖片這部分會在後續的管理後臺開發中介紹,歡迎繼續關注哈~

接著上篇文章,繼續介紹攝影模組,圖片匯入之後,需要做展示,本文介紹(水)圖片瀑布流的實現。

PS:涉及到的技術很簡單,所以本文會比較水一點,請大佬們跳過吧~

先看效果

匯入一些爬蟲採集的桌布作為測試資料,先看看瀑布流效果

image

管理後臺的瀑布流

image

這是首頁卡片效果

image

實現

瀑布流原理很簡單,有一堆現成的輪子可以用,那就不造輪子了(直接CV操作)哈哈哈

部落格前臺的這個瀑布流我選的是masonry-layout,專案主頁:https://github.com/desandro/masonry

選這個元件的原因是我看到Bootstrap5的例子程式碼裡用了這個實現瀑布流,那我就copy過來了(逃

使用方法很簡單

<div class="row" data-masonry='{"percentPosition": true }'>
    @foreach (var photo in Model.Photos) {
    <div class="col-sm-6 col-lg-4 mb-4">
        <partial name="Widgets/PhotoCard" model="photo"/>
    </div>
    }
</div>

有很多option可以配置,我沒深入研究

它的github主頁也沒怎麼介紹,文件都在官網裡:https://masonry.desandro.com/

這個官網的風格也是別具一格(逃

管理後臺的瀑布流是用vue-waterfall元件實現的,具體在後續的文章裡會介紹~

最後首頁這幾個卡片也是我在Bootstrap5的例子裡參考魔改來的

程式碼如下

@model Photo

<div class="card card-cover h-100 overflow-hidden text-white bg-dark rounded-5 shadow-lg"
     style="background-image: url('media/@Model.FilePath.Replace("\\", "/")');">
    <div class="d-flex flex-column h-100 p-5 pb-3 text-white text-shadow-1">
        <h2 class="pt-5 mt-5 mb-5 display-6 lh-1 fw-bold">
            @Model.Title
            <p></p>
        </h2>
        <ul class="d-flex list-unstyled mt-auto">
            <li class="me-auto">
                <img src="~/images/star.jpg" alt="Bootstrap" width="32" height="32" class="rounded-circle border border-white">
            </li>
            <li class="d-flex align-items-center me-3">
                <span class="bi me-2">
                    <i class="fa-solid fa-location-pin"></i>
                </span>
                <small>@Model.Location</small>
            </li>
            <li class="d-flex align-items-center">
                <span class="bi me-2">
                    <i class="fa-solid fa-calendar-days"></i>
                </span>
                <small>@Model.CreateTime.ToShortDateString()</small>
            </li>
        </ul>
    </div>
</div>

搞定~

最後

今天剛好是六一兒童節,路上看到很多小朋友都出來玩了,很棒,祝各位大朋友小朋友天天開心~

相關文章