Files
pixelheros/put/web/src/style.css
pan 799b93817d refactor: 重构技能触发逻辑,将proc_skill从命中触发改为施法后触发
1.  调整proc_skill触发时机为施法出手时判定,一次施法仅判定一次,与命中/弹道数无关
2.  移除HeroAtkSystem中旧的proc_skill触发逻辑,新增SCastSystem的tryProcSkill方法
3.  更新技能配置注释、编辑器文案与文档说明,同步调整服务端技能描述显示
4.  全局设置Element Plus组件为small尺寸,优化编辑器UI布局
5.  清理冗余的proc_skill快照传递逻辑,移除unused的reviveOptions计算属性
2026-09-08 17:22:41 +08:00

270 lines
7.2 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.
:root {
--brand: #4a90e2;
--brand-light: #7fb3f0;
--bg: #f5f9ff;
--panel: #ffffff;
--border: #e3ecf7;
--text: #2c3e50;
--text-light: #7a8ba0;
}
* { box-sizing: border-box; }
html, body, #app { height: 100%; margin: 0; }
body {
font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif;
background: var(--bg);
color: var(--text);
/* 编辑页全局缩小字号,同屏容纳更多字段 */
font-size: 12px;
}
/* Element Plus 表单控件整体缩小一档(默认 14px → 12px) */
.hero-app .el-input__wrapper,
.hero-app .el-select__wrapper,
.hero-app .el-textarea__inner,
.hero-app .el-form-item__label {
font-size: 12px;
}
/* 行间距压缩:表单项下边距 + 行高收紧 */
.hero-app .el-form-item { margin-bottom: 8px; line-height: 1.2; }
.hero-app .el-form-item__label { line-height: 1.2; padding-bottom: 2px; }
.hero-app .el-button { font-size: 12px; height: 24px; padding: 5px 10px; }
.hero-app .el-button--small { height: 20px; padding: 4px 8px; }
/* 控件高度压缩:用 CSS 变量统一覆盖 Element Plus 各尺寸档(small 由 main.js 全局注册) */
.hero-app {
--el-component-size-small: 22px;
--el-component-size: 24px;
--el-component-size-large: 28px;
--el-input-height: 22px;
}
.hero-app .el-input__wrapper { padding: 0 8px; }
.hero-app .el-select__wrapper { min-height: 22px; padding: 0 8px; }
.hero-app .el-input-number { width: auto; }
.hero-app .el-input-number .el-input__inner { text-align: left; }
.hero-app .el-tabs__item { font-size: 12px; height: 30px; }
.hero-app .el-tabs__header { margin-bottom: 8px; }
.hero-app .el-tabs__nav-wrap::after { height: 1px; }
.hero-app {
height: 100%;
display: flex;
flex-direction: column;
}
.hero-header {
background: linear-gradient(135deg, #6fb1ff 0%, #4a90e2 100%);
color: #fff;
padding: 12px 20px;
display: flex;
align-items: center;
justify-content: space-between;
box-shadow: 0 2px 8px rgba(74, 144, 226, 0.25);
}
.hero-header h1 { font-size: 15px; margin: 0; font-weight: 600; }
.hero-header .actions { display: flex; gap: 8px; }
.hero-main {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
/* 首页工具栏:计数 + 排序 + 新建入口 */
.home-toolbar {
display: flex;
gap: 8px;
align-items: center;
justify-content: space-between;
padding: 10px 14px;
background: var(--panel);
border-bottom: 1px solid var(--border);
flex-shrink: 0;
}
/* 排序控件组:维度 + 方向 */
.toolbar-sort { display: flex; align-items: center; gap: 8px; }
/* 首页:一行一个英雄的列表布局 */
.hero-rows {
flex: 1;
overflow-y: auto;
padding: 12px 16px 40px;
display: flex;
flex-direction: column;
gap: 8px;
}
.hero-row {
background: var(--panel);
border: 1px solid var(--border);
border-radius: 8px;
padding: 8px 12px;
cursor: pointer;
transition: box-shadow 0.15s;
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px 14px;
font-size: 12px;
}
.hero-row:hover { box-shadow: 0 3px 12px rgba(46, 91, 160, 0.15); }
/* 行首:uuid / 名称 / 星级+职业,三行竖排 */
.row-main { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; min-width: 100px; }
.row-sub { display: flex; align-items: center; gap: 6px; }
.row-uuid { font-family: Menlo, Consolas, monospace; color: var(--text-light); font-size: 11px; }
.row-name { font-size: 13px; font-weight: 600; }
.card-rarity { color: #f5a623; font-size: 11px; }
.row-role {
border-radius: 4px;
padding: 0 6px;
font-size: 11px;
line-height: 18px;
}
/* 职业标签颜色区分 */
.role-tank { background: #e6f7ff; color: #1890ff; }
.role-warrior { background: #fff2e8; color: #fa541c; }
.role-assassin { background: #f9f0ff; color: #722ed1; }
.role-archer { background: #f6ffed; color: #52c41a; }
.role-mage { background: #fff0f6; color: #eb2f96; }
.role-support { background: #fcffe6; color: #a0d911; }
/* 三维徽章:竖排三行显示 */
.row-meta { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.stat {
background: #f0f7ef;
color: #4a7c3f;
border-radius: 4px;
padding: 0 6px;
font-size: 11px;
line-height: 18px;
}
/* 技能段:普攻/大招两行 */
.row-skills { display: flex; flex-direction: column; gap: 2px; min-width: 200px; }
.skill-detail { color: var(--text-light); font-size: 11px; margin-left: 4px; white-space: pre-wrap; word-break: break-all; }
/* 触发/光环/加成:chip 流式排布 */
.row-triggers { display: flex; flex-wrap: wrap; gap: 4px 6px; flex: 1; min-width: 160px; }
.trigger-chip {
background: #eef4fc;
color: var(--brand);
border-radius: 4px;
padding: 0 6px;
font-size: 11px;
line-height: 18px;
}
.trigger-chip.aura { background: #f4f0fa; color: #7c5cbf; }
.row-comment {
width: 100%;
color: var(--text-light);
font-size: 11px;
border-top: 1px dashed var(--border);
padding-top: 4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* 英雄简介:整行展示,超长省略,悬停 title 查看全文 */
.row-info {
width: 100%;
color: var(--text);
font-size: 11px;
border-top: 1px dashed var(--border);
padding-top: 4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.tag {
display: inline-block;
background: #eef4fc;
color: var(--brand);
border-radius: 4px;
padding: 0 5px;
margin-right: 6px;
font-size: 11px;
line-height: 18px;
}
/* 编辑弹窗:内容区内部滚动 */
.editor-dialog .el-dialog__body { max-height: 78vh; overflow-y: auto; padding: 8px 16px; }
.hero-editor {
padding: 4px 0 16px;
}
.panel {
background: var(--panel);
border-radius: 8px;
padding: 10px 12px;
margin-bottom: 10px;
border: 1px solid var(--border);
box-shadow: 0 1px 3px rgba(46, 91, 160, 0.05);
}
.panel h3 {
margin: 0 0 8px;
font-size: 13px;
color: var(--brand);
border-left: 3px solid var(--brand);
padding-left: 8px;
}
.form-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
gap: 4px 14px;
}
.muted { color: var(--text-light); font-size: 12px; }
.skill-block {
border: 1px dashed var(--border);
border-radius: 6px;
padding: 10px;
margin-bottom: 10px;
background: #fbfdff;
}
.skill-block .head {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
font-weight: 600;
}
.override-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
gap: 8px 12px;
}
.empty {
text-align: center;
color: var(--text-light);
padding: 60px 0;
}
/* 手机竖屏适配:头部按钮换行、行内信息自动折行、弹窗全宽 */
@media (max-width: 600px) {
.hero-header {
flex-wrap: wrap;
gap: 8px;
padding: 10px 12px;
}
.hero-header .actions { flex-wrap: wrap; }
.hero-editor { padding: 4px 0 16px; }
.home-toolbar { padding: 8px 10px; }
.home-toolbar .el-button { margin-left: 0; }
.hero-rows { padding: 8px 10px 40px; }
.hero-row { gap: 4px 10px; }
.row-main { min-width: 0; }
.row-skills { min-width: 100%; }
.editor-dialog { width: 98% !important; }
.editor-dialog .el-dialog__body { max-height: 76vh; padding: 6px 10px; }
.form-grid { grid-template-columns: 1fr; }
.override-grid { grid-template-columns: 1fr; }
}