2016-06-13 12 views
0

Ich bin neu in HTML/CSS, ich bin schwer zu finden, wie ich eine Symbolleiste auf der rechten Seite ausrichten kann, aber dann aufhören zu schweben rechts (als Inline- Block würde) wenn die Seitenbreite kleiner wird?Richten Sie Elemente links und rechts mit richtiger Umhüllung aus

Zur Zeit schwebe ich die Tasten rechts, um den rechtsgerichteten Effekt zu erhalten, den ich möchte, aber Floating ist vielleicht nicht der beste Weg.

Ich könnte Medienabfragen verwenden, aber ich frage mich, ob jemand eine direkter/Standard Weg kennt?

http://jsfiddle.net/47hsddLd

<div style="margin: 60px 20px 60px 20px;"> 
    <div style="display:inline-block"> 
    <h3>Some kind of page title</h3><br /> 
    </div> 
    <div class="btn-group pull-right" role="group" aria-label="User Categories" style="display:inline-block"> 
    <button type="button" class="btn btn-default-grey btn-sm storyFilter" data-storyfilter-category="ReadLater" data-results-target="#storyList" data-toggle="tooltip" data-placement="bottom" title="Read Later"> 
     <i style="margin-top:4px" class="glyphicon glyphicon-bookmark" aria-hidden="true"></i> 
    </button> 
    <button type="button" class="btn btn-default-grey btn-sm storyFilter" data-storyfilter-category="PlanToUse" data-results-target="#storyList" data-toggle="tooltip" data-placement="bottom" title="Plan To Use"> 
     <i style="margin-top:4px" class="glyphicon glyphicon-pushpin" aria-hidden="true"></i> 
    </button> 
    <button type="button" class="btn btn-default-grey btn-sm storyFilter" data-storyfilter-category="Used" data-results-target="#storyList" data-toggle="tooltip" data-placement="bottom" title="Used"> 
     <i style="margin-top:4px" class="glyphicon glyphicon-check" aria-hidden="true"></i> 
    </button> 
    <button type="button" class="btn btn-default-grey btn-sm storyFilter" data-storyfilter-category="Submitted" data-results-target="#storyList" data-toggle="tooltip" data-placement="bottom" title="My Stories"> 
     <i style="margin-top:4px" class="glyphicon glyphicon-list-alt" aria-hidden="true"></i> 
    </button> 
    </div> 
</div> 
+0

Ich habe Ihre Frage nicht vollständig bekommen. Float ist in Ordnung, es sei denn, Sie möchten sie als separate Zeile haben. In diesem Fall können Sie text-align direkt auf dem Wrapper-Element der Schaltfläche verwenden. –

+0

@ArathiSreekumar Ich möchte, dass sie eine einzige Zeile sind.Wenn die Breite jedoch kleiner ist, möchte ich, dass die Schaltflächen umbrochen werden, ohne dass sie weiter nach rechts schweben. Wenn Sie auf meine Fiddle schauen und den Teiler ziehen, um die Breite zu verkleinern, werden Sie sehen, dass die Buttons auf eine neue Zeile unter dem Titel fallen, aber weiter nach rechts schweben. – Michael

+0

Ja, in diesem Fall könnten Medienabfragen die sein Weg zu gehen. Aber du hast das Problem, dass die Titellänge unbekannt ist. Sie könnten eine Kombination aus der Lösung, die ich unten gegeben habe, und Medienabfragen machen. –

Antwort

2

Wenn Sie das Element überprüfen Sie dies durch Bootstrap erzeugt sehen.

.pull-right { 
    float: right !important; 
} 

überschreiben, damit zu float:none oder left in den Medien-Anfragen für kleine Bildschirme. Sie müssen !important bei Bedarf auch anwenden.

EDIT

Wie unten in den Kommentaren vorgeschlagen, es ist wahrscheinlich keine gute Idee .pull-right Klasse direkt außer Kraft zu setzen, wie es auch für andere Regeln können auch verwendet werden, so .this-parent-class .pull-right {...} besser wäre, oder nicht verwenden diese Klasse überhaupt.

Da Sie mit Bootstrap, die Sie wirklich die Fortschritte des in ansprechendem Grid-System aufgebaut nehmen sollen, das heißt col-lg-*, col-md-* und col-sm-* usw. für Ihr Layout gibt es einen großen Beitrag here.

