Что вам нужно понять, так это разницу между блочными и встроенными элементами, и оба они основаны на философии, ориентированной на текст. Блочные элементы, такие как <div>
или <p>
, будут толкать друг друга вниз, то есть они не будут появляться на одной и той же «линии» рядом друг с другом, а будут вести себя как параграфы. Встроенные элементы, например <span>
и <input>
, ведут себя как текст. Они выстраиваются в линию рядом друг с другом на одной и той же линии, пока есть место, затем переходят на следующую строку, двигаясь вниз, а затем влево, пока не столкнутся с препятствием и не начнут процедуру снова.
Применение высоты к встроенному элементу будет иметь другой результат, чем применение его к элементу уровня блока. Скорее всего, он не окажет заметного влияния на встроенный элемент сразу, но может повлиять на другие близлежащие элементы уровня блока, оттолкнув их.
Если вы добавите float
в микс, это будет немного сложно, так как плавающие элементы ведут себя как блочные и встроенные элементы. Элементы блочного уровня будут в значительной степени игнорировать плавающие элементы, то есть плавающий элемент внутри элемента уровня блока не будет вносить вклад в общую высоту указанного элемента уровня блока. OTOH, встроенные элементы будут «взаимодействовать» с плавающими элементами, плавая вокруг них (это поведение было разработано для изображений, встроенных в текстовые абзацы). Плавающие элементы будут вести себя как встроенные элементы между собой.
-- div (block) -----------------------------------
| inline inline inline -- img (floated right) -- |
| inline inline inline | | |
| inline inline inline | | |
| inline inline inline ------------------------- |
| inline inline inline inline inline inline |
| inline inline inline inline inline |
--------------------------------------------------
-- div (block) -----------------------------------
| inline inline inline -- img (floated right) -- |
| inline inline inline | | |
-----------------------| |--
-------------------------
(the float is not contributing to the div's height)
Самый простой способ, чтобы два входа появлялись рядом друг с другом, а третий ниже, вероятно, выглядит следующим образом:
-- div (block) ---------------------------
| input (inline) input (inline) |
------------------------------------------
-- div (block) ---------------------------
| input (inline) |
------------------------------------------
Вы можете либо кодировать свой HTML-код таким образом, либо манипулировать существующим HTML-кодом через CSS, чтобы вести себя так (display: block
/ display: inline
). Добро пожаловать в мир CSS. Это не так уж сложно в принципе, вам просто нужно уйти от мышления за столом. :)