views:

97

answers:

8

Hi

Is there a way to prevent a line break after a div with css?

For example I have

    <div class="label">My Label:</div>
    <div class="text">My text</div>

and want it to display like:

My Label: My text

thanks for your help

Update:

After no css solution led to a completly satisfying solution I will use <span> like some answers suggested

A: 

Try applying the clear:none css attribute to the label.

.label {
     clear:none;
}
theycallmemorty
That has no effect, as the `div` still has the default `width:auto` that makes it take up all the available width.
Guffa
A: 

try float your div's in css

.label {
float:left;
width:200px;
}
.text {
float:left;
}
Tim
to cancel the div's floating user clear:both;
Tim
Remember to make the next element `clear: left;` to return the document to normal flow.
Pete
+3  A: 

A DIV is by default a BLOCK display element, meaning it sits on its own line. If you add the CSS property display:inline it will behave the way you want. But perhaps you should be considering a SPAN instead?

David M
+8  A: 

display:inline;

OR

float:left;

OR

display:inline-block; -- Might not work on all browsers.

What is the purpose of using a div here? I'd suggest a span, as it is an inline-level element, whereas a div is a block-level element.


Do note that each option above will work differently.

display:inline; will turn the div into the equivalent of a span. It will be unaffected by margin-top, margin-bottom, padding-top, padding-bottom, height, etc.

float:left; keeps the div as a block-level element. It will still take up space as if it were a block, however the width will be fitted to the content (assuming width:auto;). It can require a clear:left; for certain effects.

display:inline-block; is the "best of both worlds" option. The div is treated as a block element. It responds to all of the margin, padding, and height rules as expected for a block element. However, it is treated as an inline element for the purpose of placement within other elements.

Read this for more information.

Jeff Rupert
I used div tags because the were auto generated by a template
Fabiano
A div with display:inline on it is basically the same as a span. It's a semantically meaningless container. The only difference is their default display mode (block vs inline)
Joeri Hendrickx
+5  A: 
.label, .text {display: inline}

Although if you use that, you might as well change the div's to span's.

mikemerce
+3  A: 

The div elements are block elements, so by default they take upp the full available width.

One way is to turn them into inline elements:

.label, .text { display: inline; }

This will have the same effect as using span elements instead of div elements.

Another way is to float the elements:

.label, .text { float: left; }

This will change how the width of the elements is decided, so that thwy will only be as wide as their content. It will also make the elements float beside each other, similar to how images flow beside each other.

You can also consider changing the elements. The div element is intended for document divisions, I usually use a label and a span element for a construct like this:

<label>My Label:</label>
<span>My text</span>
Guffa
+2  A: 
<span class="label">My Label:</span>
<span class="text">My text</span>
Mike
+1  A: 

div's are used to give structure to a website or to contain a lot of text or elements, but you seem to use them as label, you should use span, it will put both text next to eachother automatically and you won't need to wright css code for it.

And even if other people tell you to float the elements it's best that you just change the tags.

krike