En CSS, quel est le meilleur moyen de forcer un saut de ligne après un élément plutôt que de le transformer en élément de bloc?

J'ai un H3-tête que j'aimerais style comme ayant une couleur de fond particulière, mais sans avoir l'élément de fond de prendre toute la largeur de l'élément parent. Voyant que H3 est par défaut d'un élément de bloc, mon style serait nécessaire de changer l'élément à un inline-block élément, ou tout simplement un inline inline comme suit:

h3 {
    background-color: #333;
    color: white;
    display: inline-block;
}

Cela fonctionne bien, mais seulement si elle est immédiatement suivie par un élément de type block. Je ne veux pas changer le balisage juste pour répondre à ce style, donc je me demandais si il existe un moyen de causer de tout élément adjacent, indépendamment de la façon dont il affiche, pour commencer sur la ligne suivante?

Supposons que je peux utiliser CSS3.

source d'informationauteur Nathan Ridley | 2010-09-21