Best thing is to wrap inline elements inside block elements
best option is to use a div element which is block which takes a full width by default once you add a width it will work perfectly
div {
border: 1px solid red;
/*width:200px*/
}
<div>
<h2>Article 1</h2>
<p>Content for article 1. Bla bla bla bla bla and some more bla...</p>
</div>
by default span is a inline element you can see in the first example which doesnt take any width you will need to set it to display:inline-block
here is the default demo
span {
border: 1px solid red;
}
<span>
<h2>Article 1</h2>
<p>Content for article 1. Bla bla bla bla bla and some more bla...</p>
</span>
<span>
<h2>Article 2</h2>
<p>Content for article 1. Bla bla bla bla bla and some more bla...</p>
</span>
<span>
<h2>Article 3</h2>
<p>Content for article 3. Bla bla bla bla bla and some more bla...</p>
</span>
span {
width: 200px;
display:inline-block;
border:1px solid red;
}
<span>
<h2>Article 1</h2>
<p>Content for article 1. Bla bla bla bla bla and some more bla...</p>
</span>
<span>
<h2>Article 2</h2>
<p>Content for article 1. Bla bla bla bla bla and some more bla...</p>
</span>
<span>
<h2>Article 3</h2>
<p>Content for article 3. Bla bla bla bla bla and some more bla...</p>
</span>
If you doeswant the spacing between inline element you can use float but dont forget to clear the float
span {
width: 200px;
float: left;
border: 1px solid red;
}
<span>
<h2>Article 1</h2>
<p>Content for article 1. Bla bla bla bla bla and some more bla...</p>
</span>
<span>
<h2>Article 2</h2>
<p>Content for article 1. Bla bla bla bla bla and some more bla...</p>
</span>
<span>
<h2>Article 3</h2>
<p>Content for article 3. Bla bla bla bla bla and some more bla...</p>
</span>