Files
blog-source/usr/themes/HarmonyHues/assets/css/style.scss
2026-03-04 00:23:03 +08:00

1832 lines
38 KiB
SCSS
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ------------------------------------
* Harmony Hues主题
*
* @author 星语社长
* @link https://biibii.cn
* @update 2024-7-6 18:00:04
* --------------------------------- */
:root {
/*基础样式*/
font-synthesis: style;
-webkit-text-size-adjust: none;
-moz-text-size-adjust: none;
text-size-adjust: none;
word-wrap: break-word;
color: var(--font-color-main);
/* 色调 */
/* 主色调:现代蓝色 */
--color-primary: #165DFF;
/* 比主色调更深 */
--color-primary-dark-1: #0E42D2;
/* 更深的色调 */
--color-primary-dark-2: #072A8A;
/* 非常深的色调 */
--color-primary-dark-3: #041957;
/* 比主色调稍浅 */
--color-primary-light-1: #4080FF;
/* 浅一些的色调 */
--color-primary-light-2: #6AA1FF;
/* 较浅的色调 */
--color-primary-light-3: #94BFFF;
/* 更浅的色调 */
--color-primary-light-4: #BEDAFF;
/* 非常浅的色调 */
--color-primary-light-5: #E8F3FF;
/* 主背景色 */
--bg-color-main: #fff;
/* 主背景色-黑 */
--bg-color-main-dark: #000;
/* 页面背景色 */
--bg-color-body: #f6f7f9;
/* 遮罩层浅色1 */
--overlay-color-light-1: rgba(255, 255, 255, .1);
/* 遮罩层浅色2 */
--overlay-color-light-2: rgba(255, 255, 255, .2);
/* 遮罩层浅色3 */
--overlay-color-light-3: rgba(255, 255, 255, .3);
/* 遮罩层浅色4 */
--overlay-color-light-4: rgba(255, 255, 255, .4);
/* 遮罩层浅色5 */
--overlay-color-light-5: rgba(255, 255, 255, .5);
/* 遮罩层浅色8 */
--overlay-color-light-8: rgba(255, 255, 255, .8);
/* 黑遮罩层浅色1 */
--overlay-color-dark-1: rgba(0, 0, 0, .1);
/* 黑遮罩层浅色2 */
--overlay-color-dark-2: rgba(0, 0, 0, .2);
/* 黑遮罩层浅色3 */
--overlay-color-dark-3: rgba(0, 0, 0, .3);
/* 黑遮罩层浅色4 */
--overlay-color-dark-4: rgba(0, 0, 0, .4);
/* 黑遮罩层浅色5 */
--overlay-color-dark-5: rgba(0, 0, 0, .5);
/* 主字体颜色 */
--font-color-main: #333;
/* 主字体颜色(浅色) */
--font-color-main-light: #6c757d;
/* 主字体颜色(透明) */
--font-color-main-transparent: rgba(60, 60, 60, 0.7);
/* 字体颜色muted */
--font-color-muted: #b2b2b2;
/* 主边框颜色 */
--border-color-main: #e4e4e4;
/* 主要背景色 */
--bg-color-primary: #f2f2f2;
/* 次要背景色 */
--bg-color-secondary: #f5f5f5;
/* 基础圆角大小 */
--border-radius-base: 8px;
/* 小圆角大小 */
--border-radius-small: 5px;
/* 中等圆角大小 */
--border-radius-medium: calc(var(--border-radius-small) * 2);
/* 大圆角大小 */
--border-radius-large: calc(var(--border-radius-small) * 6);
/* 超大圆角大小 */
--border-radius-xlarge: calc(var(--border-radius-small) * 20);
/* 圆形圆角 */
--border-radius-circle: 50%;
/* 固定导航栏高度 */
--height-nav-fixed: 80px;
/* 页脚高度 */
--height-footer: 60px;
/* 主背景滤镜 */
--backdrop-filter-main: saturate(180%) blur(20px);
/* 主渐变透明背景 */
--gradient-primary-transparent: linear-gradient(0deg, var(--color-primary-light-4), transparent);
/* 主题样式 */
/* 中等蓝色灰色 */
--color-blue-gray-medium: var(--color-primary);
/* 浅色中等蓝色灰色 */
--color-blue-gray-medium-light: var(--color-primary-dark-3);
/* 主阴影 */
--shadow-box-main: 8px 8px 15px 0 rgba(55, 99, 170, .1), -8px -8px 15px 0 var(--bg-color-main), inset 0 4px 15px 0 var(--overlay-color-light-5);
/* 小阴影 */
--shadow-box-small: 5px 5px 12px 0 rgba(55, 99, 170, .1), -5px -5px 12px 0 var(--bg-color-main), inset 0 4px 10px 0 var(--overlay-color-light-5);
/* 悬停阴影 */
--shadow-box-hover: 8px 8px 15px 0 rgba(55, 99, 170, .2), -8px -8px 15px 0 var(--bg-color-main);
/* 0度渐变 */
--gradient-0deg: linear-gradient(0deg, var(--bg-color-body), #f8f8f8);
/* 45度渐变 */
--gradient-45deg: linear-gradient(45deg, var(--bg-color-body), #f8f8f8);
/* 工具背景渐变 */
--widget-bg-gradient: linear-gradient(-45deg, var(--bg-color-main), #f3f5f8);
/* 主边框 */
--border-solid-main: 2px solid var(--bg-color-main);
/* 小边框 */
--border-solid-small: 1px solid var(--bg-color-main);
/* 导航栏阴影 */
--shadow-nav: 0 5px 12px 0 rgba(50, 98, 170, .1);
/* 导航栏shadow */
--shadow-hover-nav: inset -8px -8px 16px var(--bg-color-body), inset 8px 8px 16px var(--bg-color-body), 8px 8px 16px rgba(0, 0, 0, 0.25);
/* 内嵌阴影 */
--shadow-inset-box: inset -4px -4px 12px #f1f1f1, inset 4px 4px 12px #e2e2e2;
/* 所有属性过渡效果 */
--transition-ease-all: all .3s ease 0s;
}
:root[data-theme=dark] {
--bg-color-main: #262626;
--bg-color-main-dark: #fff;
--bg-color-body: #222222;
--overlay-color-light-1: rgba(0, 0, 0, 0.5);
--overlay-color-light-2: #333333;
--overlay-color-light-3: #4d4d4d;
--overlay-color-light-4: #666666;
--overlay-color-light-5: #2a2a2a;
--overlay-color-light-8: #2e2e2e;
--overlay-color-dark-1: #4d4d4d;
--overlay-color-dark-2: rgba(255, 255, 255, .25);
--overlay-color-dark-3: #808080;
--overlay-color-dark-4: #999999;
--overlay-color-dark-5: #b3b3b3;
--font-color-main: #fff;
--font-color-main-light: #b3b3b3;
--font-color-main-transparent: rgba(220, 220, 220, 0.7);
--font-color-muted: #757575;
--border-color-main: #333;
--bg-color-primary: #2C2C2C;
--bg-color-secondary: #171717;
--gradient-primary-transparent: linear-gradient(0deg, #333, rgba(0, 0, 0, 0.3));
--color-blue-gray-medium: var(--color-primary);
--color-blue-gray-medium-light: var(--color-primary-dark-3);
--shadow-box-main: 8px 8px 15px 0 rgba(0, 0, 0, .3), -8px -8px 15px 0 var(--bg-color-main), inset 0 4px 15px 0 var(--bg-color-body);
--shadow-box-small: 5px 5px 12px 0 rgba(0, 0, 0, .3), -5px -5px 12px 0 var(--bg-color-main), inset 0 4px 10px 0 var(--bg-color-body);
--shadow-box-hover: 8px 8px 15px 0 rgba(0, 0, 0, .4), -8px -8px 15px 0 var(--bg-color-main);
--gradient-0deg: linear-gradient(0deg, var(--bg-color-body), var(--overlay-color-light-5));
--gradient-45deg: linear-gradient(45deg, var(--bg-color-body), var(--overlay-color-light-5));
--widget-bg-gradient: linear-gradient(-45deg, var(--bg-color-main), var(--bg-color-body));
--shadow-nav: 0 5px 12px 0 rgba(0, 0, 0, .3);
--shadow-inset-box: inset -4px -4px 12px #1a1a1a, inset 4px 4px 12px #1e1e1e;
}
// 建议的标准断点定义
$breakpoints: (
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px
);
// min-width 查询
@mixin min-media-breakpoint($breakpoint-name) {
$min-width: map-get($breakpoints, $breakpoint-name);
@media (min-width: $min-width) {
@content;
}
}
// max-width 查询
@mixin max-media-breakpoint($breakpoint-name) {
$max-width: map-get($breakpoints, $breakpoint-name) - 0.02;
@media (max-width: $max-width) {
@content;
}
}
// 范围查询 (需要两个参数)
@mixin and-media-breakpoint($from, $to) {
$min: map-get($breakpoints, $from);
$max: map-get($breakpoints, $to) - 0.02;
@media (min-width: $min) and (max-width: $max) {
@content;
}
}
// 定义文本溢出省略号样式
@mixin ellipsis-style($line-clamp: 2) {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: $line-clamp;
-webkit-box-orient: vertical;
white-space: normal;
word-break: break-all;
}
// 毛玻璃样式
@mixin backdrop-filter($background: var(--bg-color-main), $filter: blur(10px)) {
background: $background;
-webkit-backdrop-filter: $filter;
backdrop-filter: $filter;
}
/* 全局样式 */
html {
scroll-behavior: smooth;
}
body {
background-color: var(--bg-color-body) !important;
}
ol,
ul {
list-style: none;
margin: 0;
}
*,
*::before,
*::after {
font: inherit;
color: inherit;
padding: 0;
margin: 0;
border: 0;
outline: 0;
vertical-align: baseline;
box-sizing: border-box;
scroll-behavior: smooth;
}
/* 去除a标签默认样式 */
a {
color: var(--font-color-main);
cursor: pointer;
text-decoration: none;
transition: color 0.3s ease;
&:link,
&:visited,
&:hover,
&:active,
&:focus {
text-decoration: none;
}
&:hover {
color: var(--color-blue-gray-medium) !important;
}
}
/*--------浏览器滚动条---------*/
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
::-webkit-scrollbar {
-webkit-appearance: none;
width: 0.5rem;
height: 0.5rem;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track {
background-color: #e4e4e4;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb {
cursor: pointer;
border-radius: 10px;
background: #b2b2b2;
-webkit-transition: color .3s ease;
transition: color .3s ease;
}
/* 指定滚动样式 */
.scroll-cover {
overflow: auto;
&::-webkit-scrollbar {
width: 2px !important;
height: 2px !important;
-webkit-appearance: none;
appearance: none;
}
&::-webkit-scrollbar-track {
background-color: transparent;
}
}
/*--------浏览器滚动条---------*/
/*---输入公共样式---*/
input,
textarea,
select {
color: var(--font-color-main) !important;
box-shadow: var(--shadow-inset-box) !important;
background-color: transparent !important;
border-radius: var(--border-radius-base) !important;
border: var(--border-solid-small) !important;
@include max-media-breakpoint('md') {
border: var(--border-solid-small) !important;
}
}
input:-webkit-autofill {
transition: background-color 5000s ease-in-out 0s;
-webkit-text-fill-color: var(--font-color-main) !important;
}
button {
color: var(--font-color-main) !important;
&.btn:focus {
box-shadow: var(--shadow-inset-box);
}
}
img,
video {
width: 100%;
height: 100%;
object-fit: cover;
}
:root[data-theme=dark] {
img,
video {
filter: brightness(.85);
}
}
/* 名字svg样式 */
.svg-name {
path {
fill: var(--font-color-main);
}
}
/* 文字边框 */
.title-text-stroke {
text-stroke: 1px var(--font-color-main);
-webkit-text-stroke: 1px var(--font-color-main);
-webkit-text-fill-color: transparent;
}
/* 文字阴影 */
.text-shadow-style {
position: relative;
--text-col: var(--bg-color-main);
--text-show-col: var(--font-color-main);
color: var(--text-col);
text-shadow: 3px 3px 0 var(--text-show-col), -1px -1px 0 var(--text-show-col), 1px -1px 0 var(--text-show-col), -1px 1px 0 var(--text-show-col), 1px 1px 0 var(--text-show-col);
}
.text-webkit-mask {
opacity: 0.5;
-webkit-mask: linear-gradient(var(--bg-color-main) 50%, transparent);
mask: linear-gradient(var(--bg-color-main) 50%, transparent);
}
/* 图标公共样式 */
.iconfont {
font-family: "iconfont" !important;
color: var(--font-color-main);
font-size: 1.5rem;
font-style: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: 0.2px;
-moz-osx-font-smoothing: grayscale;
&:hover {
color: var(--color-blue-gray-medium);
}
}
/* 公共动画 */
// 淡入
@keyframes fade-in-top {
from {
opacity: 0;
transform: translateY(15px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@-webkit-keyframes fade-in-top {
from {
opacity: 0;
-webkit-transform: translateY(15px);
}
to {
opacity: 1;
-webkit-transform: translateY(0);
}
}
// SVG动画
.animated-signature path {
stroke-dasharray: 2400;
stroke-dashoffset: 2400;
fill: transparent;
animation: drawSignature 8s linear infinite both;
-webkit-animation: drawSignature 8s linear infinite both;
stroke-width: 2px;
stroke: var(--font-color-main);
}
// 图片懒加载
img {
&.lazy {
background-color: var(--color-primary-light-5);
filter: blur(25px);
-webkit-transition: opacity 1s ease-in-out;
transition: opacity 1s ease-in-out;
}
&.loaded {
background-color: transparent;
filter: blur(0px);
-webkit-transition: filter 1s linear, -webkit-filter 1s linear;
transition: filter 1s linear, -webkit-filter 1s linear;
}
}
@keyframes drawSignature {
0% {
stroke-dashoffset: 2400;
}
15% {
fill: transparent;
}
35%,
75% {
stroke-dashoffset: 0;
fill: var(--font-color-main);
}
90%,
to {
stroke-dashoffset: 2400;
fill: transparent;
}
}
// 灯箱
.view-image-lead img {
width: auto;
height: auto;
}
/*---------- 导航栏样式st ----------*/
/* 导航栏样式 */
.navbar {
position: fixed;
z-index: 99;
width: 100%;
background-color: transparent;
transition: var(--transition-ease-all);
@mixin nav-bg($background: var(--bg-color-main), $filter: blur(10px)) {
background-image: radial-gradient(transparent 1px, var(--bg-color-main) 1px);
background-size: 4px 4px;
-webkit-backdrop-filter: saturate(50%) blur(5px);
backdrop-filter: saturate(50%) blur(5px);
-webkit-box-shadow: var(--shadow-nav) !important;
box-shadow: var(--shadow-nav) !important;
}
&.nav-ui-one {
@include nav-bg();
}
&.nav-ui-two {
.navbar-box {
@include nav-bg();
border: var(--border-solid-main);
border-radius: var(--border-radius-medium);
}
}
&.active {
box-shadow: var(--shadow-nav) !important;
}
&.nav-hidden {
transform: translateY(-100%) !important;
opacity: 0 !important;
}
&.nav-visible {
transform: translateY(0) !important;
opacity: 1 !important;
}
}
// LOGO样式
.navbar-logo {
span {
font-size: 1.5rem;
}
img {
height: 40px;
}
}
// -----》电脑导航栏菜单样式
.nav-inner {
position: relative;
.nav-icon {
display: inline-block;
margin-left: 0.1rem;
font-size: 0.8rem;
transition: transform 0.3s;
}
.nav-menu {
gap: 1rem;
}
.nav-item {
position: relative;
.nav-a.active {
color: var(--color-primary);
text-shadow: 0 0.15rem 1rem var(--color-primary-light-1);
.nav-icon {
color: var(--color-blue-gray-medium);
}
}
>.sub-menu {
position: absolute;
left: -15%;
opacity: 0;
visibility: hidden;
pointer-events: none;
z-index: 9;
transform: translateY(-15px);
transition: all 0.3s ease;
}
&:hover {
.nav-a {
color: var(--color-blue-gray-medium);
}
>.sub-menu {
opacity: 1;
visibility: visible;
pointer-events: auto;
transform: translateY(0);
}
.nav-icon {
color: var(--color-blue-gray-medium);
transform: rotate(-90deg);
}
}
}
.sub-menu {
white-space: nowrap;
ul {
background: var(--gradient-0deg);
border-radius: var(--border-radius-base);
white-space: nowrap;
border: var(--border-solid-main);
box-shadow: var(--shadow-hover-nav);
overflow: hidden;
li {
position: relative;
width: 100%;
transition: all .3s;
overflow: hidden;
&>a {
--nav-font-size: 20px;
display: inline-block;
transform: translateY(calc(-1 * var(--nav-font-size) * 1.5));
text-shadow: 0px calc(var(--nav-font-size) * 1.5) 0px var(--font-color-main);
transition: transform 0.3s cubic-bezier(0.15, 1, 0.35, 1);
}
&:hover {
&>a {
transform: translateY(0);
}
}
&:hover,
&.active {
width: 100%;
background-color: var(--bg-color-main);
border-radius: var(--border-radius-medium);
box-shadow: var(--shadow-box-hover);
}
}
}
}
}
// ------》导航栏右侧图标样式
.navbar-icon {
gap: 1rem;
@include max-media-breakpoint('md') {
gap: 0.5rem;
}
.iconfont {
font-size: 1.35rem;
}
}
/*滚动进度+回到顶部样式*/
.back-to-top {
display: flex;
overflow: hidden;
.nav-top-item {
text-align: center;
font-size: 0.8rem;
width: 1.6rem;
height: 1.6rem;
line-height: 1.6rem;
border-radius: var(--border-radius-xlarge);
background: var(--font-color-main);
color: var(--bg-color-main);
transition: width 0.3s, display 0.3s;
&.top-to-active {
width: 5rem;
}
}
.top-to-icon {
display: none;
}
&:hover {
.top-to-icon {
display: inline-block;
}
.top-to-text {
display: none;
}
.nav-top-item {
width: 5rem;
}
}
}
/* ----》手机导航栏菜单 */
#nav-components {
&.mobile-aside {
display: flex;
flex-direction: column;
position: fixed;
width: 100%;
max-height: 95vh;
min-height: 70vh;
opacity: 0;
visibility: hidden;
background-color: var(--bg-color-main);
bottom: 0;
z-index: 1000;
transform: translateY(100%);
transition: transform 1s cubic-bezier(0.3, 0.7, 0, 1), opacity 1s linear, visibility 1s linear;
border-top-left-radius: var(--border-radius-medium);
border-top-right-radius: var(--border-radius-medium);
box-shadow: 0 -0.15rem 1.5rem 0.25rem var(--overlay-color-dark-1);
&.open {
visibility: visible;
opacity: 1;
transform: translateY(0);
}
}
.back-box {
display: inline-block;
width: 3rem;
height: 4px;
border-radius: var(--border-radius-xlarge);
background-color: var(--overlay-color-dark-3);
}
.mobile-close-btn {
position: absolute;
display: flex;
right: 0;
top: 0;
width: 2rem;
height: 2rem;
background-color: var(--bg-color-body);
border-radius: var(--border-radius-circle);
align-items: center;
justify-content: center;
}
.nav-menu {
>.nav-item {
font-size: 1rem;
color: var(--font-color-main);
}
.nav-a {
.iconfont {
font-size: 1rem;
}
.nav-icon {
display: none;
}
}
.sub-menu {
background-color: var(--bg-color-body);
border-radius: var(--border-radius-medium);
border-top-left-radius: 0;
}
}
}
// 顶部站位样式
.nav-fixed {
padding-top: var(--height-nav-fixed);
@include max-media-breakpoint('md') {
padding-top: calc(var(--height-nav-fixed) - 1rem);
}
}
/*---------- 导航栏样式end ----------*/
/*---------- 文章分类样式st ----------*/
.category-box {
position: relative;
width: 100%;
height: 12rem;
max-height: 100%;
overflow: hidden;
.category-item {
position: absolute;
color: var(--bg-color-main);
width: 100%;
height: 100%;
background-color: var(--overlay-color-dark-2);
.category-info {
width: 100%;
height: 100%;
}
.category-name {
display: block;
font-size: 1.15rem;
font-weight: bold;
}
.category-desc {
display: block;
font-size: 0.85rem;
font-weight: 500;
@include ellipsis-style(2);
}
}
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
/*---------- 文章分类样式end ----------*/
/*---------- 文章列表样式st ----------*/
.post-list {
$columns: 3; // 默认 3 列
&>div {
// 桌面端适配
@for $i from 0 through 8 {
&:nth-child(#{$i + 1}) .post-item {
animation-delay: 0.2s * (ceil(($i + 1)/$columns) + 1);
}
}
// 移动端适配
@include max-media-breakpoint("md") {
$columns: 2;
@for $i from 0 through 6 {
&:nth-child(#{$i + 1}) .post-item {
animation-delay: 0.2s * (ceil(($i + 1)/$columns) + 1);
}
}
}
}
.post-item {
position: relative;
min-width: 0;
word-wrap: break-word;
align-self: stretch;
flex: 1 1 auto;
overflow: hidden;
border-radius: var(--border-radius-medium);
border: var(--border-solid-main);
box-shadow: var(--shadow-box-main);
background: var(--gradient-0deg);
background-clip: padding-box;
opacity: 0;
animation: fade-in-top 0.5s 0.3s forwards;
-webkit-animation: fade-in-top 0.5s 0.3s forwards;
&:hover {
background: var(--bg-color-main) !important;
box-shadow: var(--shadow-box-hover);
.post-cover {
img {
transform: scale(1.1);
}
}
.post-head>a {
color: var(--color-blue-gray-medium) !important;
}
}
.post-cover {
position: relative;
display: block;
overflow: hidden;
padding: 0;
flex-shrink: 0;
&::after {
content: "";
display: block;
padding-top: 60%;
}
img {
width: 100%;
height: 100%;
transition: transform .3s ease-in-out;
object-fit: cover;
}
a {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
border: 0;
border-radius: inherit;
background-size: cover;
background-repeat: no-repeat;
background-position: 50% 50%;
background-clip: padding-box;
}
}
.post-info {
height: 100%;
width: 100%;
cursor: pointer;
position: relative;
overflow: hidden;
gap: 0.5rem;
.post-head>a {
margin-bottom: 0.25rem;
font-size: 1rem;
font-weight: 600;
line-height: 1.5;
color: var(--font-color-main);
transition: color .3s ease 0s;
@include ellipsis-style(1);
}
.post-meta-wrap {
--font-color-main: var(--font-color-main-light);
color: var(--font-color-main);
}
.post-description {
color: var(--font-color-main-transparent);
font-size: 14px;
@include ellipsis-style(2);
}
}
@include max-media-breakpoint('md') {
box-shadow: var(--shadow-box-small);
}
}
}
/* -------------段落省略--------- */
.author-content .author-text {
@include ellipsis-style(2);
}
.post-meta-wrap {
.author-name,
.post-meta {
color: var(--font-color-main);
font-size: 0.85rem;
@include ellipsis-style(1);
}
@include max-media-breakpoint('md') {
.author-name,
.post-meta {
font-size: 0.8rem;
}
}
}
/*---------- 文章列表样式end ----------*/
/*---------- 文章列表->分页str ----------*/
.pagination {
gap: 0.5rem;
opacity: 0;
animation: fade-in-top 0.5s 0.8s forwards;
-webkit-animation: fade-in-top 0.5s 0.8s forwards;
.page-item {
width: 2rem;
height: 2rem;
.page-link {
color: var(--font-color-main);
background: var(--gradient-45deg);
background-clip: padding-box;
border: var(--border-solid-main);
box-shadow: var(--shadow-box-small);
}
&.prev,
&.next {
.iconfont {
font-size: 0.9rem;
}
}
&.active,
&:hover {
.page-link {
font-weight: bold;
color: var(--color-primary-dark-1);
background: var(--bg-color-main) !important;
box-shadow: var(--shadow-box-main);
}
}
}
}
/*---------- 文章列表分页end ----------*/
/*---------- 侧边栏样式st ----------*/
.hh-widget,
.card {
width: 100%;
color: var(--font-color-main);
border: var(--border-solid-main);
border-radius: var(--border-radius-medium);
box-shadow: var(--shadow-box-main);
background: var(--gradient-45deg);
background-clip: padding-box;
&:not(.no-animation) {
opacity: 0;
animation: fade-in-top 0.5s 0.3s forwards;
-webkit-animation: fade-in-top 0.5s 0.3s forwards;
}
}
.main-sidebar {
.sidebar-sticky {
top: 88px;
z-index: 2 !important;
transition: top 0.3s ease;
&.visible-top {
top: 20px;
}
}
.widget-title {
display: inline-block;
font-size: 1rem;
font-weight: 700;
&>.iconfont {
font-size: 1.1rem;
}
}
}
/*----------侧边栏样式end ----------*/
/*----------底部样式st ----------*/
.footer {
color: var(--font-color-main);
background-color: var(--bg-color-main);
font-size: 14px;
min-height: var(--height-footer);
@include max-media-breakpoint('md') {
.container {
flex-direction: column;
align-items: center;
}
.footer-left {
text-align: center;
justify-content: center;
}
}
// 夜间模式
.theme-toggle {
margin: 0 auto;
gap: 0.15rem;
background: var(--bg-color-body);
border-radius: var(--border-radius-xlarge);
border: var(--border-solid-small);
button {
line-height: 1;
background: transparent;
border-radius: var(--border-radius-large);
&.active,
&:hover {
background: var(--bg-color-main);
}
}
.iconfont {
font-size: 0.85rem;
color: var(--font-color-main-light);
}
}
// 社交信息列表
.social-info-list {
a {
display: flex;
width: 1.75rem;
height: 1.75rem;
background-color: var(--bg-color-main-dark);
border-radius: var(--border-radius-circle);
align-items: center;
justify-content: center;
transition: background-color 0.2s;
i {
color: var(--bg-color-main);
font-size: 1rem;
}
&:hover {
background-color: var(--bg-color-body);
i {
color: var(--font-color-main);
}
}
}
}
}
main>.container {
min-height: calc(100vh - 6rem - var(--height-footer));
}
/*---------- 底部样式end ----------*/
/*---------- 文章+页面-面包屑样式st ----------*/
.breadcrumb {
font-size: 0.85rem;
background: none !important;
opacity: 0;
animation: fade-in-top 0.3s 0.2s forwards;
-webkit-animation: fade-in-top 0.3s 0.2s forwards;
li {
a,
span {
color: var(--font-color-main-light);
font-size: 0.8rem;
line-height: 1;
padding: 0.2rem 0.5rem;
background: linear-gradient(to right, var(--bg-color-primary), var(--overlay-color-light-2));
border-radius: var(--border-radius-xlarge);
border: var(--border-solid-small);
border-bottom-left-radius: var(--border-radius-small);
box-shadow: var(--shadow-box-small);
}
span {
color: var(--font-color-main);
box-shadow: var(--shadow-inset-box);
}
&:hover {
a {
box-shadow: var(--shadow-inset-box);
}
}
}
>li+li:before {
opacity: .6;
padding: 0 0.35rem;
color: var(--font-color-main-transparent);
content: "\003e";
}
}
/*---------- 文章+页面-面包屑样式end ----------*/
/*---------- 文章内容样式end ----------*/
.post-header {
.author-left,
.author-right {
--font-color-main: var(--font-color-main-transparent);
color: var(--font-color-main) !important;
}
}
.post-head,
.post-content {
color: var(--font-color-main);
}
.post .iconfont {
font-size: 1rem;
}
/* 文章内容样式 */
.post-content {
position: relative;
box-sizing: border-box;
}
/* 文章版权样式 */
.post-copyright {
position: relative;
font-size: 0.9rem;
line-height: 1.8;
color: var(--font-color-main);
border-radius: var(--border-radius-medium);
box-shadow: var(--shadow-inset-box);
z-index: 1;
border: var(--border-solid-small);
}
.copyright-svgname {
position: absolute;
height: 3rem;
top: 30%;
right: 0;
opacity: 0.9;
z-index: -1;
}
/* 文章结束样式 */
.post-end {
color: var(--border-color-main);
&::after,
&::before {
content: '';
background: var(--border-color-main);
max-width: 50%;
height: 0.05rem;
margin: 0 1rem;
flex: 1;
}
}
/* 文章标签样式 */
.category-and-tags {
$gap-size: 0.5rem;
gap: $gap-size;
a {
font-size: 0.75rem;
color: var(--font-color-main-transparent);
padding: 0.25rem 0.5rem;
border-radius: var(--border-radius-large);
border: var(--border-solid-main);
background-color: var(--bg-color-secondary);
}
a:hover {
background: var(--border-color-main);
}
.post-tags {
gap: $gap-size;
a {
padding: 0.15rem 0.5rem 0.15rem 0.15rem;
}
a::before {
content: '#';
display: inline-flex;
margin-right: 0.25rem;
background-color: var(--bg-color-main);
width: 20px;
height: 20px;
line-height: 20px;
font-weight: 700;
justify-content: center;
border-radius: var(--border-radius-large);
}
}
}
/* 分享+赞赏 */
.post-tools {
gap: 1rem;
.post-tools-item {
gap: 0.35rem;
.post-tools-title {
color: var(--font-color-main-transparent);
font-size: 0.9rem;
}
}
button {
width: 3rem;
height: 3rem;
background-image: var(--gradient-45deg);
box-shadow: var(--shadow-box-small);
border: var(--border-solid-main);
border-radius: var(--border-radius-xlarge);
.iconfont {
font-size: 1.2rem;
}
&:hover {
box-shadow: var(--shadow-inset-box);
}
}
}
/* 下一篇、上一篇 */
.post-next-prev {
gap: 1rem;
line-height: 1.8;
.post-next,
.post-prev {
position: relative;
.next-prev-title {
cursor: default;
line-height: 1;
font-size: 1.25rem;
}
&:hover {
.next-prev-title {
opacity: 0.7;
}
}
}
a {
@include ellipsis-style(2);
}
}
/*---------- 文章内容样式end ----------*/
/*---------- 评论样式st ----------*/
#comments {
font-size: 0.9rem;
}
/* 评论框 */
#comment-form {
.form-control {
font-size: 0.9rem;
}
.comment-form-info {
input:focus {
background-color: var(--overlay-color-light-5) !important;
}
textarea:focus {
background-color: var(--overlay-color-light-5) !important;
}
}
}
.com-footer {
.com-tool-list {
.com-tool-item {
position: relative;
border-radius: var(--border-radius-base);
&:hover,
&.active {
background: var(--bg-color-main);
}
}
.iconfont {
font-size: 1.25rem;
}
.com-emoji {
position: relative;
.emoji-box {
display: none;
position: absolute;
top: 3rem;
left: -0.5rem;
z-index: 10;
background-image: var(--gradient-45deg);
border: var(--border-solid-main);
border-radius: var(--border-radius-base);
overflow: hidden;
box-shadow: var(--shadow-box-small);
}
.emoji-dropdown {
max-width: 100%;
width: 22rem;
height: 15rem;
text-align: center;
overflow-x: hidden;
overflow-y: auto;
margin: 0;
}
.emoji-item {
display: inline-block;
font-size: 14px;
cursor: pointer;
.gif-img {
min-width: 4rem;
}
img {
width: 2rem;
height: auto;
max-height: 100%;
}
&:hover {
border-radius: var(--border-radius-medium);
background-color: var(--bg-color-main);
}
}
.emoji-bar {
background-color: var(--bg-color-main);
li {
cursor: pointer;
&:hover,
&.emoji-active {
background-color: var(--bg-color-secondary);
}
}
}
}
}
.btn-card {
color: var(--font-color-main);
font-size: 0.85rem;
background-image: var(--gradient-45deg);
box-shadow: var(--shadow-box-main);
border: var(--border-solid-small);
border-radius: var(--border-radius-medium);
background-clip: padding-box;
&:hover {
box-shadow: var(--shadow-inset-box);
}
}
}
/* 评论列表 */
.comment-body {
position: relative;
font-size: 0.85rem;
gap: 0.5rem;
.comment-author {
position: relative;
gap: 0.5rem;
.comment-name {
.comment-author-ua {
font-size: 0.7rem;
background-color: var(--color-primary);
color: var(--bg-color-main);
padding: 0.1rem 0.25rem;
border-radius: var(--border-radius-small);
}
}
.comment-time,
.comment-ua {
margin-right: 0.15rem;
font-size: 0.8rem;
color: var(--font-color-main-transparent);
}
img {
width: 40px;
height: 40px;
border-radius: var(--border-radius-circle);
border: var(--border-solid-main);
}
}
.comment-content {
word-break: break-all;
p {
display: inline-block;
margin: 0;
}
.emoji-image {
display: inline-block !important;
width: 2rem;
height: auto;
max-height: 100%;
vertical-align: middle;
}
img {
display: block;
max-width: 100%;
width: auto;
height: 10rem;
margin: 0.5rem 0;
border-radius: var(--border-radius-small);
}
.repy-to-author {
a {
color: var(--red);
}
}
}
.comment-footer {
position: absolute;
right: 0;
bottom: 0;
color: var(--font-color-main-transparent);
font-size: 0.85rem;
.iconfont {
color: var(--border-color-main);
}
&:hover {
.iconfont {
color: var(--font-color-main) !important;
}
}
}
&:hover {
.comment-footer .iconfont {
color: var(--font-color-main-transparent);
}
}
}
.comment-parent {
border-radius: var(--border-radius-medium);
box-shadow: var(--shadow-inset-box);
border: var(--border-solid-small);
.comment-list {
border-radius: var(--border-radius-medium);
box-shadow: var(--shadow-inset-box);
border: var(--border-solid-small);
.comment-list .comment-child {
border-bottom: 1px dashed var(--overlay-color-dark-1);
&:last-child {
border: none;
}
}
.repy-to-author+p {
display: contents;
}
}
}
.comment-child,
.comment-parent {
margin-bottom: 0.25rem;
&:last-child {
margin-bottom: 0 !important;
}
}
/*评论下一页、上一页*/
.comment-pagination {
ol {
gap: 0.5rem;
}
a {
width: 2rem;
height: 2rem;
display: flex;
background-image: var(--gradient-45deg);
border: var(--border-solid-small);
border-radius: var(--border-radius-medium);
box-shadow: var(--shadow-box-main);
background-clip: padding-box;
justify-content: center;
align-items: center;
}
li.current a {
font-weight: 700;
}
a:hover,
li.current a {
color: var(--color-primary);
box-shadow: var(--shadow-inset-box);
}
.com-next .iconfont,
.com-prev .iconfont {
font-size: 0.9rem;
}
}
/*---------- 评论样式end ----------*/
/*---------- 弹窗工具:搜索+分享+赞赏按钮样式st ----------*/
.pop-tool-overlay-bg {
opacity: 0;
visibility: hidden;
position: fixed;
inset: 0;
@include backdrop-filter(var(--overlay-color-light-1), var(--backdrop-filter-main));
z-index: 997;
-webkit-transition: all 0.4s ease-out;
transition: all 0.4s ease-out;
transform: rotate(45deg) scale(0);
}
/* 应用Mixins */
.open {
.pop-tool-overlay-bg {
opacity: 1 !important;
visibility: visible !important;
transform: rotate(0) scale(1) !important;
}
.pop-tool-box {
opacity: 1 !important;
visibility: visible !important;
top: 45% !important;
transform: translate(-50%, -50%) scale(1) !important;
}
}
.pop-tool-box {
opacity: 0;
visibility: hidden;
position: fixed;
width: calc(-20px + 100vw);
max-height: calc(100vh - 6rem);
max-width: 50rem;
z-index: 998;
top: 35%;
left: 50%;
transform: translate(-50%, -50%) scale(0);
overflow: hidden;
-webkit-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;
}
/* 海报生成 */
.main-poster {
.poster-box {
width: 400px;
max-width: calc(100vw - 1rem);
padding: 0 !important;
overflow: unset;
color: var(--font-color-main);
.poster-post-box {
--poster-text-color: var(--font-color-main-light);
position: relative;
background: var(--gradient-0deg);
width: 100%;
overflow: hidden;
border-radius: var(--border-radius-base);
}
.poster-cover {
height: 200px;
border-radius: var(--border-radius-small);
overflow: hidden;
}
.poster-content {
gap: 1rem;
.poster-date {
height: 100%;
color: var(--gray-dark);
background-color: var(--white);
border-radius: var(--border-radius-medium);
}
.poster-post-content {
.poster-post-title {
@include ellipsis-style(2);
}
.poster-post-text {
font-size: 0.9rem;
color: var(--poster-text-color);
}
}
}
.poster-footer {
border: var(--border-solid-small);
}
.down-btn-box {
width: 100%;
position: absolute;
bottom: -4rem;
}
}
}
/* 赞赏独立样式 */
.main-reward {
.reward-box {
width: auto;
}
.reward-content {
gap: 1rem;
.reward-qr {
color: var(--font-color-muted);
box-shadow: var(--shadow-inset-box);
border-radius: var(--border-radius-base);
overflow: hidden;
padding: 0.25rem;
}
img {
width: 10rem;
border-radius: var(--border-radius-base);
@include max-media-breakpoint('md') {
width: 8rem;
}
}
}
}
/* 分享独立样式 */
.share-box {
top: 50%;
p {
text-align: center;
color: var(--font-color-main-transparent);
background-color: var(--bg-color-primary);
border-radius: var(--border-radius-base);
border: var(--border-solid-small);
&:hover {
color: var(--font-color-main);
background: var(--overlay-color-light-5);
}
}
.share-a {
gap: 20px;
.share-item {
width: 3rem;
height: 3rem;
background-image: var(--gradient-0deg);
box-shadow: var(--shadow-box-main);
border: var(--border-solid-main);
background-clip: padding-box;
border-radius: var(--border-radius-circle);
&:hover {
box-shadow: var(--shadow-inset-box);
}
}
}
.wechat-qrcode,
.zdyqr-qrcode {
img {
width: 10rem;
height: 10rem;
}
}
}
/* 搜索独立样式 */
.search-box {
.search-form {
position: relative;
}
.search-name {
h5 {
font-weight: 700;
}
}
.form-control {
position: relative;
width: 100%;
height: 100%;
padding: 0.6rem 2rem 0.6rem 1rem;
font-size: 0.9rem;
border-radius: var(--border-radius-medium);
}
.site-search-btn {
position: absolute;
right: 0;
top: 0;
width: 3rem;
height: 100%;
z-index: 1;
}
}
/* 关闭按钮样式 */
.close-btn {
position: absolute;
right: 0;
top: 0;
background: var(--font-color-main);
border-bottom-left-radius: var(--border-radius-medium);
i {
color: var(--bg-color-main);
}
}
/*---------- 搜索+分享+赞赏按钮样式end ----------*/