237 lines
5.0 KiB
CSS
237 lines
5.0 KiB
CSS
/**
|
||
* Context Menu - 自定义右键菜单
|
||
*
|
||
* 职责:Notion 风格的右键菜单
|
||
* 作用域:#custom-context-menu 及其子元素
|
||
* 依赖:variables.css
|
||
*
|
||
* 合并自:history_detail_inline_styles.css
|
||
*
|
||
* 包含:
|
||
* - 现代化菜单容器
|
||
* - 颜色选择面板
|
||
* - 高亮文本悬停效果
|
||
* - 批注指示符
|
||
*/
|
||
|
||
/* ==================== 1. Notion 风格菜单容器 ==================== */
|
||
|
||
#custom-context-menu {
|
||
position: fixed; /* 改为 fixed,相对于视口定位,避免滚动导致的位置偏移 */
|
||
z-index: 10000;
|
||
|
||
/* Notion 风格外观 */
|
||
background-color: #fff;
|
||
border: 1px solid #eee;
|
||
border-radius: var(--radius-md);
|
||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||
|
||
/* 布局 */
|
||
padding: 6px 0;
|
||
min-width: 220px;
|
||
|
||
/* 字体 */
|
||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||
font-size: var(--font-size-sm);
|
||
color: var(--color-text-primary);
|
||
|
||
/* 隐藏状态 */
|
||
display: none;
|
||
}
|
||
|
||
#custom-context-menu ul {
|
||
list-style: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
#custom-context-menu li {
|
||
padding: var(--spacing-sm) var(--spacing-md);
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
transition: background-color 0.15s ease-in-out;
|
||
}
|
||
|
||
#custom-context-menu li:hover {
|
||
background-color: #f5f5f5;
|
||
}
|
||
|
||
/* ==================== 2. 菜单项图标 ==================== */
|
||
|
||
#custom-context-menu li i.fa {
|
||
margin-right: var(--spacing-md);
|
||
color: #555;
|
||
width: 16px;
|
||
text-align: center;
|
||
}
|
||
|
||
/* 取消高亮选项的特殊样式 */
|
||
#custom-context-menu ul li[data-action="remove-highlight"] {
|
||
color: #dc3545;
|
||
border-top: 1px solid #eee;
|
||
}
|
||
|
||
#custom-context-menu ul li[data-action="remove-highlight"]:hover {
|
||
background-color: #f8d7da;
|
||
color: #721c24;
|
||
}
|
||
|
||
/* 添加批注选项的特殊样式 */
|
||
#custom-context-menu ul li[data-action="add-note"] {
|
||
color: #28a745;
|
||
border-top: 1px solid #eee;
|
||
}
|
||
|
||
#custom-context-menu ul li[data-action="add-note"]:hover {
|
||
background-color: #d4edda;
|
||
color: #155724;
|
||
}
|
||
|
||
/* 编辑批注选项的特殊样式 */
|
||
#custom-context-menu ul li[data-action="edit-note"] {
|
||
color: #17a2b8;
|
||
border-top: 1px solid #eee;
|
||
}
|
||
|
||
#custom-context-menu ul li[data-action="edit-note"]:hover {
|
||
background-color: #d1ecf1;
|
||
color: #0c5460;
|
||
}
|
||
|
||
/* ==================== 3. 颜色选择面板 ==================== */
|
||
|
||
#custom-context-menu .color-palette {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-left: auto;
|
||
padding-left: var(--spacing-md);
|
||
}
|
||
|
||
#custom-context-menu .color-option {
|
||
width: 18px;
|
||
height: 18px;
|
||
border-radius: 50%;
|
||
margin-left: 6px;
|
||
cursor: pointer;
|
||
border: 1px solid rgba(0,0,0,0.1);
|
||
transition: transform 0.1s ease-out;
|
||
}
|
||
|
||
#custom-context-menu .color-option:hover {
|
||
transform: scale(1.15);
|
||
}
|
||
|
||
/* ==================== 4. 菜单分隔线 ==================== */
|
||
|
||
#custom-context-menu hr.menu-divider {
|
||
border: none;
|
||
border-top: 1px solid #eee;
|
||
margin: 6px 0;
|
||
}
|
||
|
||
.color-yellow {
|
||
background-color: rgba(255, 255, 0, 0.75);
|
||
}
|
||
|
||
.color-pink {
|
||
background-color: rgba(253, 170, 200, 0.75);
|
||
}
|
||
|
||
.color-lightblue {
|
||
background-color: rgba(95, 211, 250, 0.75);
|
||
}
|
||
|
||
.color-lightgreen {
|
||
background-color: rgba(178, 253, 178, 0.75);
|
||
}
|
||
|
||
.color-purple {
|
||
background-color: rgba(221, 160, 221, 0.75);
|
||
}
|
||
|
||
.color-orange {
|
||
background-color: rgba(255, 165, 0, 0.75);
|
||
}
|
||
|
||
.highlight-yellow {
|
||
background-color: rgba(255, 255, 0, 0.75);
|
||
}
|
||
|
||
.highlight-pink {
|
||
background-color: rgba(253, 170, 200, 0.75);
|
||
}
|
||
|
||
.highlight-lightblue {
|
||
background-color: rgba(95, 211, 250, 0.75);
|
||
}
|
||
|
||
.highlight-lightgreen {
|
||
background-color: rgba(178, 253, 178, 0.75);
|
||
}
|
||
|
||
.highlight-purple {
|
||
background-color: rgba(221, 160, 221, 0.75);
|
||
}
|
||
|
||
.highlight-orange {
|
||
background-color: rgba(255, 165, 0, 0.75);
|
||
}
|
||
|
||
/* 高亮文本悬停效果 */
|
||
.annotation-highlight:hover {
|
||
border-radius: 4px;
|
||
box-shadow: 0 2px 8px rgba(0,0,0,0.15);
|
||
transform: translateY(-1px); /* 轻微上移效果 */
|
||
}
|
||
|
||
/* 高亮文本右上角的小符号 */
|
||
.annotation-highlight::after {
|
||
content: "📝"; /* 使用笔记本emoji作为符号 */
|
||
position: absolute;
|
||
top: -8px;
|
||
right: -8px;
|
||
font-size: 12px;
|
||
background: rgba(255, 255, 255, 0.95);
|
||
border: 1px solid #ccc;
|
||
border-radius: 50%;
|
||
width: 18px;
|
||
height: 18px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
opacity: 0;
|
||
transition: opacity 0.2s ease;
|
||
pointer-events: none; /* 不阻止点击事件 */
|
||
z-index: 10;
|
||
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
|
||
}
|
||
|
||
/* 鼠标悬停时显示小符号 */
|
||
.annotation-highlight:hover::after {
|
||
opacity: 1;
|
||
}
|
||
|
||
/* 有批注的高亮文本显示不同的符号 */
|
||
.annotation-highlight.has-note::after {
|
||
content: "💬"; /* 使用对话框emoji表示有批注 */
|
||
opacity: 0.8; /* 有批注的始终显示,但透明度较低 */
|
||
background: rgba(255, 255, 255, 0.98);
|
||
}
|
||
|
||
.annotation-highlight.has-note:hover::after {
|
||
opacity: 1;
|
||
}
|
||
|
||
/* 移动设备上始终显示小符号 */
|
||
@media (max-width: 768px) {
|
||
.annotation-highlight::after {
|
||
opacity: 0.6;
|
||
}
|
||
|
||
.annotation-highlight.has-note::after {
|
||
opacity: 0.9;
|
||
}
|
||
}
|
||
|