2017-07-11 2 views
1

Angenommen, Sie haben einen Hilfetext mit einem Knopf haben wie:Dont erlauben eine Taste ohne Wort zu brechen

<label>This is a short help text <button>(?)</button></label> 

Wenn Sie die Fenstergröße schrumpfen, irgendwann ein Zeilenumbruch geschieht, und die Taste ? ist allein in der zweiten Zeile.

This is a short help text 
(?) 

So sagte der UX-Team, die (?) Taste should't allein in zweiter Linie, anstatt das letzte Wort und Taste sein.

This is a short help 
text (?) 

Kann jemand es mit normalem CSS lösen?

Da wir React verwenden, schlug ich vor, den Satz zu brechen und einen nicht brechbaren Teil aus dem letzten Wort und der Schaltfläche zu erstellen, aber es fühlt sich an wie ein hässlicher Hack, also suchen wir nach einer sauberen CSS-Lösung wenn möglich.

UPDATE: Bereits hier eine Lösung gefunden:

How can I use a non-breaking space before an inline-block-default element, such as a <button>?

+0

nicht sicher, aber ich denke, wenn man würde 'auf' a' button' ändern, sollten Sie in der Lage sein 'white-space zu verwenden: nowrap;' . – domsson

+0

Ist der Text dynamisch? Können Sie das Markup ändern? https://codepen.io/danield770/pen/ZymdMr – Danield

+0

Ja der Text ist dynamisch – webdeb

Antwort

0
<body> 
<label>This is a short help text <button>(?)</button></label> 
</body> 
<style> 
label{ 
display:inline-block; 
width:150px; 
word-wrap:break-word; 
} 
</style> 

Schränkungsweite für die Sorge div oder jeden Tag und word-wrap verwenden: break-word;

+0

danke, aber es funktioniert nicht – webdeb

+0

überprüfen Sie den aktualisierten Code seine Arbeit .... Anzeige hinzufügen: Inline-Block mit Code ...... es funktioniert hier ist der Code-Link https://codepen.io/mgkrish/pen/rwQEvd – Mgkrish

+0

Es bricht mit dem Wort nur wegen der festen '140px'. Versuchen Sie, die Breite auf etwas Dynamisches wie '30%' zu ändern und ändern Sie die Fenstergröße, es wird zwischen dem Text und der Schaltfläche unterbrochen. – webdeb

2

Sehen Sie, wenn Sie eine <span> um das letzte Wort setzen können + die Taste, und stellen Sie die <span> zu { display: inline-block; }.

Demo:

div { 
 
    border: dotted 1px black; 
 
    margin-bottom: 3px; 
 
} 
 

 
label>span { 
 
    display: inline-block; 
 
}
<div style="width:160px"> 
 
    <label>This is a short help <span>text <button>(?)</button></span></label> 
 
</div> 
 
<div style="width:170px"> 
 
    <label>This is a short help <span>text <button>(?)</button></span></label> 
 
</div> 
 
<div style="width:180px"> 
 
    <label>This is a short help <span>text <button>(?)</button></span></label> 
 
</div> 
 
<div style="width:190px"> 
 
    <label>This is a short help <span>text <button>(?)</button></span></label> 
 
</div> 
 
<div style="width:200px"> 
 
    <label>This is a short help <span>text <button>(?)</button></span></label> 
 
</div>

+0

nice hack, Hinzufügen von 'span' und' display: Inline-Block; ' – bhv

+0

Wie ich im ursprünglichen Beitrag sagte, ist der Etikettentext dynamisch, ich werde nicht den Satz teilen, aber wenn Sie aktualisieren Sie mit der Antwort Technik aus meiner eigenen Antwort Ich akzeptiere es, danke – webdeb

+0

Nein, es ist auf diese Weise in Ordnung, so dass jeder sehen kann, welche Ansätze es gibt, und ich würde sogar empfehlen, Ihre eigene Antwort zu akzeptieren, da dies Ihre bevorzugte Lösung ist. –

Verwandte Themen