#1 「详细信息」「移动到相册」弃用右侧抽屉,改复用 x-modal 的居中卡片弹窗(新增 #image-detail-modal / #image-movements-modal 及其内容容器,三个新模板): - 详细信息:顶部小缩略图 + dl 行式布局(<640px 自动上下堆叠),标签 13px / 值 14px / leading-6;字段顺序按老师要求 = 上传时间 → 图片名称 → 其余 10 项(原抽屉里 12 项一个没删, 只换位置);弹窗内不放复制链接/下载/删除(单一职责)。 - 移动到相册:单选列表(当前所在相册带「当前」徽标)、行 min-h-[44px](手机点击区)、 未选中时「移动」disabled;请求逐字沿用原实现(同 route user.images.movement、同 payload); 点「移动」才提交,成功关弹窗 + resetImages + toastr。 - 右侧抽屉保留本职(工具栏「相册列表」入口、自带无限加载、相册增删改查)原样不动; 桌面右键、手机长按、工具栏三个入口都走新弹窗。 #2 二级菜单「<返回」箭头与文字间距:context-js.less 加 7px(选择器权重压过标记自带 mr-1)。 关键:本轮的 images.blade.php 改动不属于补丁文件(context-js.js 两份 md5 全程 = Dockerfile 钉住的 b916555a…,未动),Dockerfile 的 images_blade_md5 已随自证同步更新为 27bb3f20…,补丁重生成 2563 行 且「打回上游 = 仓库文件」字节一致。 验证:四套回归我自己跑过 —— longpress 79/79、sidebar 6/6、images-modal 35/35(静态契约: 12 字段与顺序 / 13-14px 字号 / min-h-44 / 请求不变 / 无硬编码色 / 返回键 7px / 补丁 md5 未变)、 images-modal-dom 35/35(jsdom 真跑页面内联脚本:点菜单 → 内容进新弹窗、抽屉全程为空且未被推开、 单选互斥、点「移动」实发 {selected,id,album_id} 后关弹窗、抽屉路径仍能筛选相册); php -l + view:cache exit 0;重建产物含 text-[13px]/[14px]/min-h-[44px]/max-h-[50vh]/ls-badge 等。
234 lines
5.5 KiB
Plaintext
234 lines
5.5 KiB
Plaintext
.nav-header {
|
|
display: block;
|
|
padding: 3px 15px;
|
|
font-size: 12.5px;
|
|
font-weight: bold;
|
|
line-height: 20px;
|
|
color: var(--lsky-text-3);
|
|
text-shadow: none;
|
|
text-transform: uppercase;
|
|
}
|
|
.dropdown-menu {
|
|
position: absolute;
|
|
top: 100%;
|
|
left: 0;
|
|
z-index: 1000;
|
|
display: none;
|
|
float: left;
|
|
min-width: 160px;
|
|
padding: 5px 0;
|
|
margin: 2px 0 0;
|
|
list-style: none;
|
|
background-color: var(--lsky-surface);
|
|
border: 0;
|
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
font-size: 14px;
|
|
border-radius: 6px;
|
|
box-shadow: var(--lsky-shadow-pop);
|
|
background-clip: padding-box;
|
|
text-align: left;
|
|
&.pull-right {
|
|
right: 0;
|
|
left: auto;
|
|
}
|
|
.divider {
|
|
height: 1px;
|
|
margin: 9px 1px;
|
|
overflow: hidden;
|
|
background-color: var(--lsky-surface-3);
|
|
border-bottom: 1px solid var(--lsky-border);
|
|
}
|
|
a {
|
|
display: block;
|
|
padding: 5px 20px;
|
|
clear: both;
|
|
font-weight: normal;
|
|
line-height: 20px;
|
|
color: var(--lsky-text);
|
|
white-space: nowrap;
|
|
text-decoration: none;
|
|
}
|
|
.disabled {
|
|
& > a {
|
|
&:hover {
|
|
text-decoration: none;
|
|
cursor: default;
|
|
background-color: transparent;
|
|
}
|
|
}
|
|
}
|
|
|
|
li > a:hover, li > a:focus, .dropdown-submenu:hover > a {
|
|
color: #ffffff;
|
|
text-decoration: none;
|
|
background-color: var(--lsky-accent);
|
|
background-image: none;
|
|
background-repeat: repeat-x;
|
|
}
|
|
|
|
.active > a, .active > a:hover {
|
|
color: #ffffff;
|
|
text-decoration: none;
|
|
background-color: var(--lsky-accent);
|
|
background-image: none;
|
|
background-repeat: repeat-x;
|
|
outline: 0;
|
|
}
|
|
|
|
.disabled > a, .disabled > a:hover {
|
|
color: var(--lsky-text-3);
|
|
}
|
|
|
|
.open {
|
|
*z-index: 1000;
|
|
& > .dropdown-menu {
|
|
display: block;
|
|
}
|
|
}
|
|
.pull-right {
|
|
& > .dropdown-menu {
|
|
right: 0;
|
|
left: auto;
|
|
}
|
|
}
|
|
}
|
|
|
|
.dropup .caret, .navbar-fixed-bottom .dropdown .caret {
|
|
border-top: 0;
|
|
border-bottom: 4px solid var(--lsky-border-2);
|
|
content: "\2191";
|
|
}
|
|
.dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu {
|
|
top: auto;
|
|
bottom: 100%;
|
|
margin-bottom: 1px;
|
|
}
|
|
.dropdown-submenu {
|
|
position: relative;
|
|
& > .dropdown-menu {
|
|
top: 0;
|
|
left: 100%;
|
|
margin-top: -6px;
|
|
margin-left: -1px;
|
|
border-radius: 0 6px 6px 6px;
|
|
&.drop-left {
|
|
left: -100%;
|
|
}
|
|
}
|
|
&:hover {
|
|
.dropdown-menu {
|
|
display: block;
|
|
}
|
|
& > a {
|
|
&:after {
|
|
border-left-color: var(--lsky-surface);
|
|
}
|
|
}
|
|
}
|
|
& > a {
|
|
&:after {
|
|
display: block;
|
|
float: right;
|
|
width: 0;
|
|
height: 0;
|
|
margin-top: 5px;
|
|
margin-right: -10px;
|
|
border-color: transparent;
|
|
border-left-color: var(--lsky-border-2);
|
|
border-style: solid;
|
|
border-width: 5px 0 5px 5px;
|
|
content: " ";
|
|
}
|
|
}
|
|
}
|
|
.dropdown {
|
|
.dropdown-menu {
|
|
.nav-header {
|
|
padding-right: 20px;
|
|
padding-left: 20px;
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Context Styles
|
|
*/
|
|
.dropdown-context {
|
|
.nav-header {
|
|
cursor: default;
|
|
}
|
|
.dropdown-submenu {
|
|
&:hover {
|
|
.dropdown-menu {
|
|
display: none;
|
|
}
|
|
& > .dropdown-menu {
|
|
display: block;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 手机端二级菜单「就地展开」时,顶部那行「< 返回」里的箭头与文字贴在一起很难看:
|
|
箭头是图标(fas fa-chevron-left,标记里自带 mr-1 ≈ 4px),这里统一补到 7px 间距。
|
|
三条类选择器的权重高于工具类 .mr-1,所以不依赖 CSS 打包顺序;其余样式一个字没动。 */
|
|
.dropdown-context .submenu-back > a > i {
|
|
margin-right: 7px;
|
|
}
|
|
.dropdown-context:before, .dropdown-context-up:before {
|
|
position: absolute;
|
|
top: -7px;
|
|
left: 9px;
|
|
display: inline-block;
|
|
border-right: 7px solid transparent;
|
|
border-bottom: 7px solid var(--lsky-border-2);
|
|
border-left: 7px solid transparent;
|
|
border-bottom-color: rgba(0, 0, 0, 0.2);
|
|
content: '';
|
|
}
|
|
.dropdown-context:after, .dropdown-context-up:after {
|
|
position: absolute;
|
|
top: -6px;
|
|
left: 10px;
|
|
display: inline-block;
|
|
border-right: 6px solid transparent;
|
|
border-bottom: 6px solid var(--lsky-surface);
|
|
border-left: 6px solid transparent;
|
|
content: '';
|
|
}
|
|
.dropdown-context-up:before, .dropdown-context-up:after {
|
|
top: auto;
|
|
bottom: -7px;
|
|
z-index: 9999;
|
|
}
|
|
.dropdown-context-up {
|
|
&:before {
|
|
border-right: 7px solid transparent;
|
|
border-top: 7px solid var(--lsky-border-2);
|
|
border-bottom: none;
|
|
border-left: 7px solid transparent;
|
|
}
|
|
&:after {
|
|
border-right: 6px solid transparent;
|
|
border-top: 6px solid var(--lsky-surface);
|
|
border-left: 6px solid transparent;
|
|
border-bottom: none;
|
|
}
|
|
}
|
|
.dropdown-context-sub:before, .dropdown-context-sub:after {
|
|
display: none;
|
|
}
|
|
.compressed-context {
|
|
a {
|
|
padding-left: 14px;
|
|
padding-top: 0;
|
|
padding-bottom: 0;
|
|
font-size: 13.5px;
|
|
}
|
|
.divider {
|
|
margin: 5px 1px;
|
|
}
|
|
.nav-header {
|
|
padding: 1px 13px;
|
|
}
|
|
}
|