2015-09-07 26 views
1

我有以下DIV:護短表單元素,以填補一個div水平

<div> 
    <label for="ctl00_cph_address">Address</label> 
    <input name="ctl00$cph$address" type="text" id="ctl00_cph_address" class="required text"> 
    <a id="ctl00_cph_addCcContact">Add</a> 
    <span id="ctl00_cph_addressrequiredValidator" style="display: none;"></span> 
    <span id="ctl00_cph_addressValidator" style="display: none;"></span> 
</div> 

我想的標籤是固定的寬度和右對齊,而這通常是容易的,但什麼是幾乎不可能是將addCcContact定位點向右對齊到包含div的右側。我已經通過絕對定位和漂浮實現了這一點,但肯定的是,有一種方法可以使用text-align來做到這一點。爲什麼這很難?

+1

你能後你有這麼遠的CSS?甚至可以使用'<>'按鈕來使它成爲一個可運行的jsFiddle-like片段。 – GolezTrol

+0

無論如何,我不認爲有一個文本對齊方式可以讓你在對齊其餘的時候對齊最後一個'單詞',所以浮動或位置是正確的路線。 – GolezTrol

回答

2

的問題是,如果你設置text-align<a>它將正確右對齊<a>元素內的文本,但<a>仍然只會佔用所需的空間,它會之後立即流輸入。另一方面,如果您在包含<div>上設置了text-align,那麼<div>內的所有內容都會向右移動。

因此,您需要使用浮動或定位之類的東西,或者決定要佔用介入空間 - <input>,或不可見元素或<a>本身。然後你可以相應地調整元素的大小,例如, Flexbox的。

例如,爲了使<input>填寫寬度的其餘部分:

div { 
 
    display:flex; 
 
} 
 
input { 
 
    flex:1 
 
}
<div> 
 
    <label for="ctl00_cph_address">Address</label> 
 
    <input name="ctl00$cph$address" type="text" id="ctl00_cph_address" class="required text"> 
 
    <a id="ctl00_cph_addCcContact">Add</a> 
 
    <span id="ctl00_cph_addressrequiredValidator" style="display: none;"></span> 
 
    <span id="ctl00_cph_addressValidator" style="display: none;"></span> 
 
</div>

+0

完成後,請參閱更新回答 – CupawnTae

+0

@ProfK是否做到了最終的目標? – CupawnTae