box-sizing: border-box 改變盒模型計算方式,但 IE 對內部行內元素 (文字) 的基線計算與標準不一致,導致 line-height 與 height 關係錯位。
.input-fix {
box-sizing: border-box;
height: 36px;
line-height: 36px; /* 關鍵:強制行高等於盒高 */
padding: 0 12px; /* 水平內距 */
/* 垂直 padding 設為 0,避免雙重影響 */
}
.input-flex {
box-sizing: border-box;
height: 36px;
display: flex;
align-items: center; /* 垂直置中 */
padding: 0 12px;
/* 子元素 (input) 需移除自身 line-height 干擾 */
}
input.input-flex {
height: auto;
line-height: normal;
border: none;
background: transparent;
}
.input-hack {
box-sizing: border-box;
height: 36px;
line-height: 36px\9; /* IE8-9 只識別 */
*line-height: 34px; /* IE7 */
_line-height: 36px; /* IE6 */
padding: 0 12px;
}
專案引入 normalize.css 可消除跨瀏覽器預設樣式差異,減少此類 Hack 需求。