Treść mojego dokumentu HTML składa się z 3 elementów, przycisku, formularza i kanwy. Chcę, aby przycisk i formularz były wyrównane do prawej, a płótno pozostało wyrównane do lewej. Problem polega na tym, że kiedy próbuję wyrównać pierwsze dwa elementy, nie są one już względem siebie i zamiast tego są obok siebie poziomo ?, oto kod, który mam do tej pory, chcę, aby formularz podążał bezpośrednio za przyciskiem po prawej stronie bez odstępu między nimi.
#cTask {
background-color: lightgreen;
}
#button {
position: relative;
float: right;
}
#addEventForm {
position: relative;
float: right;
border: 2px solid #003B62;
font-family: verdana;
background-color: #B5CFE0;
padding-left: 10px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript" src="timeline.js"></script>
<link rel="stylesheet" href="master.css" type="text/css" media="screen" />
</head>
<body bgcolor="000" TEXT="FFFFFF">
<div id="button">
<button onclick="showForm()" type="button" id="cTask">
Create Task
</button>
</div>
<div id="addEventForm">
<form>
<p><label>Customer name: <input></label></p>
<p><label>Telephone: <input type=tel></label></p>
<p><label>E-mail address: <input type=email></label></p>
</form>
</div>
<div>
<canvas id="myBoard" width="1000" height="600">
<p>Your browser doesn't support canvas.</p>
</canvas>
</div>
</body>
</html>
margin-left: auto;
ale to nie zadziałało, co mnie zaskoczyło, ponieważ element, który próbuję wyrównać do prawej, jest względny.zmiennoprzecinkowe są w porządku, ale problematyczne z ie6 i 7.
wolałbym używać
margin-left:auto; margin-right:0;
na wewnętrznej div.źródło
0
jest poprawny, ale również 0px ... argumentuj swój punkt widzenia, abyśmy się czegoś dowiedzieli.display: block;
Stare odpowiedzi Aktualizacja: użyj Flexboksa, teraz działa prawie we wszystkich przeglądarkach.
I możesz stać się jeszcze bardziej wyrafinowany, po prostu:
I hodowca:
źródło
Inne odpowiedzi na to pytanie nie są tak dobre, ponieważ
float:right
mogą wyjść poza div rodzica (przepełnienie: ukryte dla rodzica czasami może pomóc) imargin-left: auto, margin-right: 0
dla mnie nie działało w złożonych zagnieżdżonych divach (nie badałem dlaczego).Odkryłem to dla niektórych elementów
text-align: right
działa, zakładając, że działa to, gdy element i element nadrzędny są jednocześnieinline
lubinline-block
.Zanotuj
text-align
właściwość CSS opisuje sposób wyrównywania treści wbudowanej, takiej jak tekst, w jej nadrzędnym elemencie bloku.text-align
nie kontroluje wyrównania samych elementów blokowych, a jedynie ich zawartość wbudowaną.Przykład:
Oto skrzypce JS .
źródło
Masz na myśli coś takiego? http://jsfiddle.net/6PyrK/1
Możesz dodać atrybuty
float:right
iclear:both;
do formularza i przyciskuźródło
Jeśli masz wiele elementów div, które chcesz wyrównać obok siebie na prawym końcu elementu div elementu nadrzędnego, ustaw
text-align: right;
element div elementu nadrzędnego.źródło
Możesz użyć za
flexbox
pomocą,flex-grow
aby przesunąć ostatni element w prawo.źródło
Jeśli nie musisz obsługiwać IE9 i poniżej, możesz użyć Flexboksa, aby rozwiązać ten problem: codepen
Istnieje również kilka błędów w IE10 i 11 ( obsługa Flexbox ), ale nie są one obecne w tym przykładzie
Możesz wyrównać w pionie
<button>
i<form>
owijając je w pojemnik za pomocąflex-direction: column
. Kolejność źródeł elementów będzie taka, w jakiej są wyświetlane od góry do dołu, więc zmieniłem ich kolejność.Następnie możesz wyrównać poziomo pojemnik formularza i przycisku z płótnem, owijając je w pojemnik za pomocą
flex-direction: row
. Znów kolejność źródeł elementów będzie taka, w jakiej są wyświetlane od lewej do prawej, więc zmieniłem ich kolejność.Wymagałoby to również usunięcia wszystkich
position
ifloat
stylu reguł z kodu połączonego w pytaniu.Oto skrócona wersja HTML w codepen, do którego link znajduje się powyżej.
A oto odpowiedni CSS
źródło
Prosta odpowiedź jest tutaj:
źródło
Możesz po prostu użyć padding-left: 60% (np.), Aby wyrównać zawartość do prawej i jednocześnie zawinąć zawartość w responsywny pojemnik (w moim przypadku wymagałem paska nawigacyjnego), aby upewnić się, że działa we wszystkich przykładach.
źródło
Jeśli używasz bootstrap, to:
źródło
<div class="text-right"></div>
.Wiem, że to stary post, ale nie mogłeś go po prostu użyć
<div id=xyz align="right">
poprawnie.Możesz po prostu zastąpić prawą lewą, środkową i uzasadnić.
Pracowałem na mojej stronie :)
źródło
align
atrybut jest teraz przestarzały .