[CSS]行内元素中的表单元素 Input 为何和一般行内元素的表现不太一样? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX    前端开发

[CSS]行内元素中的表单元素 Input 为何和一般行内元素的表现不太一样?

  •  
  •   abcbuzhiming 2019-03-19 09:36:13 +08:00 2624 次点击
    这是一个创建于 2483 天前的主题,其中的信息可能已经有所发展或是发生改变。
    提出这个问题前,我已经找了不少资料,知道 IFC 的概念,至少行级元素有 4 条垂直对齐线,可这还是解释不了我的疑问。这个问题其实很常见,就是很多页面都有的,一和 input 表单和它的说明文字 lable 元素,处于同一行时,双方都垂直居中并且文字表现一致的问题。网上有不少这个问题的解决方案,但是他们都是讲怎么干,没讲清楚原理。
    为了尽量降低干扰,我这里仅谈 chrome 最新版浏览器下的表现,不谈其它览器的兼容问题。
    Dom 元素很简单如下:
    <form action="" method="">
    <label>请输入姓名:</label><input type="text" name="" id="" value="" placeholder="名"/>
    </form>

    我现在描述一下我感到困惑的地方:
    1.当我给 label 元素和 input 元素加上 border 的时候,可以很明显的看到,input 元素的 border 高度是比 lable 低的。这是第一个困惑,同是行内元素为什么他们的默认高度不一样?
    2.进一步观察发现,这两个元素里的字体大小是不同的(我并没有设置字体样式,都是默认),根据行框的高度是由内容决定的 css 规范,这可能就是为啥它们默认高度不一样的原因。但是问题就是:同是行内元素为什么他们的默认字体大小不一样?
    3.于是我给两个元素都设置 font-size: 20px,好了,现在输入到 input 里的文字看上去和外面的 lable 文字是对齐的了。但是新问题又出现了,为啥 placeholder 文字看上去像是往上飘了一些,而且我试验了网上的办法,input::-webkit-input-placeholder,设置对齐啥的都是没用的。

    我感到奇怪的是按照 CSS 标准,类型为 text 的 input 元素并不是可替换元素,它的样式也是由 CSS 控制的,为啥它的表现和其它行内元素的表现如此的不一致,默认情况下都不一致。并且,placeholder 的样式设计是从何而来,它是故意被设计的比正常输入文字高度往上飘一些的吗?如何让它表现的和输入文字的样式一致?
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5664 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 01:48 PVG 09:48 LAX 17:48 JFK 20:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86