#html #css
Вопрос:
Я хочу отобразить элемент ввода с кнопкой справа от него, чтобы ширина элемента ввода плюс небольшой зазор плюс ширина кнопки занимали всю ширину контейнера. Это пахнет как работа за столом.
Мои базовые CSS и HTML выглядят так:
.css-table {
display: table;
}
.css-tr {
display: table-row;
}
.css-td {
display: table-cell;
}
<div class='css-table'>
<div class='css-tr'>
<div class='css-td'>
<input />
</div>
<div class='css-td'>
<button>Do it</button>
</div>
</div>
</div>
Итак, какой стиль CSS я могу использовать, чтобы таблица была во всю ширину контейнера, с кнопкой, выровненной по правому краю контейнера, и элементом ввода, занимающим оставшееся пространство слева от кнопки (с небольшим зазором между правым краем элемента ввода и левым краем кнопки)?
Ответ №1:
Надеюсь, это сработает.
.css-table {
display: table;
width: 100%;
}
.css-tr {
display: table-row;
}
.css-td {
display: table-cell;
}
.css-td input{
width: 100%;
}
<div class='css-table'>
<div class='css-tr'>
<div class='css-td'>
<input type="text"/>
</div>
<div class='css-td'>
<button>Do it</button>
</div>
</div>
</div>
Комментарии:
1. Как вы получили магию «Запустить фрагмент кода», прикрепленную к вашему ответу?
2. @Bob.at.Индиго. Здоровье, если вы видите, что есть значок»<>», поэтому вам просто нужно нажать там и добавить CSS и HTML в соответствующие места и добавить. этого должно хватить.
3. О…. Я только что заметил, что в моем оригинальном посте волшебным образом появилась кнопка «Запустить фрагмент кода». По-видимому, у StackOverflow есть новый трюк… похоже, он может находить HTML и CSS в отмеченных блоках кода и соединять их вместе, чтобы их можно было «запускать».
4. Это было сделано не с помощью магии, я просто отредактировал ваш вопрос. Извините, что разочаровываю вас 😀 Вы можете увидеть это, если нажмете ссылку «отредактировано …» под своим сообщением.
Ответ №2:
Это только кажется, что работа за столом если вы все еще застряли в 1990 году. 😉 Если вам нужен современный, более современное решение, вы должны посмотреть в спецификации Flexbox для одномерных макетов. в CSS-уловок, которые имеют хорошее представление о спецификации Flexbox, но есть также тонны других ресурсов в интернете, чтобы вы начали.
Правка:
Увидел, что вам нужен небольшой зазор между правым краем элемента ввода и левым краем кнопки, добавил его во фрагмент.
.css-row {
display: flex;
}
.css-row input {
flex-grow: 1;
margin-right: 5px; /* to set the space for the button */
}
<div class='css-row'>
<input />
<button>Do it</button>
</div>
Комментарии:
1. В частности, спасибо за ссылку на обзор flexbox. Это действительно полезно! Думаю, пришло время оставить 90-е позади (но, боюсь, я застрял с новыми и улучшенными лохматыми волосами 2020 года).