aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Otto <[email protected]>2015-12-07 23:41:55 -0800
committerMark Otto <[email protected]>2015-12-07 23:41:55 -0800
commita9f53f0fc0360d35666284adf65cdcc0bcab3a00 (patch)
tree4d56c46434d4c25f1780ec0e34d7a56c2438129c
parent38847f564c966ac75612226502c4c4d6b93c8256 (diff)
parente7edf104737af04c5713d48c577c6f113fef6340 (diff)
downloadbootstrap-a9f53f0fc0360d35666284adf65cdcc0bcab3a00.tar.xz
bootstrap-a9f53f0fc0360d35666284adf65cdcc0bcab3a00.zip
Merge pull request #18110 from twbs/pagination-classes
Refactor pagination classes to avoid tag selectors & child selectors
-rw-r--r--docs/components/pagination.md72
-rw-r--r--scss/_pagination.scss79
-rw-r--r--scss/mixins/_pagination.scss20
3 files changed, 80 insertions, 91 deletions
diff --git a/docs/components/pagination.md b/docs/components/pagination.md
index 99d4220fa..4230a6647 100644
--- a/docs/components/pagination.md
+++ b/docs/components/pagination.md
@@ -18,19 +18,19 @@ Simple pagination inspired by Rdio, great for apps and search results. The large
{% example html %}
<nav>
<ul class="pagination">
- <li>
- <a href="#" aria-label="Previous">
+ <li class="page-item">
+ <a class="page-link" href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span>
</a>
</li>
- <li><a href="#">1</a></li>
- <li><a href="#">2</a></li>
- <li><a href="#">3</a></li>
- <li><a href="#">4</a></li>
- <li><a href="#">5</a></li>
- <li>
- <a href="#" aria-label="Next">
+ <li class="page-item"><a class="page-link" href="#">1</a></li>
+ <li class="page-item"><a class="page-link" href="#">2</a></li>
+ <li class="page-item"><a class="page-link" href="#">3</a></li>
+ <li class="page-item"><a class="page-link" href="#">4</a></li>
+ <li class="page-item"><a class="page-link" href="#">5</a></li>
+ <li class="page-item">
+ <a class="page-link" href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
<span class="sr-only">Next</span>
</a>
@@ -46,21 +46,21 @@ Links are customizable for different circumstances. Use `.disabled` for unclicka
{% example html %}
<nav>
<ul class="pagination">
- <li class="disabled">
- <a href="#" aria-label="Previous">
+ <li class="page-item disabled">
+ <a class="page-link" href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span>
</a>
</li>
- <li class="active">
- <a href="#">1 <span class="sr-only">(current)</span></a>
+ <li class="page-item active">
+ <a class="page-link" href="#">1 <span class="sr-only">(current)</span></a>
</li>
- <li><a href="#">2</a></li>
- <li><a href="#">3</a></li>
- <li><a href="#">4</a></li>
- <li><a href="#">5</a></li>
- <li>
- <a href="#" aria-label="Next">
+ <li class="page-item"><a class="page-link" href="#">2</a></li>
+ <li class="page-item"><a class="page-link" href="#">3</a></li>
+ <li class="page-item"><a class="page-link" href="#">4</a></li>
+ <li class="page-item"><a class="page-link" href="#">5</a></li>
+ <li class="page-item">
+ <a class="page-link" href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
<span class="sr-only">Next</span>
</a>
@@ -74,13 +74,13 @@ You can optionally swap out active or disabled anchors for `<span>`, or omit the
{% example html %}
<nav>
<ul class="pagination">
- <li class="disabled">
- <span aria-label="Previous">
+ <li class="page-item disabled">
+ <span class="page-link" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span>
</span>
</li>
- <li class="active"><span>1 <span class="sr-only">(current)</span></span></li>
+ <li class="page-item active"><span class="page-link">1 <span class="sr-only">(current)</span></span></li>
</ul>
</nav>
{% endexample %}
@@ -93,17 +93,17 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for
{% example html %}
<nav>
<ul class="pagination pagination-lg">
- <li>
- <a href="#" aria-label="Previous">
+ <li class="page-item">
+ <a class="page-link" href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span>
</a>
</li>
- <li><a href="#">1</a></li>
- <li><a href="#">2</a></li>
- <li><a href="#">3</a></li>
- <li>
- <a href="#" aria-label="Next">
+ <li class="page-item"><a class="page-link" href="#">1</a></li>
+ <li class="page-item"><a class="page-link" href="#">2</a></li>
+ <li class="page-item"><a class="page-link" href="#">3</a></li>
+ <li class="page-item">
+ <a class="page-link" href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
<span class="sr-only">Next</span>
</a>
@@ -115,17 +115,17 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for
{% example html %}
<nav>
<ul class="pagination pagination-sm">
- <li>
- <a href="#" aria-label="Previous">
+ <li class="page-item">
+ <a class="page-link" href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span>
</a>
</li>
- <li><a href="#">1</a></li>
- <li><a href="#">2</a></li>
- <li><a href="#">3</a></li>
- <li>
- <a href="#" aria-label="Next">
+ <li class="page-item"><a class="page-link" href="#">1</a></li>
+ <li class="page-item"><a class="page-link" href="#">2</a></li>
+ <li class="page-item"><a class="page-link" href="#">3</a></li>
+ <li class="page-item">
+ <a class="page-link" href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
<span class="sr-only">Next</span>
</a>
diff --git a/scss/_pagination.scss b/scss/_pagination.scss
index 282cd4886..10559516f 100644
--- a/scss/_pagination.scss
+++ b/scss/_pagination.scss
@@ -4,48 +4,24 @@
margin-top: $spacer-y;
margin-bottom: $spacer-y;
@include border-radius();
+}
- > li {
- display: inline; // Remove list-style and block-level defaults
+.page-item {
+ display: inline; // Remove list-style and block-level defaults
- > a,
- > span {
- position: relative;
- float: left; // Collapse white-space
- padding: $pagination-padding-y $pagination-padding-x;
- margin-left: -1px;
- line-height: $line-height;
- color: $pagination-color;
- text-decoration: none;
- background-color: $pagination-bg;
- border: $pagination-border-width solid $pagination-border-color;
- }
- &:first-child {
- > a,
- > span {
- margin-left: 0;
- @include border-left-radius($border-radius);
- }
- }
- &:last-child {
- > a,
- > span {
- @include border-right-radius($border-radius);
- }
+ &:first-child {
+ .page-link {
+ margin-left: 0;
+ @include border-left-radius($border-radius);
}
}
-
- > li > a,
- > li > span {
- @include hover-focus {
- color: $pagination-hover-color;
- background-color: $pagination-hover-bg;
- border-color: $pagination-hover-border;
+ &:last-child {
+ .page-link {
+ @include border-right-radius($border-radius);
}
}
- > .active > a,
- > .active > span {
+ &.active .page-link {
@include plain-hover-focus {
z-index: 2;
color: $pagination-active-color;
@@ -55,19 +31,34 @@
}
}
- > .disabled {
- > span,
- > a {
- @include plain-hover-focus {
- color: $pagination-disabled-color;
- cursor: $cursor-disabled;
- background-color: $pagination-disabled-bg;
- border-color: $pagination-disabled-border;
- }
+ &.disabled .page-link {
+ @include plain-hover-focus {
+ color: $pagination-disabled-color;
+ cursor: $cursor-disabled;
+ background-color: $pagination-disabled-bg;
+ border-color: $pagination-disabled-border;
}
}
}
+.page-link {
+ position: relative;
+ float: left; // Collapse white-space
+ padding: $pagination-padding-y $pagination-padding-x;
+ margin-left: -1px;
+ line-height: $line-height;
+ color: $pagination-color;
+ text-decoration: none;
+ background-color: $pagination-bg;
+ border: 1px solid $pagination-border;
+
+ @include hover-focus {
+ color: $pagination-hover-color;
+ background-color: $pagination-hover-bg;
+ border-color: $pagination-hover-border;
+ }
+}
+
//
// Sizing
diff --git a/scss/mixins/_pagination.scss b/scss/mixins/_pagination.scss
index d4a5404fc..eaebe8955 100644
--- a/scss/mixins/_pagination.scss
+++ b/scss/mixins/_pagination.scss
@@ -1,22 +1,20 @@
// Pagination
@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
- > li {
- > a,
- > span {
- padding: $padding-vertical $padding-horizontal;
- font-size: $font-size;
- line-height: $line-height;
- }
+ .page-link {
+ padding: $padding-vertical $padding-horizontal;
+ font-size: $font-size;
+ line-height: $line-height;
+ }
+
+ .page-item {
&:first-child {
- > a,
- > span {
+ .page-link {
@include border-left-radius($border-radius);
}
}
&:last-child {
- > a,
- > span {
+ .page-link {
@include border-right-radius($border-radius);
}
}