Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Как расположить чекбоксы в два столбца


Автор: Матильда 24.7.2013, 15:57
Доброго времени суток.

Помогите, пожалуйста, разобраться с чекбоксами.
Задача: расположить чекбоксы в два столбца. 
Расположить в два столбца кое-как удалось. Но получается слишком большое расстояние между чекбоксом и текстом, правый столбец располагается ниже левого.
Делала так:
Код

...
<%
    boolean elementLeft = true;
%>
<logic:iterate id="row" name="UserForm" property="roles" indexId="index">
    <bean:define id="roleId" name="row" property="id"/>

    <%
        if (elementLeft) {
            elementLeft = false;
    %>
    <span class="cell-left"><input id="<%= roleId %>" name="row" type="checkbox" value="<%= roleId %>"/><label for="<%= roleId %>"><html:text name="row" property="name"/></label></span>
    <%
    } else {
        elementLeft = true;
    %>
    <span class="cell-right"><input id="<%= roleId %>" name="row" type="checkbox" value="<%= roleId %>"/><label for="<%= roleId %>"><html:text name="row" property="name"/></label></span>
    <br><br>
    <%
        }
    %>
</logic:iterate>
...



Код

.cell-left {
    display: inline-block;
    vertical-align: bottom;
    position: relative;
    padding: 5px 0 15px 0;
    background: #fff;
    margin-left: 5%;
    width: 40%;
    white-space: nowrap;
}
.cell-right {
    display: inline-block;
    vertical-align: bottom;
    position: relative;
    padding: 5px 0 15px 0;
    background: #fff;
    margin-left: 55%;
    width: 40%;
    white-space: nowrap;
}

.cell-left input {
    float: left;
    position: absolute;
}
.cell-left label {
    float: right;
    font-size: .9em;
}
.cell-right input {
    float: left;
    position: absolute;
}
.cell-right label {
    float: right;
    font-size: .9em;
}

Автор: AVA12 24.7.2013, 22:25
Цитата
<%
    boolean elementLeft = true;
%>
<logic:iterate id="row" name="UserForm" property="roles" indexId="index">
    <bean:define id="roleId" name="row" property="id"/>

Штоэта??? Что-то не припомню таких конструкций в HTML.

Автор: Матильда 24.7.2013, 22:33
Цитата(AVA12 @ 24.7.2013,  22:25)
Цитата
<%
    boolean elementLeft = true;
%>
<logic:iterate id="row" name="UserForm" property="roles" indexId="index">
    <bean:define id="roleId" name="row" property="id"/>

Штоэта??? Что-то не припомню таких конструкций в HTML.

Это Struts. 
Я не знаю заранее сколько у меня будет элементов. Элементы вытаскиваются из базы, помещаются в коллекцию. дальше нужно в цикле отобразить все элементы.

Автор: ksnk 25.7.2013, 07:31
А не нужно плавающими элементами увлекаться. Если про IE6 не вспоминать - можно пользоваться забавной фенечкой text-align:justify.

Код

<div class="checkbox_container row2">
     <label class="checkbox"><input type="checkbox" name="..."> some text</label>
     <label class="checkbox"><input type="checkbox" name="..."> some text</label>
...
      <span class="last_element"></span>
</div>


Код

.checkbox_container {
   text-align:justify;
}
label.checkbox {
    display:inline-block;
    min-width:100px;
}
.row2 label.checkbox {
    width:40%;
}
.row3 label.checkbox {
    width:25%;
}
.row4 label.checkbox {
    width:20%;
}
span.last_element{
    display:inline-block;
    width:80%;
    height:1px;
    line-height:px;
    overflow:none;
}
label.checkbox input {
}


Расположение чекбокса относительно собственного текста можно задавать правилом label.checkbox input

элемент last_element нужен для выравнивания последней строки. 

Если указать правильный min-width у правила  label.checkbox, то можно увидеть как оно себя ведет при изменении размеров экрана.

http://jsfiddle.net/n8QAj/

Автор: Матильда 25.7.2013, 15:53
ksnk, спасибо! разобралась

Автор: MasterIt 17.12.2013, 08:57
Буквально на днях возник вопрос с выводом чекбоксов умного фильтра в два столбца на Битрикс, долго работал с API, в итоге решил вопрос простой CSS версткой:

Код


#col li {
    display: block;
    float: left;
    width: 45%;
}
#col {
     margin: 0;
     padding: 0;
     list-style-type: none;
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)