hexo-theme-halunhaku
Version:
A modern, responsive Hexo theme with enhanced code blocks, perfect cover images, and Chinese text optimization. Production-ready with mobile-first design.
154 lines (137 loc) • 4.97 kB
CSS
/* 代码块和复制按钮的专用样式 */
/* 隐藏所有其他复制按钮 */
button[class*="copy"]:not(.halunhaku-copy-btn),
button[title*="复制"]:not(.halunhaku-copy-btn),
button[title*="copy"]:not(.halunhaku-copy-btn),
button[title*="Copy"]:not(.halunhaku-copy-btn),
.copy-btn:not(.halunhaku-copy-btn),
.copy-button:not(.halunhaku-copy-btn),
.hljs-copy:not(.halunhaku-copy-btn),
.code-copy:not(.halunhaku-copy-btn),
[data-clipboard-text]:not(.halunhaku-copy-btn),
.clipboard-btn:not(.halunhaku-copy-btn) {
display: none ;
visibility: hidden ;
opacity: 0 ;
pointer-events: none ;
}
/* 主题专用复制按钮样式 */
.halunhaku-copy-btn {
position: absolute ;
top: 8px ;
right: 12px ;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.8) 100%) ;
border: 1px solid rgba(12, 127, 242, 0.15) ;
border-radius: 6px ;
width: 32px ;
height: 32px ;
cursor: pointer ;
opacity: 0.7 ;
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) ;
z-index: 20 ;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) ;
backdrop-filter: blur(8px) ;
-webkit-backdrop-filter: blur(8px) ;
display: flex ;
align-items: center ;
justify-content: center ;
font-size: 14px ;
user-select: none ;
-webkit-user-select: none ;
-moz-user-select: none ;
transform: translateY(-2px) scale(0.95) ;
visibility: visible ;
pointer-events: auto ;
}
.halunhaku-copy-btn:hover {
opacity: 1 ;
background: linear-gradient(135deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0.95) 100%) ;
border-color: var(--primary-color) ;
transform: translateY(0) scale(1.02) ;
box-shadow: 0 4px 12px rgba(12, 127, 242, 0.15) ;
}
.halunhaku-copy-btn:active {
transform: translateY(-1px) scale(1.02) ;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12) ;
}
.halunhaku-copy-btn.success {
background: linear-gradient(135deg, #10b981 0%, #059669 100%) ;
border-color: #10b981 ;
color: white ;
transform: translateY(-2px) scale(1.05) ;
}
.halunhaku-copy-btn.error {
background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%) ;
border-color: #ef4444 ;
color: white ;
transform: translateY(-2px) scale(1.05) ;
}
/* 桌面端悬停显示复制按钮 */
.prose pre:hover .halunhaku-copy-btn,
.prose-lg pre:hover .halunhaku-copy-btn {
opacity: 0.8 ;
transform: translateY(0) scale(1) ;
}
.prose pre:hover .halunhaku-copy-btn:hover,
.prose-lg pre:hover .halunhaku-copy-btn:hover {
opacity: 1 ;
transform: translateY(-2px) scale(1.05) ;
}
/* 移动端和平板始终显示复制按钮 */
@media (max-width: 1024px) {
.prose pre .halunhaku-copy-btn,
.prose-lg pre .halunhaku-copy-btn {
opacity: 0.8 ;
transform: translateY(0) scale(1) ;
}
}
@media (max-width: 768px) {
.halunhaku-copy-btn {
top: 6px ;
right: 8px ;
width: 28px ;
height: 28px ;
font-size: 12px ;
border-radius: 4px ;
}
}
@media (max-width: 480px) {
.halunhaku-copy-btn {
top: 4px ;
right: 6px ;
width: 24px ;
height: 24px ;
font-size: 10px ;
border-radius: 3px ;
}
}
/* 深色模式调整 */
@media (prefers-color-scheme: dark) {
.halunhaku-copy-btn {
background: linear-gradient(135deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.7) 100%) ;
border-color: rgba(12, 127, 242, 0.3) ;
color: rgba(255, 255, 255, 0.9) ;
}
.halunhaku-copy-btn:hover {
background: linear-gradient(135deg, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.8) 100%) ;
border-color: var(--primary-color) ;
box-shadow: 0 8px 24px rgba(12, 127, 242, 0.3) ;
}
}
/* 防止文本选择 */
.halunhaku-copy-btn::selection {
background: transparent ;
}
.halunhaku-copy-btn::-moz-selection {
background: transparent ;
}
/* 动画效果 */
@keyframes shake {
0%, 100% { transform: translateX(0) scale(1.1) ; }
10%, 30%, 50%, 70%, 90% { transform: translateX(-2px) scale(1.1) ; }
20%, 40%, 60%, 80% { transform: translateX(2px) scale(1.1) ; }
}
@keyframes rotate {
from { transform: scale(1.1) rotate(0deg) ; }
to { transform: scale(1.1) rotate(360deg) ; }
}