paper-burner/css/history_detail/05-utilities/buttons.css

410 lines
11 KiB
CSS
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.

/**
* Unified Button System - 统一按钮尺寸系统
*
* 职责:全局浮动按钮尺寸标准化
* 作用域TOC、Chatbot、沉浸模式等浮动按钮
* 依赖variables.css
*
* 提取自unified-button-sizes.css
*
* 包含:
* - 按钮尺寸变量系统
* - 圆形按钮样式类
* - 响应式尺寸调整
* - 无障碍支持
*/
/* ==================== 1. 按钮尺寸变量系统 ==================== */
:root {
/* 桌面端按钮尺寸(适中尺寸,不会太小) */
--btn-small-size: 40px; /* TOC按钮等 */
--btn-medium-size: 44px; /* Chatbot等 */
--btn-large-size: 42px; /* 沉浸式按钮等 */
/* 移动端按钮尺寸(适度缩小但保持可用性) */
--btn-small-mobile: 36px;
--btn-medium-mobile: 40px;
--btn-large-mobile: 44px;
/* 对应的图标尺寸 */
--btn-icon-small: 18px;
--btn-icon-medium: 20px;
--btn-icon-large: 19px;
/* 移动端图标尺寸 */
--btn-icon-small-mobile: 16px;
--btn-icon-medium-mobile: 18px;
--btn-icon-large-mobile: 18px;
}
/* ==================== 2. 基础按钮样式 ==================== */
/* Tiny Round Button (小型圆形按钮) - 极简低调风格 */
.tiny-round-btn {
border-radius: 50% !important;
background-color: rgba(255, 255, 255, 0.9) !important;
backdrop-filter: blur(4px);
color: #94a3b8 !important; /* slate-400 */
border: 1px solid #e2e8f0 !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05) !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
cursor: pointer !important;
padding: 0 !important;
opacity: 0.6; /* 默认低透明度,减少视觉干扰 */
transition: all 0.2s ease !important;
width: var(--btn-small-size) !important;
height: var(--btn-small-size) !important;
font-size: var(--btn-icon-small) !important;
}
.tiny-round-btn:hover {
opacity: 1;
color: #3b82f6 !important; /* blue-500 */
border-color: #bfdbfe !important; /* blue-200 */
box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15) !important;
transform: translateY(-2px);
}
.tiny-round-btn:active {
transform: translateY(0);
background-color: #f8fafc !important;
}
/* 移动端适配 */
@media (max-width: 768px) {
.tiny-round-btn {
opacity: 0.8; /* 移动端稍微不那么透明,因为没有 hover */
}
}
/* Medium Round Button (中型圆形按钮) */
.medium-round-btn {
border-radius: 50% !important;
background-color: var(--color-primary) !important;
color: white !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
box-shadow: 0 2px 8px rgba(59, 130, 246, 0.15) !important;
border: none !important;
cursor: pointer !important;
padding: 0 !important;
transition: background-color var(--transition-fast),
transform var(--transition-fast) !important;
width: var(--btn-medium-size) !important;
height: var(--btn-medium-size) !important;
font-size: var(--btn-icon-medium) !important;
}
.medium-round-btn:hover {
background-color: #1d4ed8 !important;
transform: scale(1.08);
}
/* Large Round Button (大型圆形按钮) */
.big-round-btn,
.large-round-btn {
border-radius: 50% !important;
background-color: var(--color-primary) !important;
color: white !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
box-shadow: 0 2px 8px rgba(59, 130, 246, 0.15) !important;
border: none !important;
cursor: pointer !important;
padding: 0 !important;
transition: background-color var(--transition-fast),
transform var(--transition-fast) !important;
width: var(--btn-large-size) !important;
height: var(--btn-large-size) !important;
font-size: var(--btn-icon-large) !important;
}
.big-round-btn:hover,
.large-round-btn:hover {
background-color: #1d4ed8 !important;
transform: scale(1.08);
}
/* ==================== 3. 图标样式 ==================== */
.tiny-round-btn > i,
.medium-round-btn > i,
.big-round-btn > i,
.large-round-btn > i {
font-size: inherit !important;
line-height: 1 !important;
padding: 0 !important;
}
/* ==================== 4. 特定按钮尺寸覆盖 ==================== */
/* 沉浸式布局按钮 */
#toggle-immersive-btn {
width: var(--btn-large-size) !important;
height: var(--btn-large-size) !important;
font-size: var(--btn-icon-large) !important;
}
/* Chatbot FAB */
#chatbot-fab {
width: var(--btn-medium-size) !important;
height: var(--btn-medium-size) !important;
font-size: var(--btn-icon-medium) !important;
}
/* Chatbot FAB按钮样式 - 极简低调风格(与 floatingHistoryBtn 一致) */
.chatbot-fab-button {
width: var(--btn-medium-size) !important;
height: var(--btn-medium-size) !important;
border-radius: 50% !important;
background-color: rgba(255, 255, 255, 0.9) !important;
backdrop-filter: blur(4px);
color: #94a3b8 !important; /* slate-400 */
border: 1px solid #e2e8f0 !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05) !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
cursor: pointer !important;
padding: 0 !important;
opacity: 0.6; /* 默认低透明度,减少视觉干扰 */
transition: all 0.2s ease !important;
outline: none !important;
}
.chatbot-fab-button i {
font-size: var(--btn-icon-medium) !important;
line-height: 1 !important;
}
.chatbot-fab-button:hover {
opacity: 1;
color: #3b82f6 !important; /* blue-500 */
border-color: #bfdbfe !important; /* blue-200 */
box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15) !important;
transform: translateY(-2px);
}
.chatbot-fab-button:active {
transform: translateY(0);
background-color: #f8fafc !important;
}
/* ==================== 5. 响应式设计 ==================== */
/* 平板设备优化 (768px - 1024px) */
@media (max-width: 1024px) and (min-width: 769px) {
.tiny-round-btn {
width: 38px !important;
height: 38px !important;
font-size: 17px !important;
}
.medium-round-btn {
width: 42px !important;
height: 42px !important;
font-size: 19px !important;
}
.big-round-btn,
.large-round-btn {
width: 40px !important;
height: 40px !important;
font-size: 19px !important;
}
.chatbot-fab-button {
width: 42px !important;
height: 42px !important;
}
.chatbot-fab-button i {
font-size: 19px !important;
}
#toggle-immersive-btn {
width: 40px !important;
height: 40px !important;
font-size: 19px !important;
}
}
/* 移动端响应式设计 (700px以下) */
@media (max-width: 700px) {
:root {
--btn-small-size: var(--btn-small-mobile);
--btn-medium-size: var(--btn-medium-mobile);
--btn-large-size: var(--btn-large-mobile);
--btn-icon-small: var(--btn-icon-small-mobile);
--btn-icon-medium: var(--btn-icon-medium-mobile);
--btn-icon-large: var(--btn-icon-large-mobile);
}
.tiny-round-btn {
width: var(--btn-small-mobile) !important;
height: var(--btn-small-mobile) !important;
font-size: var(--btn-icon-small-mobile) !important;
}
.medium-round-btn {
width: var(--btn-medium-mobile) !important;
height: var(--btn-medium-mobile) !important;
font-size: var(--btn-icon-medium-mobile) !important;
}
.big-round-btn,
.large-round-btn {
width: var(--btn-large-mobile) !important;
height: var(--btn-large-mobile) !important;
font-size: var(--btn-icon-large-mobile) !important;
}
#chatbot-fab {
width: var(--btn-medium-mobile) !important;
height: var(--btn-medium-mobile) !important;
font-size: var(--btn-icon-medium-mobile) !important;
}
.chatbot-fab-button {
width: var(--btn-medium-mobile) !important;
height: var(--btn-medium-mobile) !important;
opacity: 0.8; /* 移动端稍微不那么透明,因为没有 hover */
}
.chatbot-fab-button i {
font-size: var(--btn-icon-medium-mobile) !important;
}
#toggle-immersive-btn {
width: var(--btn-large-mobile) !important;
height: var(--btn-large-mobile) !important;
font-size: var(--btn-icon-large-mobile) !important;
}
}
/* 极小屏幕设备 (400px以下) */
@media (max-width: 400px) {
.tiny-round-btn {
width: 34px !important;
height: 34px !important;
font-size: 15px !important;
}
.medium-round-btn {
width: 38px !important;
height: 38px !important;
font-size: 17px !important;
}
.big-round-btn,
.large-round-btn {
width: 42px !important;
height: 42px !important;
font-size: 19px !important;
}
#chatbot-fab {
width: 38px !important;
height: 38px !important;
font-size: 17px !important;
}
.chatbot-fab-button {
width: 38px !important;
height: 38px !important;
}
.chatbot-fab-button i {
font-size: 17px !important;
}
}
/* ==================== 6. 无障碍支持 ==================== */
/* 减少动画偏好 */
@media (prefers-reduced-motion: reduce) {
.tiny-round-btn,
.medium-round-btn,
.big-round-btn,
.large-round-btn {
transition: background-color var(--transition-fast) !important;
}
.tiny-round-btn:hover,
.medium-round-btn:hover,
.big-round-btn:hover,
.large-round-btn:hover {
transform: none !important;
}
}
/* 高对比度模式支持 */
@media (prefers-contrast: high) {
.tiny-round-btn,
.medium-round-btn,
.big-round-btn,
.large-round-btn {
border: 2px solid currentColor !important;
box-shadow: none !important;
}
}
/* ==================== 7. 暗色模式适配 ==================== */
@media (prefers-color-scheme: dark) {
.tiny-round-btn {
background-color: rgba(30, 41, 59, 0.9) !important; /* slate-800 with opacity */
color: #cbd5e1 !important; /* slate-300 */
border-color: #475569 !important; /* slate-600 */
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
}
.tiny-round-btn:hover {
color: #60a5fa !important; /* blue-400 */
border-color: #3b82f6 !important; /* blue-500 */
box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25) !important;
}
.tiny-round-btn:active {
background-color: rgba(15, 23, 42, 0.95) !important; /* slate-900 */
}
.medium-round-btn,
.big-round-btn,
.large-round-btn {
background-color: #1e40af !important;
box-shadow: 0 2px 8px rgba(30, 64, 175, 0.3) !important;
}
.medium-round-btn:hover,
.big-round-btn:hover,
.large-round-btn:hover {
background-color: #1e3a8a !important;
}
.chatbot-fab-button {
background-color: rgba(30, 41, 59, 0.9) !important; /* slate-800 with opacity */
color: #cbd5e1 !important; /* slate-300 */
border-color: #475569 !important; /* slate-600 */
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
}
.chatbot-fab-button:hover {
color: #60a5fa !important; /* blue-400 */
border-color: #3b82f6 !important; /* blue-500 */
box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25) !important;
}
.chatbot-fab-button:active {
background-color: rgba(15, 23, 42, 0.95) !important; /* slate-900 */
}
}