mirror of
https://github.com/fofolee/uTools-quickcommand.git
synced 2025-06-08 06:16:27 +08:00
439 lines
9.1 KiB
CSS
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);
|
|
}
|