+0

Medienabfragen sind daher einer der einfachsten Wege, um dies zu erreichen? – Michael

+0

@Michael ja, das würde ich innerhalb von Medienabfragen machen. – Stickers

+0

IMO, wäre es besser, das 'pull-right' von Bootstrap zu entfernen und benutzerdefinierte Klassen zu verwenden, um verschiedene Stile an Haltepunkten zu verwalten. Ich denke, wir sollten unnötiges Übersteuern von Bootstrap-Klassen vermeiden. –

1

Float ist in Ordnung, wenn Sie sie als separate Zeile wollen, in diesem Fall Sie text-align rechts auf dem Tasten-Wrapper-Element verwenden können. Durch Verschieben der Schaltflächen über den Titeltext wird der Titeltext umbrochen.

<div style="margin: 60px 20px 60px 20px;"> 
    <div class="btn-group pull-right" role="group" aria-label="User Categories" style="margin-left: 10px"> 
    <button type="button" class="btn btn-default-grey btn-sm storyFilter" data-storyfilter-category="ReadLater" data-results-target="#storyList" data-toggle="tooltip" data-placement="bottom" title="Read Later"> 
     <i style="margin-top:4px" class="glyphicon glyphicon-bookmark" aria-hidden="true"></i> 
    </button> 
    <button type="button" class="btn btn-default-grey btn-sm storyFilter" data-storyfilter-category="PlanToUse" data-results-target="#storyList" data-toggle="tooltip" data-placement="bottom" title="Plan To Use"> 
     <i style="margin-top:4px" class="glyphicon glyphicon-pushpin" aria-hidden="true"></i> 
    </button> 
    <button type="button" class="btn btn-default-grey btn-sm storyFilter" data-storyfilter-category="Used" data-results-target="#storyList" data-toggle="tooltip" data-placement="bottom" title="Used"> 
     <i style="margin-top:4px" class="glyphicon glyphicon-check" aria-hidden="true"></i> 
    </button> 
    <button type="button" class="btn btn-default-grey btn-sm storyFilter" data-storyfilter-category="Submitted" data-results-target="#storyList" data-toggle="tooltip" data-placement="bottom" title="My Stories"> 
     <i style="margin-top:4px" class="glyphicon glyphicon-list-alt" aria-hidden="true"></i> 
    </button> 
    </div> 
    <div> 
    <h3> 
     Some kind of page title 
    </h3> 
    <br /> 
    </div> 

</div> 

zB: http://jsfiddle.net/47hsddLd/2/

aber das wäre es anders für Screenreader machen lesen.

Bitte beachten Sie, dass ich die Anzeige entfernt habe: Inline-Blöcke, da diese den normalen Fluss unterbrechen.

Hier ist eine Lösung mit Medien-Anfragen: http://jsfiddle.net/47hsddLd/4/

1

Klingt wie Sie es so wollen: http://jsfiddle.net/zsjn7tz8/

Grundansatz ist flexbox mit flex-wrap: wrap eingeschaltet, flex:1 auf dem raumfüllenden Element und white-space: nowrap auf beiden flex Kinder. Beachten Sie, dass Sie für einige Browser eine CSS-Vorverarbeitung oder Autoprefixing benötigen, um "Legacy" - und "Tweener" -Flexbox-Syntaxen zu verwenden, plus Herstellerpräfixierung (es ist ein heißes Durcheinander: raten Sie einem Tool, es nicht zu tun) Authoring selbst)

+0

Danke! das macht genau das, was ich will. aber ich mache mir Sorgen über die Rückwärtskompatibilität von Flexbox. so muss ich möglicherweise Medienabfragen verwenden – Michael

+0

Ich würde sehr ermutigen, anzufangen, Flexbox in der Produktion zu verwenden; es wird sehr üblich, und es ist ziemlich einfach, Fallback-Stile (z. B. über Modernizr) zu schreiben, um bescheuerte Browser ein wenig anders zu behandeln. Und erinnern Sie sich an die wichtigste Frage der Front-End-Entwicklung: http://dowebsitesneedtoloookexactlythesameineverybrowser.com/;^D – RwwL

Verwandte Themen