2012-01-24 2 views
2

Мне было интересно, есть ли какой-либо метод использования HTML/CSS, например Flex/MXML. Я имею в виду, что в MXML глобально используются HBox, VBox и Spacer, и их поведение предсказуемо. Но в HTML/CSS мы используем много float, и у него всегда есть некоторые «скрытые сюрпризы».HTML/CSS Spacer (как Flex)

С Flex/MXML Я хотел бы сделать:

<hbox width="100%"> 
    <button label="Button A" /> 
    <spacer width="100%" /> 
    <button label="Button B" /> 
    <button label="Button C" /> 
</hbox> 
  • Если вы не знаете, сгибать я объясняю этот код: места HBOX каждый элемент внутри него бок о бок, и Spacer является невидимым элемент; разделитель со 100% не имеет такой же ширины, что и родительский (HBox), но заполняет оставшееся пространство; это означает, что A будет выровнен влево, а два - вправо.

Теперь в HTML/CSS я бы сделал кнопки B и C поплавка справа. Я также должен был бы изменить порядок кнопок, чтобы конечный результат был таким же. Кроме того, я, вероятно, поместил бы пустой тег с «clear: both», чтобы гарантировать, что ничто ниже не будет испорчено.

Итак, есть ли какая-либо техника для получения той же функциональности в HTML/CSS? Это было бы фантастически, если бы мы могли сделать классы .HBox .VBox .Spacer CSS и без javascript.

благодарит заранее.

+0

Flex использует «прокладки»? Eww. («spacers», как описано, довольно устаревший способ иметь дело с макетом HTML. Ужасно/удивлено/возможно, это не удивительно, что Flex использует их) –

+0

Возможно, вы правы. Но с HTML + CSS его путь более противный, например: float должен использоваться только для изображений с текстом вокруг него. Я написал код для достижения того же результата вышеприведенного текста, проверьте http://jsfiddle.net/wEAay/1/ Является ли код MXML более чистым и объективным? – eric

+1

Распорки разбивают структуру MVC HTML, CSS и JS. – zzzzBov

ответ

2

я сделать что-то похожее на это, используя следующий вид разметки

<div class="formline"><!-- kind of like your hbox --> 
    <div class="buttongroup" id="group1"> 
     <button label="Button A"> <!-- of course, that's usually input type="submit" or something. --> 
    </div> 
    <div class="buttongroup" id="group2"> 
     <button label="Button B"> 
     <button label="Button C"> 
    </div> 
</div> 

Затем с помощью CSS стиль его. Я бы поплыл group1 влево, поплавок group2 вправо. Закрывающая форма содержит плавающие внутри нее. Кнопки отображаются в правильном порядке, мне не нужно их менять.

Это все логическая/структурная разметка и может быть оформлена различными способами; это не только для презентации.

Я использую разумные имена в зависимости от того, что я делаю, а не таких, как «group1», «group2».

+1

Любое лучшее решение? Проверьте: http://jsfiddle.net/wEAay/1/ – eric

+0

@ Эрик - Я посмотрел на твою скрипку, вот что я делаю. Мне не нужен дополнительный пустой div только потому, что в наших структурах формы каждая «формальная линия» сопровождается _something_ else, которая может иметь очистку «clear: both». «formline» сам по себе имеет ясное, и наиболее распространенный случай для нас - это формальная линия, за которой следует другая форма. –

+0

Наши решения - это то же самое. Смешное, но хорошее эмпирическое правило в HTML/CSS заключается в том, что если он не работает, добавьте больше div. Это звучит ужасно, но любопытно. Если вы хотите сохранить свет синтаксиса, вы можете использовать JS для замены частей своей страницы. – Parris

0

Вы можете присвоить свой верхний уровень div классу с именем hbox и настроить его подпункты. Пример: http://jsfiddle.net/soparrissays/WJ2Lk/4/ HTML:

<div class="hbox"> 
    <input type="button" value="Button A" class="left-button" /> 
    <input type="button" value="Button C" /> 
    <input type="button" value="Button B" /> 
    <div class="clear"></div> 
</div> 

стиль:

.hbox { 
    margin-top:45px; 
} 

.hbox input { 
    float: right; 
} 

.hbox .left-button{ 
    float:left; 
} 

.clear{ 
    clear:both; 
} 

button on the left, 2 on the right Это то, что вы ищете?

+0

Это не сработало для меня. Можете ли вы проверить? http://jsfiddle.net/V5dCf/2/ – eric

+0

Я думаю, что * нарушает все. Вам не нужно всплывать. Вот новая вилка, которую я сделал: http://jsfiddle.net/soparrissays/WJ2Lk/. Я также опубликовал фотографию в своем ответе выше. Это могло бы помочь, если бы вы разместили изображение того, что вы хотели, чтобы оно выглядело так же хорошо. Кнопка работает так же, как и ввод, чтобы вы знали. – Parris

+0

Эрик хочет бок о бок влево/вправо с промежутком между ними, а не сложенными. '' в Flex предоставляет «гибкое пространство», которое расширяется по мере необходимости, чтобы заполнить линию и подтолкнуть ее братьев и сестер влево и вправо. –

Смежные вопросы