Ответ 1
Вы можете создать div, который содержит как форму, так и кнопку, а затем поместите float div вправо, установив float: right;
.
Тело моего HTML-документа состоит из 3 элементов, кнопки, формы и холста. Я хочу, чтобы кнопка и форма были выровнены по правому краю, а холст остался выровненным по левому краю. Проблема в том, что когда я пытаюсь выровнять первые два элемента, они больше не следуют друг за другом и вместо этого находятся рядом друг с другом по горизонтали? Вот код, который у меня есть, я хочу, чтобы форма следовала сразу после кнопки справа без пробела между ними.
#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>
Вы можете создать div, который содержит как форму, так и кнопку, а затем поместите float div вправо, установив float: right;
.
floats в порядке, но проблематично с ie6 и 7.
Я бы предпочел использовать margin-left:auto; margin-right:0;
во внутреннем div.
Старые ответы. Обновление: используйте flexbox, почти все работает во всех браузерах.
<div style="display: flex; justify-content: flex-end">
<div>I'm on the right</div>
</div>
Другие ответы на этот вопрос не так хороши, так как float:right
может выходить за пределы родительского div (возможно, переполнение: скрытый для родителя) и margin-left: auto, margin-right: 0
для меня не работали в сложных вложенных div (я didn не исследуйте почему).
Я выяснил, что для некоторых элементов text-align: right
работает, считая, что это работает, когда элемент и родительские элементы являются как inline
или inline-block
.
Примечание. Свойство text-align
CSS описывает, как встроенный контент, такой как текст, выравнивается в его родительском блочном элементе. text-align
не контролирует выравнивание самих элементов блока, а только их встроенное содержимое.
Пример:
<div style="display: block; width: 80%; min-width: 400px; background-color: #caa;">
<div style="display: block; width: 100%">
I'm parent
</div>
<div style="display: inline-block; text-align: right; width: 100%">
Caption for parent
</div>
</div>
Вы имеете в виду это? http://jsfiddle.net/6PyrK/1
Вы можете добавить атрибуты float:right
и clear:both;
к форме и кнопке
Если у вас есть несколько div, которые вы хотите выровнять бок о бок в правом конце родительского div, установите text-align: right;
в родительском div.
Если вам не нужно поддерживать IE9 и ниже, вы можете использовать flexbox для решения этой проблемы: codepen
Также есть несколько ошибок с IE10 и 11 (flexbox поддержка), но они не присутствуют в этом примере
Вы можете вертикально выровнять <button>
и <form>
, обернув их в контейнер с помощью flex-direction: column
. Порядок источников элементов будет порядком, в котором они отображаются сверху вниз, поэтому я их переупорядочил.
Затем вы можете горизонтально выровнять контейнер формы и кнопки с холстом, обернув их в контейнер с помощью flex-direction: row
. Опять порядок источников элементов будет порядком, в котором они отображаются слева направо, поэтому я переупорядочил их.
Кроме того, для этого потребуется удалить все правила стиля position
и float
из кода, связанного в вопросе.
Здесь урезана версия HTML в кодедере, указанном выше.
<div id="mainContainer">
<div>
<canvas></canvas>
</div>
<div id="formContainer">
<div id="addEventForm">
<form></form>
</div>
<div id="button">
<button></button>
</div>
</div>
</div>
И вот соответствующий CSS
#mainContainer {
display: flex;
flex-direction: row;
}
#formContainer {
display: flex;
flex-direction: column;
}
Вы можете использовать flexbox
с flex-grow
, чтобы сдвинуть последний элемент вправо.
<div style="display: flex;">
<div style="flex-grow: 1;">Left</div>
<div>Right</div>
</div>
Вы можете просто использовать padding-left: 60% (например), чтобы выровнять контент по правому краю и одновременно обернуть контент в адаптивный контейнер (в моем случае я использовал navbar), чтобы убедиться, что он работает во всех примерах.
Для выравнивания вправо:
<div style="float:right">
</div>
Если вы используете загрузчик, то:
<div class="pull-right"></div>
Я знаю, что это старый пост, но не могли бы вы просто использовать <div id=xyz align="right">
для правильного.
Вы можете просто заменить правую слева, в центре и оправдать.
Работает на моем сайте:)