我的想法是有一個div展示如何兩個文本行看起來相比,取決於文本的長度和字體大小。適合最寬的文本行到div和更改第二行匹配比率
問題是,我想展示這在一個固定寬度的div。
因此,最寬的文本行(不一定是最大的字體也不是大多數字體的字體行)應該調整大小以始終走到div的邊緣 - 在一行上。
同時,寬度不太寬的文本行的字體大小也應調整大小以保持兩行之間的比例。
我剛纔寫這個代碼:
腳本
<script>
function typeFunction() {
document.getElementById('boxOne').innerHTML = document.getElementById("lineOne").value;
document.getElementById('boxTwo').innerHTML = document.getElementById("lineTwo").value;
document.getElementById('boxPreviewOne').innerHTML = document.getElementById("lineOne").value;
document.getElementById('boxPreviewTwo').innerHTML = document.getElementById("lineTwo").value;
checkWidth();
}
function fontSize(fontsize,target) {
target.style.fontSize = fontsize;
checkWidth();
}
function checkWidth() {
ratio = document.getElementById("sizeOne").value.replace(/\D/g, '')/document.getElementById("sizeTwo").value.replace(/\D/g, '');
widthOne = document.getElementById("boxOne").offsetWidth;
widthTwo = document.getElementById("boxTwo").offsetWidth;
if (widthOne >= widthTwo) {
document.getElementById('boxPreviewOne').style.fontSize = "MAX_FONT_SIZE";
if (ratio>=1) {
document.getElementById('boxPreviewTwo').style.fontSize = "MAX_FONT_SIZE/ratio";
} else {
document.getElementById('boxPreviewTwo').style.fontSize = "MAX_FONT_SIZE*ratio";
}
} else {
document.getElementById('boxPreviewTwo').style.fontSize = "MAX_FONT_SIZE";
if (ratio>=1) {
document.getElementById('boxPreviewOne').style.fontSize = "MAX_FONT_SIZE*ratio";
} else {
document.getElementById('boxPreviewOne').style.fontSize = "MAX_FONT_SIZE/ratio";
}
}
}
</script>
HTML
Line One: <input id="lineOne" onKeyUp="typeFunction()" value="This is line one">
<select id="sizeOne" onchange="fontSize(this.value,boxOne);">
<option value="10px">10 cm</option>
<option value="20px" selected="selected">20 cm</option>
<option value="30px">30 cm</option>
</select>
<br>
Line Two: <input id="lineTwo" onKeyUp="typeFunction()" value="This is line two">
<select id="sizeTwo" onchange="fontSize(this.value,boxTwo);">
<option value="10px" selected="selected">10 cm</option>
<option value="20px">20 cm</option>
<option value="30px">30 cm</option>
</select>
<br>
<br>
<div style="width:700px;">
<span id="boxOne" style="font-size:20px">This is line one</span><br>
<span id="boxTwo" style="font-size:10px">This is line two</span>
</div>
<br><br>
Preview:<br>
<div class="Mainbox" style="width:400px;border:1px solid black">
<span id="boxPreviewOne" style="font-size:64px">This is line one</span><br>
<span id="boxPreviewTwo" style="font-size:32px">This is line two</span>
</div>
Line One: <input id="lineOne" onKeyUp="typeFunction()" value="This is line one">
<select id="sizeOne" onchange="fontSize(this.value,boxOne);">
<option value="10px">10 cm</option>
<option value="20px" selected="selected">20 cm</option>
<option value="30px">30 cm</option>
</select>
<br>
Line Two: <input id="lineTwo" onKeyUp="typeFunction()" value="This is line two">
<select id="sizeTwo" onchange="fontSize(this.value,boxTwo);">
<option value="10px" selected="selected">10 cm</option>
<option value="20px">20 cm</option>
<option value="30px">30 cm</option>
</select>
<br>
<br>
<div style="width:700px;">
<span id="boxOne" style="font-size:20px">This is line one</span><br>
<span id="boxTwo" style="font-size:10px">This is line two</span>
</div>
<br><br>
Preview:<br>
<div class="Mainbox" style="width:400px;border:1px solid black">
<span id="boxPreviewOne" style="font-size:64px">This is line one</span><br>
<span id="boxPreviewTwo" style="font-size:32px">This is line two</span>
</div>
而這裏的代碼+概念場景的圖像的示例圖像:
這是據我可以去我自己,我很害怕。
顯然還有很多路要走。
- 我寧願只有文本輸入鏡像一次,但我不認爲這將有可能找到最寬的線。
- 我不知道如何讓我的所謂「MAX_FONT_SIZE」
謝謝你的回答查理,它看起來很聰明。然而,我的jQuery知識非常有限,所以我正在努力應對這種情況以適應自己的情況。有兩行,其中只有最寬(取決於文本和字體大小)應該適合div。 –