Flexbox is the way to go for that.
ul {
width: 80%;
border: 1px solid grey;
margin: 1em auto;
padding: 0;
}
.subtitle {
display: flex;
justify-content: space-between;
}
span {
background: #c0ffee;
}
<ul>
<li class="subtitle"> <span>a </span>: <span>b</span></li>
<li class="subtitle"> <span>c </span>: <span>d</span></li>
</ul>
Alternatively, you could use floats
ul {
width: 80%;
border: 1px solid grey;
margin: 1em auto;
padding: 0;
}
.subtitle {
overflow: hidden;
text-align: center;
}
span {
background: #c0ffee;
}
.subtitle span:first-child {
float: left;
}
.subtitle span:last-child {
float: right;
}
<ul>
<li class="subtitle"> <span>a </span>: <span>b</span></li>
<li class="subtitle"> <span>c </span>: <span>d</span></li>
</ul>
If those options don't quite suit your needs, you can consider using CSS Tables
ul {
width: 80%;
border: 1px solid grey;
margin: 1em auto;
padding: 0;
}
.subtitle {
display: table;
table-layout: fixed;
width: 100%;
text-align: center;
}
span {
background: #c0ffee;
display: table-cell;
}
.subtitle span:first-child {
text-align: left;
}
.subtitle span:last-child {
text-align: right;
}
<ul>
<li class="subtitle"> <span>a </span>: <span>b</span>
</li>
<li class="subtitle"> <span>c </span>: <span>d</span>
</li>
</ul>
Keep in mind that CSS Tables may not provide the exact layout you're looking for.