Du kannst diesen Pseudoelementen aber auch einfach nur „nichts“ als content geben, und ihnen dann ein Hintergrundbild verpassen.
Auf die gewünschte Breite könntest du sie bspw. per absoluter Positionierung bekommen - „ausreichend“ große Breite geben, und „überstehendes“ per overflow abschneiden.
Ich habs mal mit
h4:before{
content: "";
position: absolute;
width: 900px;
overflow: hidden;
background: url(line.png);
klappt leider auch nicht. Sobald content „leer“ ist wird auch die Hintergrundgrafik nicht angezeigt. Wenn etwas vorhanden ist (z.B. content:".") zeigt er das :before-Element auch an, in gewünschter Breite von 900px, schneidet aber durch overflow natürlich nichts ab.