將我的頭髮拉出來試圖製作jQuery/CSS-calc場景後,獲取元素的寬度等於特定數值(32px)乘以輸入值[type =「數字「]字段,我最終放棄了。我在Calc聲明中使用正確的語法將元素的寬度存儲在變量&中時遇到了麻煩。使用計算jQuery CSS寬度計算
我最終完成了我所做的事情,即對條件語句中的CSS寬度值進行硬編碼,該條件語句對應於1-4中的每個值。雖然我得到它的工作,但它是絕對低效的&髒。我希望有人能夠向我展示一些更高效的替代方案,使用calc或其他需要更少代碼的結果來完成相同的結果。
綜上所述 - 當數量爲1
時,目標元素span#dogFace
的寬度爲32px
。當數量爲2
時,目標元素的寬度爲64px
,依此類推。如果您嘗試將其增加到5
,則會出現文字警告。
任何意見讚賞!
獎勵積分:我最初試圖找到一個CSS-only解決方案,我認爲它仍然是可能的,但我無法完成它的工作。如果有人知道如何用一些花哨的CSS來實現這一點,我很想知道如何做到這一點。
$('#input_5_78').on('change', function() {
if (this.value >= 5) {
$('#dogFace').hide();
$('#xtraDog').show();
} else {
$('#dogFace').show();
$('#xtraDog').show();
}
if (this.value == 0) {
$('#dogFace').width('0');
$('#xtraDog').hide();
} else if (this.value == 1) {
$('#xtraDog').hide();
$('#dogFace').width('32px');
} else if (this.value == 2) {
$('#dogFace').width('64px');
$('#xtraDog').hide();
} else if (this.value == 3) {
$('#dogFace').width('96px');
$('#xtraDog').hide();
} else if (this.value == 4) {
$('#dogFace').width('128px');
$('#xtraDog').hide();
}
})
.emoji {
height: 32px;
background-position: left top;
background-repeat: repeat-x;
background-size: contain;
display: inline-block;
vertical-align: top;
}
.emoji.dog {
background-image: url('https://afeld.github.io/emoji-css/emoji/dog.png');
}
#dogFace {
float: left;
}
#xtraDog {
display: none;
}
ul li.qtyField {
list-style-type: none;
}
.qtyField label {
float: left;
}
.qtyField input[type="number"] {
float: left;
font-weight: bold;
font-size: 1.15em;
margin: 0 0 0 15px;
width: 45px!important;
text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<ul>
<li class="qtyField">
<label class="gfield_label" for="input_5_78">How many dogs need training?</label>
<div class="ginput_container ginput_container_number">
<input name="input_78" id="input_5_78" step="any" min="0" max="5" value="0" type="number">
</div>
<div class="gfield_description">
<span id="dogFace" class="emoji dog"></span>
<span id="xtraDog"><br><br>Woah, that's a lot of dogs!<br />Please call (480) 555-1234 to discuss your training needs.</span>
</div>
</li>
</ul>
</form>
Oooooh代碼中存在if/else混亂。你的邏輯可以簡單地歸結爲:'$('#dogFace')。width(32 * this。值);' – Terry