Back

STACK | 晴空号维修日志01

这短短一千字我搞了2h40min!感谢塔塔,感谢好心象友,感谢chatgpt老师!

基础配置

设置RSS地址

经过好心象友提醒,在config.yaml中填写baseurl

页面样式

更换背景图片

参考作业:关于我用ChatGPT修改博客主题那些事

发现切换其他页面时,图片会被放大显示模糊,chatgpt老师说需要多写一行:background-attachment: fixed

总之,在/assets/scss/custom.scss中填写如下内容:

body {
    background-image: url('https://res.cloudinary.com/xpihxb/image/upload/v1705496820/chihiro032_g6voto.jpg');
    background-repeat: no-repeat;
    background-size: cover;
    background-attachment: fixed;
}

友链插入图片

没有技术含量只是加了图片喊大家看啦hhh

友链图片与背景图片均来自:今月から、スタジオジブリ作品の場面写真の提供を開始します - スタジオジブリ|STUDIO GHIBLI

修改鼠标指针

直接让chatgpt老师写的。主要困难来自于,使用外部链接的鼠标指针巨大啊!巨大!我最后使用了30*30的图片大小,在/assets/scss/style.scss插入,终于可以了。

不知道错在哪,成了就行T_T。
图标来自:免费矢量图标——下载1,328,700个图标(SVG、PNG)

/* 默认时的鼠标样式 */
body {
    cursor: url('tupian.png'), default;
}
/* 指向链接时的鼠标样式 */
a:hover {
    cursor: url('tupian.png'), pointer;
}

代码块限高与COPY按钮

26/08/04更新。

/assets/scss/partials/layout/article.scss中的pre下塞入代码:

    pre {
        display: block;
        background-color: var(--pre-background-color);
        color: var(--pre-text-color);
        font-family: var(--code-font-family);
        line-height: 1.428571429;
        word-break: break-all;
        padding: var(--card-padding);
        white-space: pre-wrap; //长代码自动换行适应页面
        word-wrap: break-word; //允许长单词或 URL 地址换行到下一行

        /* 1. 核心关键:给伪元素提供定位原点 */
        position: relative;

        code {
            color: unset;
            border: none;
            background: none;
            padding: 0;

            /* 2. 把限高和滚动条加在 code 身上,绝不干扰外围按钮 */
            display: block;
            max-height: 230px;
            overflow-y: auto;
        }

        /* 3. 完美的伪元素 Copy 按钮(优雅放大版) */
        &::after {
            content: 'Copy';
            position: absolute;
            top: 12px;          /* 稍微往下挪一点点,看起来更舒展 */
            right: 32px;        /* 【关键修改】加大右侧距离,完美躲开滚动条 */
            padding: 9px 18px;  /* 【关键修改】加大内边距,让按钮整体变大 */
            font-size: 1.75rem; /* 【关键修改】字号调大,更清晰 */
            border-radius: 6px; /* 圆角稍微大一点更现代 */
            
            /* 颜色自动适配主题的深浅模式 */
            background: var(--card-background);
            color: var(--body-text-color);
            border: 1px solid var(--card-border-color);
            
            cursor: pointer;
            opacity: 0; 
            transition: opacity 0.2s ease;
            z-index: 10; 
        }

        /* 鼠标悬浮在整个代码块时,显示按钮 */
        &:hover::after {
            opacity: 1;
        }

        /* 复制成功后的文字切换 */
        &.copied::after {
            content: 'Copied! ✓';
            opacity: 1;
        }
    }

打开 assets/ts/main. ts,在顶部加

import "./copyCode";

assets/ts 新建 copyCode. ts,复制粘贴以下内容

document.addEventListener("DOMContentLoaded", () => {
    document.querySelectorAll(".article-content pre").forEach((pre) => {
        // 点击整个代码块区域触发复制
        pre.addEventListener("click", async () => {
            const code = pre.querySelector("code") || pre;
            try {
                await navigator.clipboard.writeText(code.innerText);
                
                // 加上 .copied,让 CSS 把字换成 Copied!
                pre.classList.add("copied");
                
                // 1秒后恢复原样
                setTimeout(() => {
                    pre.classList.remove("copied");
                }, 1000);
            } catch (err) {
                console.error("复制失败", err);
            }
        });
    });
});

Shortcodes

参考作业:Hugo | 在 Stack 主题上可行的短代码们

感谢鹤辞!完全照抄!

卡片样式

照抄鹤辞。

引用neodb

layouts/shortcodes中新建新建neodb.html,内容如下:

{{ $dbUrl := .Get 0 }}
{{ $dbApiUrl := "https://neodb.social/api/" }}
{{ $dbType := "" }}

{{ if ( findRE `^.*neodb\.social\/.*` $dbUrl ) }}
    {{ $dbType = replaceRE `.*neodb.social\/(.*\/.*)` "$1" $dbUrl }}
{{ else }}
    {{ $dbType = $dbUrl }}
    {{ $dbApiUrl = "https://neodb.social/api/catalog/fetch?url=" }}
{{ end }}

{{ $dbFetch := getJSON $dbApiUrl $dbType }}

{{ if $dbFetch }}
    {{ $itemRating := 0 }}{{ with $dbFetch.rating }}{{ $itemRating = . }}{{ end }}
    <div class="db-card">
        <div class="db-card-subject">
            <div class="db-card-post"><img loading="lazy" decoding="async" referrerpolicy="no-referrer" src="{{ $dbFetch.cover_image_url }}"></div>
            <div class="db-card-content">
                <div class="db-card-title"><a href="{{ $dbUrl }}" class="cute" target="_blank" rel="noreferrer">{{ $dbFetch.title }}</a></div>
                <div class="rating"><span class="allstardark"><span class="allstarlight" style="width:{{mul 10 $itemRating }}%"></span></span><span class="rating_nums">{{ $itemRating }}</span></div>
                <div class="db-card-abstract">{{ $dbFetch.brief }}</div>
            </div>
            <div class="db-card-cate">{{ $dbFetch.category }}</div>
        </div>
    </div>
{{else}}
    <p style="text-align: center;"><small>远程获取内容失败,请检查 API 有效性。</small></p>
{{end}}

