Reputation: 31
Hey I'm trying to have a text justified but on the top of the text I want another text but on the center, inside a span
tag.. Code down below
html:
<p><span>Hello world,</span>Here is my long text, about 100 lines</p> <!-- This must be justified-->
css:
p {
text-align: justify;
}
span {
text-align: center;
}
Upvotes: 3
Views: 3050
Reputation: 144
Just for funsies, you could also use flex;
.container {
display: flex;
flex-direction: column;
width: 400px;
}
.container p {
width: 400px;
}
.container span {
align-self: center;
}
<div class="container">
<span>Lorem ipsum dolor sit amen, neato</span>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla gravida ac ex vel tempor. Integer eget rutrum lorem. In accumsan rutrum mauris quis porttitor. In hac habitasse platea dictumst. Fusce vulputate feugiat viverra. Sed ac commodo purus, sed sollicitudin ex. Cras a mattis risus, vel accumsan augue. Maecenas odio erat, auctor maximus lorem nec, euismod auctor sem. Etiam ac vestibulum justo, eget vestibulum tellus.
</p>
</div>
You probably should never use this solution, because you could probably just use the text-align
property, but flex is pretty sweet at doing stuff like this. Something to keep in mind is that align-self
pertains to the nearest flex, not the p
element, since it does not have display: flex;
.
Upvotes: 0
Reputation: 8722
You'll need to set the span
element to display: block;
in order for the text-align: center;
rule you have declared on this element to take the effect you expect.
span {
display: block;
text-align: center;
}
p {
text-align: justify;
}
<p><span>Hello world,</span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
It would be better to change the span
to a p
, as it is already a block element, then you can target respective p
tags separately and apply the needed text-align
rule accordingly.
Upvotes: 6
Reputation: 115066
This really sounds like something you should be using a heading for rather than a span but flexbox can do that.
p {
text-align: justify;
display: flex;
flex-wrap: wrap;
width: 80%;
margin: 1em auto;
border: 1px solid grey
}
span {
text-align: center;
width: 100%;
}
<p><span>Hello world,</span>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto unde cum, quis vero consequuntur temporibus nisi a voluptatum repudiandae sequi aliquid adipisci eum, quae libero autem ducimus commodi ab officiis nesciunt tempore!
Dicta quos, assumenda modi totam rem accusantium odio fuga consequatur sunt minus asperiores, corrupti corporis labore reiciendis animi.</p>
More semantically.
* {
margin: 0;
}
div {
text-align: justify;
flex-wrap: wrap;
width: 80%;
margin: 1em auto;
border: 1px solid grey
}
h4 {
text-align: center;
width: 100%;
font-weight: normal;
}
<div>
<h4>Hello world</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto unde cum, quis vero consequuntur temporibus nisi a voluptatum repudiandae sequi aliquid adipisci eum, quae libero autem ducimus commodi ab officiis nesciunt tempore! Dicta quos, assumenda
modi totam rem accusantium odio fuga consequatur sunt minus asperiores, corrupti corporis labore reiciendis animi.</p>
</div>
Upvotes: 2