Pages

Wednesday, March 16, 2011

How to override Yii's block radio button list labels and make them inline

By default, Yii radio buttons, radiobuttonlists, and checkboxlists look dumb. The label is on a different line, which is not a great design.

Here's how to fix it:

In your form style sheet (form.css), set:

input[type=radio] + label, input[type=checkbox] + label { display:inline !important; }

that's it, you're done.

What it does is says anytime you have a radio button with a label element directly after it, make that label inline instead of block, meaning that there won't be a line break.

I would also recommend changing Yii's default checkbox label positioning to before the label. 

7 comments:

  1. Is it possible to make the checkboxes listed in multiple columns? For example, 3 columns per row, so if I have a very long checkbox list, it won't result in a very long page.

    ReplyDelete
  2. There is a new css3 property to do this . Check out the spec. Otherwise I believe there is also a jquery plugin

    ReplyDelete
  3. Is possible to use custom images instead of radio buttons?

    ReplyDelete
  4. uhm?!? why overwriting the default form.css?

    radioButtonList( $model, 'attribute', dataArray, array(
    'separator' => '', // overwriting the line break
    'template' => '{input} {label}', // put the label behind
    'class' => 'classname', // additional css class
    ));

    in css you can set all styles needed (float, width, padding) for multiple columns. you may also be able to set icons as background images

    ReplyDelete