Прижать часть строки влево, а часть вправо - как?
Народ! Помогите, кто чем может - у меня уже голова кипит от перенапряжения.
Ситуация такая: в HTML-документе есть кусок, в котором несколько раз повторяется такая конструкция: <div> <span name="property">...</span> <input type="text" name="value" value="" /> <img src="......" /> <img src="......" /> <img src="......" /> </div> Все поля input имеют одинаковую ширину 300 пикселов. Все картинки являются квадратиками 16 на 16 пикселов. А вот что написано внутри span'ов - вещь сильно переменная. И, что значительно хуже, что находится слева от span'а - тоже вещь сильно переменная (запросто может иметь для разных span'ов разную ширину). Нужно сделать так, чтобы все span'ы были сдвинуты до упора влево (каждый в своем div'е), а поля input и картинки (которые на самом деле будут кнопками) были сдвинуты до упора вправо (чтобы в совокупности от всех div'ов они выглядели ровной стройной колонной). И неприятность заключается в том, что все это сделать нужно только силами CSS с минимальной модификацией HTML-тегов. Одни только картинки прижать к правому краю получается, если на объемлющий div поставить style="position:relative", а на каждую из картинок в нем поставить style="position: absolute; right: ..." (и посчитать правильный отступ для каждой из картинок). Но при таком подходе input остается сдвинутым влево. Если дополнительно к тому на input тоже поставить style="position:absolute; right:..." - то результат оказывается непонятным: во-первых, input'ы от разных блоков накладываются друг на друга, и, во-вторых, нахрен летит верстка того, что находится слева. Есть какие-нибудь идеи? |
родительскому диву назначить:
text-align: right; a спану: float: left; |
Отлично! Именно то, что нужно. Спасибо огромное!
Только никак не могу врубиться: а почему именно так? |
Цитата:
можете наоборот сделать, если хочется: text-aling: left — родителю; float: right — детю.. суть не изменится логика тут простая: всё, что находится внутри родительского блока прижимаем вправо, а нужный нам элемент приклеиваем влево :) |
Нет. Я в том смысле, что решение оказалось очень неожиданным, и при этом неожиданно простым.
|
Цитата:
|
Дополнительный вопрос по этой теме: если в исходном блоке (с учетом данного выше ответа) заменить input на span - то это нахрен корежит всю верстку слева от блока. Почему?
|
Цитата:
|
Это достаточно сложно.
Чисто визуально создается впечатление, что после такой замены input'а на span у очередного блока margin-left отсчитывается не от родительского div'а, а от предыдущего по размещению (и образуется своеобразная "обратная лестница"). В условиях, когда подобные блоки хитрым образом вложены один в другой, это мягко говоря, не одно и то же. |
Цитата:
слова словами, а код нужен. без него не смогу сказать, что не так.. возможно, обычный clear:both; в css поможет. |
Часовой пояс GMT +3, время: 20:23. |