Wie stelle ich sicher, dass das Eingabefeld breit genug ist, um den Inhalt vollständig anzuzeigen?
P粉014218124
2023-09-02 22:36:56
<p>Ich verwende die Vuetify TextField-Komponente in einer Tabelle mit vielen Spalten. Möglicherweise enthält die Komponente zu viel Inhalt, um angezeigt zu werden, und aus Sicht des Benutzererlebnisses würde die Überprüfung des Inhalts durch Scrollen innerhalb des Felds bei vielen Zellen zu viel Zeit in Anspruch nehmen. </p>
<p>Reines HTML-Beispiel</p>
<p>Vuetify-Beispiel</p>
<p>Meine erste Idee (wenn Sie eine bessere Idee haben, lassen Sie es mich bitte wissen) ist die Anzeige eines Tooltips, um den vollständigen Inhalt anzuzeigen. Dies wäre jedoch ärgerlich, wenn die Komponente den vollständigen Inhalt anzeigen kann. Daher möchte ich den Tooltip nur anzeigen, wenn der Inhalt ausgeblendet/abgeschnitten ist. </p>
<p>Gibt es also eine Möglichkeit herauszufinden, ob die Komponente den vollständigen Inhalt anzeigt oder ob es Inhalte gibt, die ausgeblendet/abgeschnitten sind? (Die Tabellenleistung ist wichtig, daher weiß ich nicht, ob es sich lohnt, sehr komplexe Berechnungen durchzuführen, wenn sich Werte ändern.) </p>
<p>Ich habe es versucht</p>
<p>(Spielplatz)</p>
<pre class="brush:php;toolbar:false;"><script setup>
{ ref, watch } aus 'vue' importieren
const field = ref()
const msg = ref(
„Hallo Welt! Zu viel Inhalt in dieser Textfeldkomponente, um angezeigt zu werden.“
)
const isCuttingOff = ref(false)
betrachten(
Nachricht,
() =>
const inputWidth = field.value?.clientWidth
const inputValueWidth = msg.value.length // !!! Messen Sie hier den Eingabewert !!!
console.log({ inputWidth, inputValueWidth })
isCuttingOff.value = inputWidth < inputValueWidth
},
{unmittelbar: wahr}
)
</script>
<Vorlage>
<v-app>
<div class="text-h3">Schnitt ab: {{ isCuttingOff }}</div>
<v-container class="w-25">
<v-text-field ref="field" label="fsfdsf"
</v-container>
</v-app>
</template></pre>
<p>Aber</p>
<ul>
<li>Beim Start ist die Variable <code>inputWidth</code> undefiniert</li>
<li>Ich weiß nicht, wie ich die Variable <code>inputValueWidth</code></li> berechnen soll.
</ul></p>
使用CSS来显示文本的溢出,例如....(省略号),并使用title属性在悬停时显示完整内容,类似弹出窗口
通过修改您的代码,我成功地比较了文本框的
clientWidth
和scrollWidth
。1- 消除了
field
引用。2- 给
v-text-field
添加了一个id。3- 添加了一个
check
函数,并在watch
回调函数中调用它。4- 在
check
函数内部,我检查了输入框的clientWidth
和scrollWidth
。5- 为了在初始加载时运行它,我将
msg
赋值为空字符串,并在脚本底部将其更改为原始字符串。在此处查看:这里