Reputation: 107
I have a "Read More" button set up to hide and show some of the content. Which is working exactly as expected. My issue is I want to align the button to the center while keeping the rest of the content of the page aligned to the left.
Here is what I have now....
// Hide the extra content initially, using JS so that if JS is disabled, no problemo:
$('.read-more-content').addClass('hide')
$('.read-more-show, .read-more-hide').removeClass('hide')
// Set up the toggle effect:
$('.read-more-show').on('click', function(e) {
$(this).next('.read-more-content').removeClass('hide');
$(this).addClass('hide');
e.preventDefault();
});
// Changes contributed by @diego-rzg
$('.read-more-hide').on('click', function(e) {
var p = $(this).parent('.read-more-content');
p.addClass('hide');
p.prev('.read-more-show').removeClass('hide'); // Hide only the preceding "Read More"
e.preventDefault();
});
div{
display: block;
margin: 20px 0;
}
p {
border-bottom: 1px solid black;
padding: 20px;
}
.hide {
display: none;
}
a{
color: white;
background: blue;
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Egestas mollitia quos metus natus assumenda ullam suscipit ultricies. Voluptas, nihil natoque elementum error ligula exercitationem aliquid tempor mauris penatibus. Suspendisse! Rutrum volutpat adipiscing nascetur cras conubia cupidatat! Pede voluptatibus tristique adipiscing, eleifend vestibulum, dolore, eveniet facilis ipsa, deleniti sit repudiandae temporibus esse hic! Primis phasellus ut vestibulum pellentesque condimentum laboris sed? Molestie torquent, occaecati natoque, quisque nostra sunt, nibh, consequuntur turpis eros aut justo qui recusandae eos, soluta repellat ipsa tortor tempus ultrices dis, unde voluptates venenatis placeat praesent suscipit maxime, lacus eleifend? Iste nisi fermentum! Corporis accusamus dictum! Sapien laboris massa fugit deserunt laboriosam mi consectetur curabitur cum.</div>
<a class="read-more-show hide" href="#">Read More</a>
<span class="read-more-content">
<div>Egestas mollitia quos metus natus assumenda ullam suscipit ultricies. Voluptas, nihil natoque elementum error ligula exercitationem aliquid tempor mauris penatibus. Suspendisse! Rutrum volutpat adipiscing nascetur cras conubia cupidatat!
</div>
<a class="read-more-hide hide" href="#">Read Less</a></span>
I want to align the "Read More" and "read Less" Buttons to the center while keeping the content aligned to the left. Any help or ideas would be awesome! Thanks Guys!
Upvotes: 0
Views: 49
Reputation: 12078
You can do it with the positioning:
// Hide the extra content initially, using JS so that if JS is disabled, no problemo:
$('.read-more-content').addClass('hide')
$('.read-more-show, .read-more-hide').removeClass('hide')
// Set up the toggle effect:
$('.read-more-show').on('click', function(e) {
$(this).next('.read-more-content').removeClass('hide');
$(this).addClass('hide');
e.preventDefault();
});
// Changes contributed by @diego-rzg
$('.read-more-hide').on('click', function(e) {
var p = $(this).parent('.read-more-content');
p.addClass('hide');
p.prev('.read-more-show').removeClass('hide'); // Hide only the preceding "Read More"
e.preventDefault();
});
div {
display: block;
margin: 20px 0;
}
p {
border-bottom: 1px solid black;
padding: 20px;
}
.hide {
display: none;
}
a {
color: white;
background: blue;
padding: 5px;
position: absolute;
left: 50%;
transform: translateX(-50%);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Egestas mollitia quos metus natus assumenda ullam suscipit ultricies. Voluptas, nihil natoque elementum error ligula exercitationem aliquid tempor mauris penatibus. Suspendisse! Rutrum volutpat adipiscing nascetur cras conubia cupidatat! Pede voluptatibus tristique adipiscing, eleifend vestibulum, dolore, eveniet facilis ipsa, deleniti sit repudiandae temporibus esse hic! Primis phasellus ut vestibulum pellentesque condimentum laboris sed? Molestie torquent, occaecati natoque, quisque nostra sunt, nibh, consequuntur turpis eros aut justo qui recusandae eos, soluta repellat ipsa tortor tempus ultrices dis, unde voluptates venenatis placeat praesent suscipit maxime, lacus eleifend? Iste nisi fermentum! Corporis accusamus dictum! Sapien laboris massa fugit deserunt laboriosam mi consectetur curabitur cum.</div>
<a class="read-more-show hide" href="#">Read More</a>
<span class="read-more-content">
<div>Egestas mollitia quos metus natus assumenda ullam suscipit ultricies. Voluptas, nihil natoque elementum error ligula exercitationem aliquid tempor mauris penatibus. Suspendisse! Rutrum volutpat adipiscing nascetur cras conubia cupidatat!
</div>
<a class="read-more-hide hide" href="#">Read Less</a></span>
Upvotes: 1
Reputation: 703
Place the Read More/ Read less anchors into <div class="center></div>
and add next styling to center class: .center { width: 100px; margin: 0 auto; }
margin: 0 auto;
is a nice hack to center any element in the website page just make sure that element has a set width.
// Hide the extra content initially, using JS so that if JS is disabled, no problemo:
$('.read-more-content').addClass('hide')
$('.read-more-show, .read-more-hide').removeClass('hide')
// Set up the toggle effect:
$('.read-more-show').on('click', function(e) {
$(this).next('.read-more-content').removeClass('hide');
$(this).addClass('hide');
e.preventDefault();
});
// Changes contributed by @diego-rzg
$('.read-more-hide').on('click', function(e) {
var p = $(this).parent('.read-more-content');
p.addClass('hide');
p.prev('.read-more-show').removeClass('hide'); // Hide only the preceding "Read More"
e.preventDefault();
});
div{
display: block;
margin: 20px 0;
}
p {
border-bottom: 1px solid black;
padding: 20px;
}
.hide {
display: none;
}
a{
color: white;
background: blue;
padding: 5px;
}
.center {
width: 100px;
margin: 0 auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Egestas mollitia quos metus natus assumenda ullam suscipit ultricies. Voluptas, nihil natoque elementum error ligula exercitationem aliquid tempor mauris penatibus. Suspendisse! Rutrum volutpat adipiscing nascetur cras conubia cupidatat! Pede voluptatibus tristique adipiscing, eleifend vestibulum, dolore, eveniet facilis ipsa, deleniti sit repudiandae temporibus esse hic! Primis phasellus ut vestibulum pellentesque condimentum laboris sed? Molestie torquent, occaecati natoque, quisque nostra sunt, nibh, consequuntur turpis eros aut justo qui recusandae eos, soluta repellat ipsa tortor tempus ultrices dis, unde voluptates venenatis placeat praesent suscipit maxime, lacus eleifend? Iste nisi fermentum! Corporis accusamus dictum! Sapien laboris massa fugit deserunt laboriosam mi consectetur curabitur cum.</div>
<div class="center"><a class="read-more-show hide" href="#">Read More</a></div>
<span class="read-more-content">
<div>Egestas mollitia quos metus natus assumenda ullam suscipit ultricies. Voluptas, nihil natoque elementum error ligula exercitationem aliquid tempor mauris penatibus. Suspendisse! Rutrum volutpat adipiscing nascetur cras conubia cupidatat!
</div>
<div class="center"><a class="read-more-hide hide" href="#">Read Less</a></div></span>
Upvotes: 0
Reputation: 471
You could add following css to your buttons:
text-align: center;
display: block;
margin: 0 auto;
width: 100px;
Upvotes: 2
Reputation: 327
In your a.read-more-show class style, add the following:
.read-more-show {
display: table;
margin: 0 auto;
}
Upvotes: 0