「地址设置,短语那里,输入框怎么那么高啊。」
导航 → 设置 → 地址设置 →「我的短语」那个输入框,高度被撑成一长条, 和右边「保存短语」按钮完全不成比例,看着像多行文本框。
模板 templates/nav/index.php:172-184,短语输入框被包在 .field 里, 而 .field 本身又是 .inline-form 的 flex 子项:
templates/nav/index.php:172-184
.field
.inline-form
<form class="inline-form"> <div class="field"> <!-- display:flex; flex-direction:column --> <label>我的短语</label> <input class="input" name="phrase"> <!-- ← 被下面这条规则命中 --> <span class="tip">要 4~32 位…</span> </div> <div class="btn-row"><button>保存短语</button></div> </form>
assets/css/app.css:1645 这条通用规则:
assets/css/app.css:1645
.inline-form .input { flex: 1 1 200px; max-width: 320px; }
flex-basis: 200px 作用在父级 flex 容器的主轴上。 .field 是 flex-direction: column,主轴是垂直方向 ⇒ 这 200px 变成了高度,再叠加 flex-grow: 1 继续拉长。 .inline-form 自己的 align-items: center 又让整块垂直居中, 于是视觉上就是"一个很高的输入框 + 旁边孤零零一个按钮"。
flex-basis: 200px
flex-direction: column
flex-grow: 1
align-items: center
全仓 16 处 .inline-form,只有 nav 这一处把 .field 嵌进去 (其余都是直接把 <input class="input"> 当 flex 子项,flex-basis 落在水平方向,正确)。 ⇒ 这是孤例,不能去改 .inline-form .input 那条通用规则,否则会波及另外 15 处。
<input class="input">
flex-basis
.inline-form .input
「我的短语」输入框恢复成普通单行输入框的高度,与全站其它 .input 一致:
.input
padding: 10px 12px
font-size: 14px
getBoundingClientRect().height
与 #16 是两件独立的事:#16 是表单缺上传控件(功能缺口),本条是已存在的输入框 CSS 高度错乱(样式 bug),可单独验收
eaa74bc(已 push)。改动 2 个文件:assets/css/app.css + templates/nav/index.html(后者是换表单类名)。
eaa74bc
assets/css/app.css
templates/nav/index.html
.inline-form .input { flex: 1 1 200px } —— 这个 flex-basis: 200px 落在哪个轴由父级 flex-direction 决定。
.inline-form .input { flex: 1 1 200px }
flex-direction
短语表单里 .field 被嵌进了 .inline-form,而 .field 自己是 flex-direction: column。于是 200px 从"宽度"变成了高度,输入框被撑成 200px 高。
200px
全站 16 处用了 .inline-form,只有导航短语表单这一处把 .field 嵌进去 —— 是孤例。改通用规则会波及另外 15 处正常表单。
所以换专属类 .nav-phrase-form,并在里面把 input 从"flex 子项"退化成普通块(flex: 0 0 auto),彻底掐掉 flex-basis 跑到垂直轴的可能。
.nav-phrase-form
flex: 0 0 auto
几何探针 _tooling/_b33_nav_phrase_geo.py,9 通过 / 0 失败。
_tooling/_b33_nav_phrase_geo.py
全站 16 处 .inline-form 抽了 8 个页面、11 个 input 逐个量高度,全部 = 45.80px,零偏离。并断言导航管理页的 .inline-form 里已经没有 input(确认真的换掉了,不是两条规则并存)。
_tooling/_b33_inlineform_regress.py,3 通过 / 0 失败。
_tooling/_b33_inlineform_regress.py
上一条笔误:改动文件是 templates/nav/index.php,不是 .html。其余内容不变。
templates/nav/index.php
.html
已修复并部署。短语输入框 200.00px → 45.80px,与同页正常 input 差 0.0px,按钮回到同一行。回归 16 处 .inline-form 零偏离。commit eaa74bc。
No dependencies set.
The note is not visible to the blocked user.
现象(用户反馈)
导航 → 设置 → 地址设置 →「我的短语」那个输入框,高度被撑成一长条,
和右边「保存短语」按钮完全不成比例,看着像多行文本框。
根因(已定位)
模板
templates/nav/index.php:172-184,短语输入框被包在.field里,而
.field本身又是.inline-form的 flex 子项:assets/css/app.css:1645这条通用规则:flex-basis: 200px作用在父级 flex 容器的主轴上。.field是flex-direction: column,主轴是垂直方向 ⇒这 200px 变成了高度,再叠加
flex-grow: 1继续拉长。.inline-form自己的align-items: center又让整块垂直居中,于是视觉上就是"一个很高的输入框 + 旁边孤零零一个按钮"。
为什么只有这一处坏
全仓 16 处
.inline-form,只有 nav 这一处把.field嵌进去(其余都是直接把
<input class="input">当 flex 子项,flex-basis落在水平方向,正确)。⇒ 这是孤例,不能去改
.inline-form .input那条通用规则,否则会波及另外 15 处。期望
「我的短语」输入框恢复成普通单行输入框的高度,与全站其它
.input一致:padding: 10px 12px+font-size: 14px+ 1px 边框);验收标准
(量法:
getBoundingClientRect().height,与页面上任意一个正常.input对比,差值应在个位像素内。).inline-form外观零变化 —— 改完要回头逐一看一遍,尤其:笔记分享、日程分享、名册分享、任务看板/分类、个人设置标签、微信读书。
为什么单独建单
与 #16 是两件独立的事:#16 是表单缺上传控件(功能缺口),本条是已存在的输入框 CSS 高度错乱(样式 bug),可单独验收
修完并已上线
eaa74bc(已 push)。改动 2 个文件:assets/css/app.css+templates/nav/index.html(后者是换表单类名)。根因
.inline-form .input { flex: 1 1 200px }—— 这个flex-basis: 200px落在哪个轴由父级flex-direction决定。短语表单里
.field被嵌进了.inline-form,而.field自己是flex-direction: column。于是200px从"宽度"变成了高度,输入框被撑成 200px 高。为什么不能改通用规则
全站 16 处用了
.inline-form,只有导航短语表单这一处把.field嵌进去 —— 是孤例。改通用规则会波及另外 15 处正常表单。所以换专属类
.nav-phrase-form,并在里面把 input 从"flex 子项"退化成普通块(flex: 0 0 auto),彻底掐掉flex-basis跑到垂直轴的可能。线上实测
.input高度几何探针
_tooling/_b33_nav_phrase_geo.py,9 通过 / 0 失败。回归
全站 16 处
.inline-form抽了 8 个页面、11 个 input 逐个量高度,全部 = 45.80px,零偏离。并断言导航管理页的.inline-form里已经没有 input(确认真的换掉了,不是两条规则并存)。_tooling/_b33_inlineform_regress.py,3 通过 / 0 失败。上一条笔误:改动文件是
templates/nav/index.php,不是.html。其余内容不变。已修复并部署。短语输入框 200.00px → 45.80px,与同页正常 input 差 0.0px,按钮回到同一行。回归 16 处
.inline-form零偏离。commiteaa74bc。