/assets/scss/custom.scss中填入css的样式代码,内容如下:

/* db-card -------- start*/
.db-card{margin:2.5rem 3rem;background:var(--card-background);border-radius: 7px;box-shadow: 0 6px 10px 0 #00000053;}
.db-card-subject{display: flex;align-items:flex-start;line-height:1.6;padding:12px;position:relative;}
.dark .db-card{background:var(--card-background);}
.db-card-content {flex:1 1 auto;}
.db-card-post {width: 100px;margin-right: 15px;display: flex;flex: 0 0 auto;}
.db-card-title {margin-bottom: 3px;font-size: 14px;color: var(--card-text-color-main);;}
.db-card-title a{text-decoration: none!important}
.db-card-abstract,.db-card-comment{font-size:13px;overflow: auto;max-height:5rem;color: var(--card-text-color-main);;}
.db-card-cate{position: absolute;top:0;right:0;background:#f99b01;padding:1px 8px;font-size:small;font-style:italic;border-radius:0 8px 0 8px;text-transform:capitalize;}
.db-card-post img{width: 100px!important;height: 150px!important;border-radius: 4px;-o-object-fit: cover;object-fit: cover;}
.rating{margin: 0 0 5px;font-size:13px;line-height: 1;display: flex;align-items: center;}
.rating .allstardark{position:relative;color: #f99b01;height: 16px;width: 80px;background-size: auto 100%;margin-right: 8px;background-repeat: repeat;background-image: url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwYXRoIGQ9Ik05MDguMSAzNTMuMWwtMjUzLjktMzYuOUw1NDAuNyA4Ni4xYy0zLjEtNi4zLTguMi0xMS40LTE0LjUtMTQuNS0xNS44LTcuOC0zNS0xLjMtNDIuOSAxNC41TDM2OS44IDMxNi4ybC0yNTMuOSAzNi45Yy03IDEtMTMuNCA0LjMtMTguMyA5LjMtMTIuMyAxMi43LTEyLjEgMzIuOS42IDQ1LjNsMTgzLjcgMTc5LjEtNDMuNCAyNTIuOWMtMS4yIDYuOS0uMSAxNC4xIDMuMiAyMC4zIDguMiAxNS42IDI3LjYgMjEuNyA0My4yIDEzLjRMNTEyIDc1NGwyMjcuMSAxMTkuNGM2LjIgMy4zIDEzLjQgNC40IDIwLjMgMy4yIDE3LjQtMyAyOS4xLTE5LjUgMjYuMS0zNi45bC00My40LTI1Mi45IDE4My43LTE3OS4xYzUtNC45IDguMy0xMS4zIDkuMy0xOC4zIDIuNy0xNy41LTkuNS0zMy43LTI3LTM2LjN6TTY2NC44IDU2MS42bDM2LjEgMjEwLjNMNTEyIDY3Mi43IDMyMy4xIDc3MmwzNi4xLTIxMC4zLTE1Mi44LTE0OUw0MTcuNiAzODIgNTEyIDE5MC43IDYwNi40IDM4MmwyMTEuMiAzMC43LTE1Mi44IDE0OC45eiIgZmlsbD0iI2Y5OWIwMSIvPjwvc3ZnPg==);
}
.rating .allstarlight{position: absolute;left: 0;color: #f99b01;height:16px;overflow: hidden;background-size: auto 100%;background-repeat: repeat;background-image: url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwYXRoIGQ9Ik05MDguMSAzNTMuMWwtMjUzLjktMzYuOUw1NDAuNyA4Ni4xYy0zLjEtNi4zLTguMi0xMS40LTE0LjUtMTQuNS0xNS44LTcuOC0zNS0xLjMtNDIuOSAxNC41TDM2OS44IDMxNi4ybC0yNTMuOSAzNi45Yy03IDEtMTMuNCA0LjMtMTguMyA5LjMtMTIuMyAxMi43LTEyLjEgMzIuOS42IDQ1LjNsMTgzLjcgMTc5LjEtNDMuNCAyNTIuOWMtMS4yIDYuOS0uMSAxNC4xIDMuMiAyMC4zIDguMiAxNS42IDI3LjYgMjEuNyA0My4yIDEzLjRMNTEyIDc1NGwyMjcuMSAxMTkuNGM2LjIgMy4zIDEzLjQgNC40IDIwLjMgMy4yIDE3LjQtMyAyOS4xLTE5LjUgMjYuMS0zNi45bC00My40LTI1Mi45IDE4My43LTE3OS4xYzUtNC45IDguMy0xMS4zIDkuMy0xOC4zIDIuNy0xNy41LTkuNS0zMy43LTI3LTM2LjN6IiBmaWxsPSIjZjk5YjAxIi8+PC9zdmc+);}
@media (max-width:550px) {
	.db-card{margin:0.8rem 1rem;}
	.db-card-comment{display: none;}
}
/* db-card -------- end */

使用时出现过卡片显示文字不完全,卡片底部留白过多的情况,调整css样式代码中max-height的值后显示正常。

我暂时不知道输入时怎么让它好好显示为代码,而不生效样式。
就,看看示例吧:

9.2
1997 film directed by Clifton Ko
movie
Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy
© Licensed Under CC BY-NC-SA 4.0