439 lines
9.1 KiB
CSS

/* app global css */
:root {
--utools-bg-color: #f4f4f4;
--utools-font-color: #333;
--transparent-bg-color: rgba(0, 0, 0, 0.02);
--q-dark: #464646;
--q-dark-page: #303133;
}
:root:has(.body--dark) {
--utools-bg-color: #303133;
--utools-font-color: #fff;
--transparent-bg-color: rgba(255, 255, 255, 0.05);
}
.q-card--dark {
background: var(--q-dark-page);
}
body {
background: var(--utools-bg-color);
color: var(--utools-font-color);
}
/* Monaco Editor 调整行号栏样式 */
.monaco-editor .margin {
width: 40px !important;
}
.monaco-editor .line-numbers {
text-align: center !important;
width: 40px !important;
padding-right: 5px !important;
left: 0 !important;
}
/* Monaco Editor 当前行高亮样式 */
.monaco-editor .current-line {
border: none !important;
background-color: transparent !important;
}
.monaco-editor .line-numbers {
color: rgba(0, 0, 0, 0.5) !important;
}
.body--dark .monaco-editor .line-numbers {
color: rgba(255, 255, 255, 0.5) !important;
}
.monaco-editor .current-line~.line-numbers {
color: var(--q-primary) !important;
}
.monaco-editor .margin-view-overlays .current-line {
background-color: transparent !important;
}
/* Monaco Editor 滚动条样式 */
.monaco-editor .scrollbar {
width: 5px !important;
height: 5px !important;
}
.monaco-editor .scrollbar.vertical .slider {
width: 5px !important;
border-radius: 2px !important;
background: rgba(0, 0, 0, 0.2) !important;
}
.monaco-editor .scrollbar.horizontal .slider {
height: 5px !important;
border-radius: 2px !important;
background: rgba(0, 0, 0, 0.2) !important;
}
/* 标签样式 */
.q-chip {
background: #e3e3e39a;
}
.q-chip--dark {
background: #676666;
}
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-thumb {
border-radius: 10px;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
background: rgba(194, 194, 194, 0.4);
border: rgba(194, 194, 194, 0.4);
}
::-webkit-scrollbar-track-piece {
background: rgba(194, 194, 194, 0.1);
}
.fade-enter-from {
opacity: 0;
}
.fade-enter-to {
opacity: 1;
}
.fade-enter-active {
transition: opacity 0.3s ease;
}
/* 优化 Tooltip 样式 */
.q-tooltip {
font-size: 11px;
}
.q-tooltip {
background: rgba(255, 255, 255, 0.18) !important;
border-radius: 6px;
backdrop-filter: blur(8px);
padding: 6px 10px;
font-size: 0.85rem;
font-weight: 400;
letter-spacing: 0.3px;
color: rgba(35, 35, 35, 0.98) !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
transform-origin: center;
animation: tooltip-appear 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
/* 暗色模式适配 */
.body--dark .q-tooltip {
background: rgba(35, 35, 35, 0.18) !important;
color: rgba(255, 255, 255, 0.98) !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
/* Tooltip 动画 */
@keyframes tooltip-appear {
from {
opacity: 0;
transform: scale(0.95) translateY(5px);
}
to {
opacity: 1;
transform: scale(1) translateY(0);
}
}
/* 多行文本的 Tooltip */
.q-tooltip.multiline {
max-width: 280px;
line-height: 1.5;
white-space: pre-wrap;
}
/* Tooltip 位置微调 */
.q-tooltip[data-v-anchor="top middle"] {
transform-origin: bottom center;
}
.q-tooltip[data-v-anchor="bottom middle"] {
transform-origin: top center;
}
.q-tooltip[data-v-anchor="center left"] {
transform-origin: center right;
}
.q-tooltip[data-v-anchor="center right"] {
transform-origin: center left;
}
.full-height {
height: 100vh;
}
/* 毛玻璃效果叠加 */
body.glass-effect-menu .q-card.command {
background: rgba(255, 255, 255, calc(0.3 + var(--glass-effect-strength) * 0.01)) !important;
}
body.body--dark.glass-effect-menu .q-card.command {
background: rgba(30, 30, 30, calc(0.3 + var(--glass-effect-strength) * 0.02)) !important;
}
/* 标签栏毛玻璃效果 */
body.glass-effect-menu .tag-bar .q-tabs {
background: rgba(255, 255, 255, calc(0.15 + var(--glass-effect-strength) * 0.01)) !important;
backdrop-filter: blur(calc(var(--glass-effect-strength) * 1px)) !important;
-webkit-backdrop-filter: blur(calc(var(--glass-effect-strength) * 1px)) !important;
border-right: 1px solid rgba(255, 255, 255, 0.1);
}
body.body--dark.glass-effect-menu .tag-bar .q-tabs {
background: rgba(0, 0, 0, calc(0.2 + var(--glass-effect-strength) * 0.02)) !important;
border-right: 1px solid rgba(255, 255, 255, 0.05);
}
/* 基础菜单样式 - 始终保持最小毛玻璃效果 */
.q-menu {
background: rgba(255, 255, 255, 0.15) !important;
backdrop-filter: blur(5px) !important;
-webkit-backdrop-filter: blur(5px) !important;
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 4px 16px 0 rgba(31, 38, 135, 0.07);
}
.body--dark .q-menu {
background: rgba(0, 0, 0, 0.2) !important;
border: 1px solid rgba(255, 255, 255, 0.05);
}
/* 毛玻璃菜单效果 - 叠加用户设置的效果 */
body.glass-effect-menu .q-menu {
background: rgba(255,
255,
255,
calc(0.15 + var(--glass-effect-strength) * 0.01)) !important;
backdrop-filter: blur(calc(5px + var(--glass-effect-strength) * 1px)) !important;
-webkit-backdrop-filter: blur(calc(5px + var(--glass-effect-strength) * 1px)) !important;
}
/* 暗色模式菜单 */
body.body--dark.glass-effect-menu .q-menu {
background: rgba(0,
0,
0,
calc(0.2 + var(--glass-effect-strength) * 0.02)) !important;
}
/* 菜单列表透明背景 */
.q-menu .q-list {
background: transparent !important;
}
/* 菜单项浮效果 */
.q-menu .q-item:hover {
background: rgba(255, 255, 255, 0.1) !important;
}
.body--dark .q-menu .q-item:hover {
background: rgba(255, 255, 255, 0.05) !important;
}
/* 输入框样式 */
.q-menu .q-field__control {
background: rgba(255, 255, 255, 0.15) !important;
border-radius: 4px;
}
.body--dark .q-menu .q-field__control {
background: rgba(0, 0, 0, 0.3) !important;
}
/* 添加图标光晕效果 */
.featureIco {
transition: all 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
will-change: transform;
position: relative;
z-index: 1;
}
.featureIcoHover {
transform: scale(1.08) translateY(-2px);
}
.featureIco::after {
content: "";
position: absolute;
z-index: -1;
top: 0;
left: 0;
right: 0;
bottom: 0;
transition: all 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
opacity: 0;
background-image: var(--icon-url);
background-size: contain;
background-position: center;
background-repeat: no-repeat;
filter: blur(8px) brightness(1.1);
transform: scale(1.05);
pointer-events: none;
}
.featureIcoHover::after {
opacity: 0.8;
transform: scale(1.1);
}
.feature-disabled,
.platform-icons-disabled {
opacity: 0.5;
filter: grayscale(100%);
}
.platform-icons {
display: flex;
gap: 2px;
align-items: center;
justify-content: flex-end;
font-size: 12px;
}
.body--dark .q-tab-panels {
background-color: transparent;
}
/* 左右移动 */
@keyframes leftRight {
0% {
transform: translateX(-2px);
opacity: 0.7;
}
50% {
transform: translateX(2px);
opacity: 1;
}
100% {
transform: translateX(-2px);
opacity: 0.7;
}
}
/* 上下移动 */
@keyframes upDown {
0% {
transform: translateY(-1px);
opacity: 1;
}
50% {
transform: translateY(1px);
opacity: 0.6;
}
75% {
transform: translateY(0.5px);
opacity: 0.8;
}
100% {
transform: translateY(-1px);
opacity: 1;
}
}
/* 左右抖动 */
@keyframes shake {
0%,
100% {
transform: rotate(0deg);
}
25% {
transform: rotate(-10deg);
}
75% {
transform: rotate(10deg);
}
}
/* q-field--filled 布局更加紧凑 */
/* 输入框高度及字体 */
.q-field--filled:not(.q-textarea) .q-field__control,
.q-field--filled:not(.q-textarea) .q-field__control>*,
.q-field--filled:not(.q-field--labeled):not(.q-textarea) .q-field__native {
max-height: 36px !important;
min-height: 36px !important;
}
.q-field--filled .q-field__control,
.q-field--filled .q-field__control>*,
.q-field--filled .q-field__native {
border-radius: 5px;
font-size: 12px;
}
.q-field--filled.q-select--with-chips .q-field__control .q-chip {
margin: 0 4px;
}
/* 输入框图标大小 */
.q-field--filled .q-field__control .q-icon {
font-size: 18px;
}
/* 输入框标签字体大小,占位时的位置 */
.q-field--filled .q-field__label {
font-size: 11px;
top: 11px;
}
/* 输入框标签悬浮的位置 */
.q-field--filled.q-field--dense.q-field--float .q-field__label {
transform: translateY(-50%) scale(0.75);
}
/* 去除filled输入框边框 */
.q-field--filled .q-field__control:before {
border: none;
}
/* 去除filled输入框下划线 */
.q-field--filled .q-field__control:after {
height: 0;
border-bottom: none;
}
/* 输入框背景颜色及内边距 */
.q-field--filled .q-field__control {
background: rgba(0, 0, 0, 0.03);
padding: 0 8px;
}
/* 输入框聚焦时的背景颜色 */
.q-field--filled.q-field--highlighted .q-field__control {
background: rgba(0, 0, 0, 0.03);
}
/* 暗黑模式下的输入框背景颜色 */
.body--dark .q-field--filled .q-field__control {
background: rgba(255, 255, 255, 0.04);
}
/* 暗黑模式下输入框聚焦时的背景颜色 */
.body--dark .q-field--filled.q-field--highlighted .q-field__control {
background: rgba(255, 255, 255, 0.08);
}