Я використовую цей код, щоб правильно вирівняти кнопку.
<p align="right">
<input type="button" value="Click Me" />
</p>
Але <p>
теги витрачають деякий простір, тому шукаю, щоб зробити те ж саме з <span>
або <div>
.
Я використовую цей код, щоб правильно вирівняти кнопку.
<p align="right">
<input type="button" value="Click Me" />
</p>
Але <p>
теги витрачають деякий простір, тому шукаю, щоб зробити те ж саме з <span>
або <div>
.
Відповіді:
Яку техніку вирівнювання ви використовуєте, залежить від ваших обставин, але основна - це float: right;
:
<input type="button" value="Click Me" style="float: right;">
Ви, ймовірно, захочете очистити свої поплавці, але це можна зробити з overflow:hidden
батьківського контейнера або явного <div style="clear: both;"></div>
внизу контейнера.
Наприклад: http://jsfiddle.net/ambiguous/8UvVg/
Плаваючі елементи видаляються із звичайного документообігу, щоб вони могли переповнювати батьківську межу і зіпсувати висоту батьків, clear:both
CSS опікується цим (як це робиться overflow:hidden
). Пограйте з прикладом JSFiddle, який я додав, щоб побачити, як поводяться плаваючі та очисні (хочете, щоб ви відмовились від overflow:hidden
першого).
Інша можливість полягає у використанні абсолютного позиціонування, орієнтованого праворуч:
<input type="button" value="Click Me" style="position: absolute; right: 0;">
Ось приклад: https://jsfiddle.net/a2Ld1xse/
У цього рішення є свої недоліки, але є випадки використання, коли це дуже корисно.
element
на block
:.border {
border: 2px blue dashed;
}
.mr-0 {
margin-right: 0;
}
.ml-auto {
margin-left:auto;
}
.d-block {
display:block;
}
<p class="border">
<input type="button" class="d-block mr-0 ml-auto" value="The Button">
</p>
elements
на block
:.border {
border: 2px indigo dashed;
}
.d-table {
display:table;
}
.d-table-cell {
display:table-cell;
}
.w-100 {
width: 100%;
}
.tar {
text-align: right;
}
<div class="border d-table w-100">
<p class="d-table-cell">The paragraph.....lorem ipsum...etc.</p>
<div class="d-table-cell tar">
<button >The Button</button>
</div>
</div>
flex-box
:.flex-box {
display:flex;
justify-content:space-between;
outline: 2px dashed blue;
}
.flex-box-2 {
display:flex;
justify-content: flex-end;
outline: 2px deeppink dashed;
}
<h1>Button with Text</h1>
<div class="flex-box">
<p>Once upon a time in a ...</p>
<button>Read More...</button>
</div>
<h1>Only Button</h1>
<div class="flex-box-2">
<button>The Button</button>
</div>
<h1>Multiple Buttons</h1>
<div class="flex-box-2">
<button>Button 1</button>
<button>Button 2</button>
</div>
Щасти...
margin-left:auto
great! !important
Найгірше, це буде викликати проблеми в майбутньому.
display: flex;
. Він дбає про все.
Це рішення залежить від Bootstrap 3, на що вказував @ günther-jena
Спробуйте <a class="btn text-right">Call to Action</a>
. Таким чином вам не потрібна додаткова розмітка або правила для очищення плаваючих елементів.
сучасний підхід у 2019 році з використанням флекс-боксу
з тегом div
<div style="display:flex; justify-content:flex-end; width:100%; padding:0;">
<input type="button" value="Click Me"/>
</div>
з проміжною міткою
<span style="display:flex; justify-content:flex-end; width:100%; padding:0;">
<input type="button" value="Click Me"/>
</span>
Інша можливість - використання абсолютного позиціонування, орієнтованого праворуч. Ви можете це зробити так:
style="position: absolute; right: 0;"
div
, це категорично ігнорує його межі.
Це не завжди так просто, і іноді вирівнювання потрібно визначати в контейнері, а не в самому елементі Button!
Для вашого випадку рішення було б
<div style="text-align:right; width:100%; padding:0;">
<input type="button" value="Click Me"/>
</div>
Я подбав вказати, width=100%
щоб бути впевненим, що <div>
візьміть повну ширину його контейнера.
Я також додав, padding:0
щоб уникати до і після місця, як з<p>
елементом.
Я можу сказати, що якщо <div>
це визначено в нижньому колонтитулі таблиці FSF / Primefaces, воно float:right
не працює правильно, оскільки висота кнопки стане вище висоти нижнього колонтитулу!
У цій ситуації з Primefaces єдиним прийнятним рішенням є використання text-align:right
в контейнері.
За допомогою цього рішення, якщо у вас 6 кнопок для вирівнювання праворуч, потрібно вказати це вирівнювання лише в контейнері :-)
<div style="text-align:right; width:100%; padding:0;">
<input type="button" value="Click Me 1"/>
<input type="button" value="Click Me 2"/>
<input type="button" value="Click Me 3"/>
<input type="button" value="Click Me 4"/>
<input type="button" value="Click Me 5"/>
<input type="button" value="Click Me 6"/>
</div>
Це вирішило б це.
<input type="button" value="Text Here..." style="float: right;">
Удачі з вашим кодом!
<div style = "display: flex; justify-content: flex-end">
<button>Click me!</button>
</div>
align
Атрибут є застарілим в HTML 4.01 і НЕ підтримується в HTML5, використовувати CSStext-align
замість того, щоб досягти того ж ефекту.