Showing posts with label css. Show all posts
Showing posts with label css. Show all posts

Tuesday, 12 June 2012

difference in display:inline,display:block and float


Every browser has a "flow". The flow sort of emulates a word processor in that elements flow from left to right, top to bottom. Elements that do not fit at the end of a "line", wrap to the next "line", so to speak.
Block elements take up the full line. Inline elements only take up as much space as they need, so other elements can sit next to them on the same line. Unless there is a width declared, that doesn't happen with block elements.
Floating an element takes the elements out of the normal flow and shifts it to the left/right. The space that the object occupied before it was floated is empty, and collapses. If I float two elements that take up more space than the line can hold, one may fall to the next "line".
displaying two spans inline will put them together in the flow, 
If I wanted to have text flow around an image in a paragraph, I would float the image not usedisplay:inline. If I wanted to create a horizontal menu from list item elements, I would usedisplay:inline, not float.


display:inline means a element is will "stack" next to other items, like images, spans or the bold tag. This is opposed by block level elements (display:block) which take up horizontal space, imply a line break, and will not sit next to one another, like divs, paragraphs, or tables.
Think of it this way...
<img /><img /><img />
<div />
<div />
<div />
ex-
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
p.inlineDemo {display:inline}
p.blockDemo {display:block}
p.floatDemo {float:left}
</style>
</head>
<body>

<p class="inlineDemo">These two paragraphs generates inline boxes, and it results in</p>

<p class="inlineDemo">no distance between the two elements(With a single space).</p>

<p class="blockDemo">These two paragraphs generates block boxes, and it results in</p>

<p class="blockDemo">seperate line between the two elements.</p>

<p class="floatDemo">These two paragraphs generates float boxes, and it results in</p>

<p class="floatDemo">no space between the two elements.</p>

</body>
</html>
Output:


These two paragraphs generates inline boxes, and it results in
 
no distance between the two elements(With a single space).
These two paragraphs generates block boxes, and it results in
seperate line between the two elements.
These two paragraphs generates float boxes, and it results in
no space between the two elements

ex-
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
p.inlinel {display:inline; width: 4em;}
p.inliner {display:inline; width: 4em; text-align: right;}

p.floatl {width: 4em; float:left;}
p.floatr {width: 4em; float: right;}
</style>
</head>
<body>

<p class='inlinel'>The is an inline paragraph with lots of words.</p>
<p class='inliner'>The is an inline paragraph with lots of words.</p>

<br/><br/>

<p class='floatl'>The is a left floated paragraph with lots of words.</p>
<p class='floatr'>The is a right floated paragraph with lots of words.</p>


</body>
</html>
Output :

The is an inline paragraph with lots of words.
 
The is an inline paragraph with lots of words.
 
The is a left floated paragraph with lots of words.
The is a right floated paragraph with lots of words.

Friday, 25 May 2012

Inline-Block level element difference

Useful Link must read ...http://webdesign.about.com/od/htmltags/qt/block_vs_inline_elements.htm

A block-level element is an element that creates large blocks of content like paragraphs or page divisions. They start new lines of text when you use them, and can contain other blocks as well as inline elements and text or data.
An inline element is an element that define text or data in the document like STRONG makes the enclosed text strongly emphasized and Q says the enclosed text is a quotation. They don't start new lines when you use them, and they generally only contain other inline tags and text or data. Or they include nothing at all, like the BR tag.
There is also a third type of element in HTML - those that aren't displayed at all. These tags are the ones that provide information about the page but don't necessarily show up in the visible portion of the page. For example: STYLE to define styles and stylesheets, META to define meta data, and HEAD to hold those elements.

Inline Formatting is Different from Block Formatting

One of the most common mistakes a newcomer to Web design makes is trying to set a width on an inline element. This is because inline elements don't have widths. That is, they do have widths, but the width is set by the container box. Some other properties that inline elements ignore include:
  • width and height
  • max-width and max-height
  • min-width and min-height
Note: IE incorrectly applies some of these properties even to inline boxes. But you shouldn't rely on that to remain, as it's not standards compliant.
So if you need to define the width or height that an element should take up, you need to apply that to the block-level element containing your inline text.

Changing the Type of an Inline Element to Block and Vice Versa

With CSS you can change the type of an element from inline to block or the reverse with just one CSS property:
display: block;
display:inline;
display:none;
The CSS property display lets you change an inline property to block or a block to inline or either of them to not display at all.

When to Change the Display Property

In general, I like to leave the display property alone, but there are some cases where turning a block-level element into an inline and vice versa can be useful.
  • Horizontal list menus - Lists are block-level elements, but if you want your menu to display horizontally, you need to convert the list to an inline element, so that newlines aren't added between each list item.
  • Headers in the text - Sometimes you might want a header to remain in the text, but have the HTML header values. Changing the h1-h6 values to inline will let the following text flow next to it.
  • Removing the element - And of course, if you want to remove the element completely from the document flow, you can set the display to none.