在文章段落中插入 `` 輸入框,預設會**獨佔一行**,破壞排版流暢度。
`` 預設 `display: inline-block`,但瀏覽器預設樣式常包含 `width: 100%` 或 `box-sizing` 導致撐滿容器,或被外層 `block` 元素影響。
input {
display: inline-block !important;
width: auto !important;
}
.inline-input {
display: inline-block;
width: auto;
vertical-align: middle; /* 與文字垂直置中 */
margin: 0 4px; /* 與前後文字間距 */
padding: 2px 6px; /* 內部間距 */
box-sizing: border-box; /* 含邊框寬度 */
}
<p>姓名:<input type="text" class="inline-input" placeholder="請輸入">,年齡:<input type="number" class="inline-input" style="width:60px;"></p>
.form-inline {
display: inline-flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.form-inline label { white-space: nowrap; }
.form-inline input { flex: 0 0 auto; width: 120px; }
<div class="form-inline">
<label>姓名:<input type="text" placeholder="請輸入"></label>
<label>年齡:<input type="number" style="width:60px;"></label>
</div>
/* 去除預設外框,自訂底線風格 */
.underline-input {
display: inline-block;
border: none;
border-bottom: 1px solid #333;
background: transparent;
padding: 2px 0;
width: 150px;
outline: none;
}
.underline-input:focus { border-bottom-color: #3498db; }
| 現象 | 原因 | 修正 |
|---|---|---|
| 輸入框仍換行 | 外層容器 `display:block` 或 `width:100%` | 檢查父元素樣式,或加 `!important` |
| 高度與文字不對齊 | `vertical-align` 預設 baseline | 設定 `vertical-align: middle` |
| 寬度無法縮小 | 瀏覽器預設 `min-width` 或 `size` 屬性 | 明確設定 `width` 或 `min-width: 0` |
| 手機上彈出鍵盤蓋住 | 未設定 `viewport` 或 `font-size` 過小 | 加 `` |
<label>姓名:<input type="text" class="inline-input" aria-label="姓名"></label>
<style>
.fill-blank {
border: none; border-bottom: 2px solid #2c3e50;
background: transparent; padding: 0 4px;
font: inherit; color: inherit;
min-width: 80px; width: auto;
outline: none;
}
.fill-blank:focus { border-bottom-color: #e74c3c; }
</style>
<p>
今天是 <input class="fill-blank" value="2024"> 年
<input class="fill-blank" value="01"> 月
<input class="fill-blank" value="15"> 日,天氣<input class="fill-blank" placeholder="晴/雨">。
</p>
靈活運用 `display: inline-block`、`width: auto`、`vertical-align: middle` 三大核心屬性,配合語意化 `