Display Property

In addition to the property float that allows you to change the position of an element, CSS has another important property – display . It allows you to control the block of an element and also influence its positioning relative to neighboring elements.

This property can take the following values:

  • inline: the element becomes inline, like words in a line of text
  • block: the element becomes block like a paragraph
  • inline-block: the element is positioned as a line of text
  • list-item: the element is positioned as a list element, usually with the addition of a marker in the form of a dot or a serial number
  • run-in: element block type depends on surrounding elements
  • flex: allows for flexible positioning of elements
  • table, inline-table: allows you to arrange elements in a table
  • none: element not visible and removed from html markup

So, the block value allows you to define a block element. Such an element is visually separated from neighboring elements by a line break, such as a p paragraph element or a div element, which are block elements by default and visually wrap to a new line when the web page is rendered.

However, the element span, unlike the div element, is not a block element. Therefore, let’s see what changes will happen to it when the value is applied block:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="css/styles.css" rel="stylesheet">
    <title>Display Property in CSS3</title>
</head>

<body>
    <div>This is a <span>inline</span> span element</div>
    <div>This <span class="blockSpan">block</span> span element </div>
</body>

</html>


There are two span elements defined here, but one of them is a block element because the style is applied to it display: block;. Therefore, this span element wraps to a new line.

Unlike block elements, inline elements are inline because they have a property display value of inline . The span element has the style by default display: inline, which is why it is embedded in a line, and not carried over to the next one, like paragraphs or divs. And now we will perform the reverse procedure – we will make the block element div inline:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Display Property in CSS3</title>
</head>

<body>
    <div>First inline element div.</div>
    <div>Second inline element div.</div>
</body>

</html>


Note that when applying a value, inline the browser ignores some properties such as width, height, margin.

inline-block

Another value, inline-block , represents an element that has a mixture of block and inline attributes. In relation to neighboring external elements, such an element is regarded as inline. That is, it is not separated from neighboring elements by a line break. However, with respect to nested elements, it is treated as a block element. width And the properties , height, are applied to such an element margin.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Display Property in CSS3</title>
</head>

<body>
    <p>After half a verst at the tail of the <span>column</span>, he stopped </p>
    <p>After half a verst at the tail of the <span class="inineBlockSpan">column</span>, he stopped </p>
</body>

</html>


The first span element is inline and has a value of inline, so it makes no sense to apply the and properties to width it height. But the second element span has a value of inline-block, so both width and height are applied to it, and you can also set padding if necessary.

run-in

The run-in value defines an element that depends on neighboring elements. And there are three possible options here:

The element is surrounded by block elements, then in fact it has a style display: block, that is, it becomes block itself

The element is surrounded by inline elements, then in fact it has a style display: inline, i.e. it becomes inline itself

In all other cases, the element is considered a block element.

Table view

The table value essentially turns the element into a table. Let’s look at an example list:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Display Property in CSS3</title>
</head>

<body>
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
    </ul>
</body>

</html>


Here the list turns into a table, and each element of the list into a separate cell. To do this, the list element is styled display: table-cell. In fact, instead of this list, we could use a standard table.

Hiding an element

The none value allows you to hide an element that doesn’t appear to be on the web page:


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Display Property in CSS3</title>
</head>

<body>
    <p>First paragraph</p>
    <p class="invisible">Second paragraph</p>
    <p>Third paragraph</p>
</body>

</html>