diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index c5aae17..f5fa016 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -329,7 +329,7 @@ function template_preprocess_menu_local_task(&$variables) {
   if (!empty($variables['element']['#active'])) {
     // Add text to indicate active tab for non-visual users.
     $active = '<span class="visually-hidden">' . t('(active tab)') . '</span>';
-    $variables['attributes']['class'] = array('active');
+    $variables['attributes']['class'] = array('is-active');
 
     // If the link does not contain HTML already, String::checkPlain() it now.
     // After we set 'html'=TRUE the link will not be sanitized by l().
diff --git a/core/includes/tablesort.inc b/core/includes/tablesort.inc
index 0258a76..0132599 100644
--- a/core/includes/tablesort.inc
+++ b/core/includes/tablesort.inc
@@ -50,7 +50,7 @@ function tablesort_header(&$cell_content, array &$cell_attributes, array $header
       // http://www.w3.org/TR/wai-aria/states_and_properties#aria-sort
       $cell_attributes['aria-sort'] = ($ts['sort'] == 'asc') ? 'ascending' : 'descending';
       $ts['sort'] = (($ts['sort'] == 'asc') ? 'desc' : 'asc');
-      $cell_attributes['class'][] = 'active';
+      $cell_attributes['class'][] = 'is-active';
       $tablesort_indicator = array(
         '#theme' => 'tablesort_indicator',
         '#style' => $ts['sort'],
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 1015f67..7331c6f 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1370,7 +1370,7 @@ function template_preprocess_table(&$variables) {
             }
             // Add active class if needed for sortable tables.
             if (isset($variables['header'][$col_key]['data']) && $variables['header'][$col_key]['data'] == $ts['name'] && !empty($variables['header'][$col_key]['field'])) {
-              $cell_attributes['class'][] = 'active';
+              $cell_attributes['class'][] = 'is-active';
             }
             // Copy RESPONSIVE_PRIORITY_LOW/RESPONSIVE_PRIORITY_MEDIUM
             // class from header to cell as needed.
@@ -1561,7 +1561,7 @@ function template_preprocess_maintenance_task_list(&$variables) {
     $variables['tasks'][$k]['item'] = $item;
     $variables['tasks'][$k]['attributes'] = new Attribute();
     if ($active == $k) {
-      $variables['tasks'][$k]['attributes']->addClass('active');
+      $variables['tasks'][$k]['attributes']->addClass('is-active');
       $variables['tasks'][$k]['status'] = t('active');
       $done = FALSE;
     }
diff --git a/core/lib/Drupal/Core/Template/Attribute.php b/core/lib/Drupal/Core/Template/Attribute.php
index cebe699..fc3800d 100644
--- a/core/lib/Drupal/Core/Template/Attribute.php
+++ b/core/lib/Drupal/Core/Template/Attribute.php
@@ -161,6 +161,48 @@ public function addClass() {
   }
 
   /**
+   * Adds attributes or merges them on to array of existing attributes.
+   *
+   * @param string|array ...
+   *   Attributes to add to the class attribute array.
+   *
+   * @return $this
+   */
+  public function setAttribute($attribute, $value) {
+    // If attribute key exists we can set attribute.
+    if ($attribute) {
+      $this->offsetSet($attribute, $value);
+    }
+
+    return $this;
+  }
+
+  /**
+   * Removes argument from array of existing attributes.
+   *
+   * @param string|array ...
+   *   Attributes to remove from the attribute array.
+   *
+   * @return $this
+   */
+  public function removeAttribute() {
+    $args = func_get_args();
+    foreach ($args as $arg) {
+      // Support arrays or multiple arguments.
+      if (is_array($arg)) {
+        foreach ($arg as $value) {
+          unset($this->storage[$value]);
+        }
+      }
+      else {
+        unset($this->storage[$arg]);
+      }
+    }
+
+    return $this;
+  }
+
+  /**
    * Removes argument values from array of existing CSS classes.
    *
    * @param string|array ...
diff --git a/core/misc/active-link.js b/core/misc/active-link.js
index 5bd12eb..496055f 100644
--- a/core/misc/active-link.js
+++ b/core/misc/active-link.js
@@ -47,14 +47,14 @@
       // Query the DOM.
       var activeLinks = context.querySelectorAll(selectors.join(','));
       for (var i = 0, il = activeLinks.length; i < il; i += 1) {
-        activeLinks[i].classList.add('active');
+        activeLinks[i].classList.add('is-active');
       }
     },
     detach: function (context, settings, trigger) {
       if (trigger === 'unload') {
-        var activeLinks = context.querySelectorAll('[data-drupal-link-system-path].active');
+        var activeLinks = context.querySelectorAll('[data-drupal-link-system-path].is-active');
         for (var i = 0, il = activeLinks.length; i < il; i += 1) {
-          activeLinks[i].classList.remove('active');
+          activeLinks[i].classList.remove('is-active');
         }
       }
     }
diff --git a/core/modules/contextual/css/contextual.icons.css b/core/modules/contextual/css/contextual.icons.css
index 668e510..44ce59f 100644
--- a/core/modules/contextual/css/contextual.icons.css
+++ b/core/modules/contextual/css/contextual.icons.css
@@ -9,8 +9,8 @@
 .toolbar-bar .toolbar-icon-edit:before {
   background-image: url(../../../misc/icons/bebebe/pencil.svg);
 }
-.toolbar-bar .toolbar-icon-edit:active:before,
-.toolbar-bar .toolbar-icon-edit.active:before {
+.toolbar-bar .toolbar-icon-edit:is-active:before,
+.toolbar-bar .toolbar-icon-edit.is-active:before {
   background-image: url(../../../misc/icons/ffffff/pencil.svg);
 }
 
diff --git a/core/modules/contextual/css/contextual.toolbar.css b/core/modules/contextual/css/contextual.toolbar.css
index bda844c..3c82a15 100644
--- a/core/modules/contextual/css/contextual.toolbar.css
+++ b/core/modules/contextual/css/contextual.toolbar.css
@@ -19,7 +19,7 @@
 [dir="rtl"] .toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item {
   padding-right: 1.3333em;
 }
-.toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item.active {
+.toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item.is-active {
   background-image:-webkit-linear-gradient(rgb(78,159,234) 0%, rgb(69,132,221) 100%);
   background-image:linear-gradient(rgb(78,159,234) 0%,rgb(69,132,221) 100%);
 }
diff --git a/core/modules/contextual/js/toolbar/views/VisualView.js b/core/modules/contextual/js/toolbar/views/VisualView.js
index 9b44451..41b095f 100644
--- a/core/modules/contextual/js/toolbar/views/VisualView.js
+++ b/core/modules/contextual/js/toolbar/views/VisualView.js
@@ -44,7 +44,7 @@
       // Render the visibility.
       this.$el.toggleClass('hidden', !this.model.get('isVisible'));
       // Render the state.
-      this.$el.find('button').toggleClass('active', !this.model.get('isViewing'));
+      this.$el.find('button').toggleClass('is-active', !this.model.get('isViewing'));
 
       return this;
     },
diff --git a/core/modules/shortcut/css/shortcut.icons.css b/core/modules/shortcut/css/shortcut.icons.css
index 658ef8a..c2bf9f1 100644
--- a/core/modules/shortcut/css/shortcut.icons.css
+++ b/core/modules/shortcut/css/shortcut.icons.css
@@ -10,7 +10,7 @@
   background-image: url(../../../misc/icons/bebebe/star.svg);
 }
 .toolbar-bar .toolbar-icon-shortcut:active:before,
-.toolbar-bar .toolbar-icon-shortcut.active:before {
+.toolbar-bar .toolbar-icon-shortcut.is-active:before {
   background-image: url(../../../misc/icons/ffffff/star.svg);
 }
 
diff --git a/core/modules/system/css/system.theme.css b/core/modules/system/css/system.theme.css
index bf14339..33c1e1a 100644
--- a/core/modules/system/css/system.theme.css
+++ b/core/modules/system/css/system.theme.css
@@ -13,10 +13,10 @@
 /**
  * Markup generated by theme_tablesort_indicator().
  */
-th.active img {
+th.is-active img {
   display: inline;
 }
-td.active {
+td.is-active {
   background-color: #ddd;
 }
 
@@ -376,7 +376,7 @@ ul.menu li {
   padding-top: 0.2em;
   margin: 0;
 }
-ul.menu a.active {
+ul.menu a.is-active {
   color: #000;
 }
 
@@ -393,7 +393,7 @@ ul.inline li {
   list-style-type: none;
   padding: 0 0.5em;
 }
-ul.links a.active {
+ul.links a.is-active {
   color: #000;
 }
 
@@ -449,7 +449,7 @@ ul.tabs {
   padding: 0.2em 1em;
   text-decoration: none;
 }
-.tabs a.active {
+.tabs a.is-active {
   background-color: #eee;
 }
 .tabs a:focus,
diff --git a/core/modules/toolbar/css/toolbar.icons.css b/core/modules/toolbar/css/toolbar.icons.css
index 0122c91..653fe97 100644
--- a/core/modules/toolbar/css/toolbar.icons.css
+++ b/core/modules/toolbar/css/toolbar.icons.css
@@ -66,14 +66,14 @@
   background-image: url(../../../misc/icons/bebebe/hamburger.svg);
 }
 .toolbar-bar .toolbar-icon-menu:active:before,
-.toolbar-bar .toolbar-icon-menu.active:before {
+.toolbar-bar .toolbar-icon-menu.is-active:before {
   background-image: url(../../../misc/icons/ffffff/hamburger.svg);
 }
 .toolbar-bar .toolbar-icon-help:before {
   background-image: url(../../../misc/icons/bebebe/questionmark-disc.svg);
 }
 .toolbar-bar .toolbar-icon-help:active:before,
-.toolbar-bar .toolbar-icon-help.active:before {
+.toolbar-bar .toolbar-icon-help.is-active:before {
   background-image: url(../../../misc/icons/ffffff/questionmark-disc.svg);
 }
 
@@ -84,56 +84,56 @@
   background-image: url(../../../misc/icons/787878/file.svg);
 }
 .toolbar-icon-system-admin-content:active:before,
-.toolbar-icon-system-admin-content.active:before {
+.toolbar-icon-system-admin-content.is-active:before {
   background-image: url(../../../misc/icons/000000/file.svg);
 }
 .toolbar-icon-system-admin-structure:before {
   background-image: url(../../../misc/icons/787878/orgchart.svg);
 }
 .toolbar-icon-system-admin-structure:active:before,
-.toolbar-icon-system-admin-structure.active:before {
+.toolbar-icon-system-admin-structure.is-active:before {
   background-image: url(../../../misc/icons/000000/orgchart.svg);
 }
 .toolbar-icon-system-themes-page:before {
   background-image: url(../../../misc/icons/787878/paintbrush.svg);
 }
 .toolbar-icon-system-themes-page:active:before,
-.toolbar-icon-system-themes-page.active:before {
+.toolbar-icon-system-themes-page.is-active:before {
   background-image: url(../../../misc/icons/000000/paintbrush.svg);
 }
 .toolbar-icon-user-admin-account:before {
   background-image: url(../../../misc/icons/787878/people.svg);
 }
 .toolbar-icon-user-admin-account:active:before,
-.toolbar-icon-user-admin-account.active:before {
+.toolbar-icon-user-admin-account.is-active:before {
   background-image: url(../../../misc/icons/000000/people.svg);
 }
 .toolbar-icon-system-modules-list:before {
   background-image: url(../../../misc/icons/787878/puzzlepiece.svg);
 }
 .toolbar-icon-system-modules-list:active:before,
-.toolbar-icon-system-modules-list.active:before {
+.toolbar-icon-system-modules-list.is-active:before {
   background-image: url(../../../misc/icons/000000/puzzlepiece.svg);
 }
 .toolbar-icon-system-admin-config:before {
   background-image: url(../../../misc/icons/787878/wrench.svg);
 }
 .toolbar-icon-system-admin-config:active:before,
-.toolbar-icon-system-admin-config.active:before {
+.toolbar-icon-system-admin-config.is-active:before {
   background-image: url(../../../misc/icons/000000/wrench.svg);
 }
 .toolbar-icon-system-admin-reports:before {
   background-image: url(../../../misc/icons/787878/barchart.svg);
 }
 .toolbar-icon-system-admin-reports:active:before,
-.toolbar-icon-system-admin-reports.active:before {
+.toolbar-icon-system-admin-reports.is-active:before {
   background-image: url(../../../misc/icons/000000/barchart.svg);
 }
 .toolbar-icon-help-main:before {
   background-image: url(../../../misc/icons/787878/questionmark-disc.svg);
 }
 .toolbar-icon-help-main:active:before,
-.toolbar-icon-help-main.active:before {
+.toolbar-icon-help-main.is-active:before {
   background-image: url(../../../misc/icons/000000/questionmark-disc.svg);
 }
 .toolbar .toolbar-bar .toolbar-icon:before {
diff --git a/core/modules/toolbar/css/toolbar.menu.css b/core/modules/toolbar/css/toolbar.menu.css
index 5e70a02..da982b9 100644
--- a/core/modules/toolbar/css/toolbar.menu.css
+++ b/core/modules/toolbar/css/toolbar.menu.css
@@ -29,7 +29,7 @@
   margin-right: 0;
 }
 .toolbar .toolbar-tray .active-trail > .toolbar-box a,
-.toolbar .toolbar-tray a.active {
+.toolbar .toolbar-tray a.is-active {
   color: #000;
   font-weight: bold;
 }
diff --git a/core/modules/toolbar/css/toolbar.module.css b/core/modules/toolbar/css/toolbar.module.css
index 06224fe..c9971f0 100644
--- a/core/modules/toolbar/css/toolbar.module.css
+++ b/core/modules/toolbar/css/toolbar.module.css
@@ -187,14 +187,14 @@ body.toolbar-fixed .toolbar .toolbar-tray-vertical {
   overflow-y: auto;
   position: fixed;
 }
-.toolbar .toolbar-tray.active {
+.toolbar .toolbar-tray.is-active {
   display: block;
 }
 /* Bring the tray into the viewport. By default it is just off-screen. */
-.toolbar-oriented .toolbar-tray-vertical.active {
+.toolbar-oriented .toolbar-tray-vertical.is-active {
   left: 0; /* LTR */
 }
-[dir="rtl"] .toolbar-oriented .toolbar-tray-vertical.active {
+[dir="rtl"] .toolbar-oriented .toolbar-tray-vertical.is-active {
   left: auto;
   right: 0;
 }
diff --git a/core/modules/toolbar/css/toolbar.theme.css b/core/modules/toolbar/css/toolbar.theme.css
index d143a0b..a7a626f 100644
--- a/core/modules/toolbar/css/toolbar.theme.css
+++ b/core/modules/toolbar/css/toolbar.theme.css
@@ -47,7 +47,7 @@
   background-image: linear-gradient(rgba(255, 255, 255, 0.125) 20%, transparent 200%);
   text-decoration: none;
 }
-.toolbar .toolbar-bar .toolbar-tab > .toolbar-item.active {
+.toolbar .toolbar-bar .toolbar-tab > .toolbar-item.is-active {
   background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%);
   background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%);
 }
@@ -94,7 +94,7 @@
 .toolbar-tray a:hover,
 .toolbar-tray a:active,
 .toolbar-tray a:focus,
-.toolbar-tray a.active
+.toolbar-tray a.is-active
  {
   color: #000;
   text-decoration: underline;
diff --git a/core/modules/toolbar/js/toolbar.menu.js b/core/modules/toolbar/js/toolbar.menu.js
index 1cfe3ea..6736897 100644
--- a/core/modules/toolbar/js/toolbar.menu.js
+++ b/core/modules/toolbar/js/toolbar.menu.js
@@ -128,7 +128,7 @@
         activeItem = location.pathname;
       }
       if (activeItem) {
-        var $activeItem = $menu.find('a[href="' + activeItem + '"]').addClass('active');
+        var $activeItem = $menu.find('a[href="' + activeItem + '"]').addClass('is-active');
         var $activeTrail = $activeItem.parentsUntil('.root', 'li').addClass('active-trail');
         toggleList($activeTrail, true);
       }
diff --git a/core/modules/toolbar/js/views/ToolbarVisualView.js b/core/modules/toolbar/js/views/ToolbarVisualView.js
index e9dd6f0..c20929e 100644
--- a/core/modules/toolbar/js/views/ToolbarVisualView.js
+++ b/core/modules/toolbar/js/views/ToolbarVisualView.js
@@ -135,16 +135,16 @@
       var $tab = $(this.model.get('activeTab'));
       // Deactivate the previous tab.
       $(this.model.previous('activeTab'))
-        .removeClass('active')
+        .removeClass('is-active')
         .prop('aria-pressed', false);
       // Deactivate the previous tray.
       $(this.model.previous('activeTray'))
-        .removeClass('active');
+        .removeClass('is-active');
 
       // Activate the selected tab.
       if ($tab.length > 0) {
         $tab
-          .addClass('active')
+          .addClass('is-active')
           // Mark the tab as pressed.
           .prop('aria-pressed', true);
         var name = $tab.attr('data-toolbar-tray');
@@ -156,7 +156,7 @@
         // Activate the associated tray.
         var $tray = this.$el.find('[data-toolbar-tray="' + name + '"].toolbar-tray');
         if ($tray.length) {
-          $tray.addClass('active');
+          $tray.addClass('is-active');
           this.model.set('activeTray', $tray.get(0));
         }
         else {
@@ -218,9 +218,9 @@
       // Remove data-offset attributes from the trays so they can be refreshed.
       $trays.removeAttr('data-offset-left data-offset-right data-offset-top');
       // If an active vertical tray exists, mark it as an offset element.
-      $trays.filter('.toolbar-tray-vertical.active').attr('data-offset-' + edge, '');
+      $trays.filter('.toolbar-tray-vertical.is-active').attr('data-offset-' + edge, '');
       // If an active horizontal tray exists, mark it as an offset element.
-      $trays.filter('.toolbar-tray-horizontal.active').attr('data-offset-top', '');
+      $trays.filter('.toolbar-tray-horizontal.is-active').attr('data-offset-top', '');
     },
 
     /**
diff --git a/core/modules/tour/css/tour.module.css b/core/modules/tour/css/tour.module.css
index a9fb1c0..5b1dce9 100644
--- a/core/modules/tour/css/tour.module.css
+++ b/core/modules/tour/css/tour.module.css
@@ -16,7 +16,7 @@
   color: #fff;
   font-weight: bold;
 }
-.toolbar .tour-toolbar-tab button.active {
+.toolbar .tour-toolbar-tab button.is-active {
   background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%);
   background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%);
 }
diff --git a/core/modules/tour/js/tour.js b/core/modules/tour/js/tour.js
index acede2b..4a2342f 100644
--- a/core/modules/tour/js/tour.js
+++ b/core/modules/tour/js/tour.js
@@ -87,7 +87,7 @@
       // Render the state.
       var isActive = this.model.get('isActive');
       this.$el.find('button')
-        .toggleClass('active', isActive)
+        .toggleClass('is-active', isActive)
         .prop('aria-pressed', isActive);
       return this;
     },
diff --git a/core/modules/user/css/user.icons.css b/core/modules/user/css/user.icons.css
index 11ae839..66c2366 100644
--- a/core/modules/user/css/user.icons.css
+++ b/core/modules/user/css/user.icons.css
@@ -10,6 +10,6 @@
   background-image: url(../../../misc/icons/bebebe/person.svg);
 }
 .toolbar-bar .toolbar-icon-user:active:before,
-.toolbar-bar .toolbar-icon-user.active:before {
+.toolbar-bar .toolbar-icon-user.is-active:before {
   background-image: url(../../../misc/icons/ffffff/person.svg);
 }
diff --git a/core/modules/views_ui/css/views_ui.admin.theme.css b/core/modules/views_ui/css/views_ui.admin.theme.css
index 47909d9..18d3d29 100644
--- a/core/modules/views_ui/css/views_ui.admin.theme.css
+++ b/core/modules/views_ui/css/views_ui.admin.theme.css
@@ -450,7 +450,7 @@ td.group-title {
 }
 
 .views-displays .tabs.secondary li,
-.views-displays .tabs.secondary li.active {
+.views-displays .tabs.secondary li.is-active {
   background: transparent;
   margin-bottom: 5px;
   border: 0;
@@ -487,7 +487,7 @@ td.group-title {
 /**
  * Display a red border if the display doesn't validate.
  */
-.views-displays .tabs.secondary li.active a.active.error,
+.views-displays .tabs.secondary li.is-active a.is-active.error,
 .views-displays .tabs.secondary a.error {
   border: 2px solid #ed541d;
   padding: 1px 6px;
@@ -502,8 +502,8 @@ td.group-title {
 }
 
 .views-displays .tabs.secondary li a:hover,
-.views-displays .tabs.secondary li.active a,
-.views-displays .tabs.secondary li.active a.active {
+.views-displays .tabs.secondary li.is-active a,
+.views-displays .tabs.secondary li.is-active a.is-active {
   background-color: #555;
   color: #fff;
 }
diff --git a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
index b04eb51..7da0d84 100644
--- a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
+++ b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
@@ -58,6 +58,62 @@ public function testRemove() {
   }
 
   /**
+   * Test setting an attributes.
+   * @covers ::setAttribute()
+   */
+  public function testSetAttribute() {
+    $attribute = new Attribute();
+
+    // Test adding various attributes.
+    $attributes = array('alt', 'id', 'src', 'title', 'value');
+    foreach ($attributes as $key) {
+      foreach (array('kitten', '') as $value) {
+        $attribute = new Attribute();
+        $attribute->setAttribute($key, $value);
+        $this->assertEquals($value, $attribute[$key]);
+      }
+    }
+
+    // Test adding array to class.
+    $attribute = new Attribute();
+    $attribute->setAttribute('class', array('kitten', 'cat'));
+    $this->assertArrayEquals(array('kitten', 'cat'), $attribute['class']->value());
+  }
+
+  /**
+   * Test removing of attributes.
+   * @covers ::removeAttribute()
+   */
+  public function testRemoveAttribute() {
+    $attributes = array(
+      'alt' => 'Alternative text',
+      'id' => 'bunny',
+      'src' => 'zebra',
+      'style' => 'color: pink;',
+      'title' => 'lama',
+      'value' => 'ostrich',
+    );
+    $attribute = new Attribute($attributes);
+
+    // Single value.
+    $attribute->removeAttribute('alt');
+    $this->assertEmpty($attribute['alt']);
+
+    // Multiple values.
+    $attribute->removeAttribute('id', 'src');
+    $this->assertEmpty($attribute['id']);
+    $this->assertEmpty($attribute['src']);
+
+    // Single value in array.
+    $attribute->removeAttribute(['style']);
+    $this->assertEmpty($attribute['style']);
+
+    // Multiple values in array.
+    $attribute->removeAttribute(['title', 'value']);
+    $this->assertEmpty((string) $attribute);
+  }
+
+  /**
    * Tests adding class attributes with the AttributeArray helper method.
    * @covers ::addClass()
    */
diff --git a/core/themes/bartik/color/preview.css b/core/themes/bartik/color/preview.css
index 38c694e..7b711bb 100644
--- a/core/themes/bartik/color/preview.css
+++ b/core/themes/bartik/color/preview.css
@@ -57,7 +57,7 @@
   text-decoration: none;
   cursor: pointer;
 }
-#preview-main-menu-links li a.active {
+#preview-main-menu-links li a.is-active {
   background: #fff;
   border-bottom: none;
 }
diff --git a/core/themes/bartik/css/colors.css b/core/themes/bartik/css/colors.css
index 6721678..51f5fbc 100644
--- a/core/themes/bartik/css/colors.css
+++ b/core/themes/bartik/css/colors.css
@@ -8,14 +8,14 @@ body {
 }
 #page,
 #main-wrapper,
-.region-primary-menu .menu li a.active,
+.region-primary-menu .menu li a.is-active,
 .region-primary-menu .menu li .active-trail a {
   background: #ffffff;
 }
-.tabs ul.primary li a.active {
+.tabs ul.primary li a.is-active {
   background-color: #ffffff;
 }
-.tabs ul.primary li.active a {
+.tabs ul.primary li.is-active a {
   background-color: #ffffff;
   border-bottom: 1px solid #ffffff;
 }
@@ -48,7 +48,7 @@ a:active,
 }
 .region-header,
 .region-header a,
-.region-header li a.active,
+.region-header li a.is-active,
 #name-and-slogan,
 .site-branding-block,
 #name-and-slogan a,
diff --git a/core/themes/bartik/css/style.css b/core/themes/bartik/css/style.css
index 829deb9..ee33831 100644
--- a/core/themes/bartik/css/style.css
+++ b/core/themes/bartik/css/style.css
@@ -608,7 +608,7 @@ h1.site-name {
   background: #b3b3b3;
   background: rgba(255, 255, 255, 1);
 }
-.region-primary-menu .menu li a.active {
+.region-primary-menu .menu li a.is-active {
   border-bottom: none;
 }
 
@@ -1278,7 +1278,7 @@ div.tabs {
   float: right;
   zoom: 1;
 }
-.tabs ul.primary li.active a {
+.tabs ul.primary li.is-active a {
   border-bottom: 1px solid #ffffff;
 }
 .tabs ul.primary li a {
@@ -1298,7 +1298,7 @@ div.tabs {
   border-top-left-radius: 6px;
   border-top-right-radius: 6px;
 }
-.tabs ul.primary li.active a {
+.tabs ul.primary li.is-active a {
   background-color: #ffffff;
   border: 1px solid #bbb;
   border-bottom: 1px solid #fff;
@@ -1337,7 +1337,7 @@ div.tabs {
   padding: 0.25em 0.5em;
   text-decoration: none;
 }
-.tabs ul.secondary li a.active {
+.tabs ul.secondary li a.is-active {
   background: #f2f2f2;
   border-bottom: none;
   border-radius: 5px;
@@ -1992,7 +1992,7 @@ div.admin-panel .description {
     padding: 0.7em 0.8em;
   }
   .featured .region-primary-menu .menu li a:active,
-  .featured .region-primary-menu .menu li a.active {
+  .featured .region-primary-menu .menu li a.is-active {
     background: #f0f0f0;
     background: rgba(240, 240, 240, 1.0);
   }
diff --git a/core/themes/seven/css/components/tables.css b/core/themes/seven/css/components/tables.css
index 524c83b..5c7ba15 100644
--- a/core/themes/seven/css/components/tables.css
+++ b/core/themes/seven/css/components/tables.css
@@ -66,38 +66,38 @@ th > a:after {
   -webkit-transition: all 0.1s;
   transition: all 0.1s;
 }
-th.active > a {
+th.is-active > a {
   color: #004875;
 }
-th.active img {
+th.is-active img {
   position: absolute;
   right: 0; /* LTR */
   top: 50%;
 }
-[dir="rtl"] th.active img {
+[dir="rtl"] th.is-active img {
   right: auto;
   left: 0;
 }
-th.active > a:after {
+th.is-active > a:after {
   border-bottom-color: #004875;
 }
 th > a:hover,
 th > a:focus,
-th.active > a:hover,
-th.active > a:focus {
+th.is-active > a:hover,
+th.is-active > a:focus {
   color: #008ee6;
   text-decoration: none;
 }
 th > a:hover:after,
 th > a:focus:after,
-th.active > a:hover:after,
-th.active > a:focus:after {
+th.is-active > a:hover:after,
+th.is-active > a:focus:after {
   border-bottom-color: #008ee6;
 }
 td .item-list ul {
   margin: 0;
 }
-td.active {
+td.is-active {
   background: none;
 }
 
diff --git a/core/themes/seven/css/components/tabs.css b/core/themes/seven/css/components/tabs.css
index 6f437fb..e740875 100644
--- a/core/themes/seven/css/components/tabs.css
+++ b/core/themes/seven/css/components/tabs.css
@@ -68,7 +68,7 @@ li.tabs__tab a {
   margin: 16px 0 0;
   margin: 1rem 0 0;
 }
-.tabs.primary .tabs__tab.active {
+.tabs.primary .tabs__tab.is-active {
   z-index: 15;
   border-color: #a6a6a6;
   border-radius: 4px 0 0 0;
@@ -83,7 +83,7 @@ li.tabs__tab a {
   background-color: #fafaf7;
   text-decoration: underline;
 }
-.tabs.primary .active a:focus {
+.tabs.primary .is-active a:focus {
   background: none;
   text-decoration: underline;
 }
@@ -96,7 +96,7 @@ li.tabs__tab a {
   [dir="rtl"] .tabs.primary a {
     background: url(../../../../misc/icons/0074bd/chevron-left.svg) 1% center no-repeat;
   }
-  .tabs.primary .tabs__tab.active a {
+  .tabs.primary .tabs__tab.is-active a {
     background-image: none;
   }
 }
@@ -141,21 +141,21 @@ li.tabs__tab a {
   padding-bottom:16px;
   padding-bottom: 1rem;
 }
-.is-collapse-enabled .tabs__tab.active {
+.is-collapse-enabled .tabs__tab.is-active {
   position: absolute;
   top: 2px;
   left: 0;
   width: 75%;
   border-bottom: 0;
 }
-[dir="rtl"] .is-collapse-enabled .tabs__tab.active {
+[dir="rtl"] .is-collapse-enabled .tabs__tab.is-active {
   left: auto;
   right: 0;
 }
-.is-collapse-enabled .tabs.primary a.active:before {
+.is-collapse-enabled .tabs.primary a.is-active:before {
   content: none;
 }
-.is-open .tabs__tab.active {
+.is-open .tabs__tab.is-active {
   border-color: #a6a6a6;
   background-color: #ffffff;
   color: #004f80;
@@ -196,9 +196,9 @@ li.tabs__tab a {
 }
 
 /* Override the states above */
-.is-horizontal .tabs__tab.active,
-.is-horizontal .tabs.primary .tabs__tab.active,
-[dir="rtl"] .is-horizontal .tabs.primary .tabs__tab.active {
+.is-horizontal .tabs__tab.is-active,
+.is-horizontal .tabs.primary .tabs__tab.is-active,
+[dir="rtl"] .is-horizontal .tabs.primary .tabs__tab.is-active {
   border-radius: 4px 4px 0 0;
   position: relative;
   width: auto;
@@ -206,7 +206,7 @@ li.tabs__tab a {
   border-bottom: 0;
   margin: 0 -4px;
 }
-[dir="rtl"] .is-horizontal .tabs__tab.active {
+[dir="rtl"] .is-horizontal .tabs__tab.is-active {
   margin: 0 -6px;
 }
 .is-horizontal .tabs.primary a {
@@ -234,7 +234,7 @@ li.tabs__tab a {
 .tabs.secondary .tabs__tab + .tabs__tab {
   border-top: 1px solid #d9d8d4;
 }
-.tabs.secondary .tabs__tab.active {
+.tabs.secondary .tabs__tab.is-active {
   color: #004f80;
   border-left: 2px solid #004f80;
   padding-left: 15px;
@@ -250,7 +250,7 @@ li.tabs__tab a {
   padding: 7px 13px 5px;
   text-decoration: none;
 }
-.tabs.secondary .active a {
+.tabs.secondary .is-active a {
   color: #004f80;
 }
 .tabs.secondary a:focus {
@@ -272,7 +272,7 @@ li.tabs__tab a {
   border-top: 0;
   padding: 0;
 }
-.is-horizontal .tabs.secondary .tabs__tab.active {
+.is-horizontal .tabs.secondary .tabs__tab.is-active {
   border-bottom-color: #004f80;
 }
 .is-horizontal .tabs.secondary .tabs__tab:hover,
diff --git a/core/themes/seven/css/components/views-ui.css b/core/themes/seven/css/components/views-ui.css
index a4559ae..75cba46 100644
--- a/core/themes/seven/css/components/views-ui.css
+++ b/core/themes/seven/css/components/views-ui.css
@@ -100,8 +100,8 @@ details.fieldset-no-legend {
 }
 
 .views-displays ul.secondary li a,
-.views-displays ul.secondary li.active a,
-.views-displays ul.secondary li.active a.active {
+.views-displays ul.secondary li.is-active a,
+.views-displays ul.secondary li.is-active a.is-active {
   padding: 2px 7px 3px;
 }
 
@@ -109,8 +109,8 @@ details.fieldset-no-legend {
   color: #0074bd;
 }
 
-.views-displays ul.secondary li.active a,
-.views-displays ul.secondary li.active a.active {
+.views-displays ul.secondary li.is-active a,
+.views-displays ul.secondary li.is-active a.is-active {
   border: 1px solid transparent;
 }
 
diff --git a/core/themes/seven/css/theme/maintenance-page.css b/core/themes/seven/css/theme/maintenance-page.css
index 80b18f9..bf0a508 100644
--- a/core/themes/seven/css/theme/maintenance-page.css
+++ b/core/themes/seven/css/theme/maintenance-page.css
@@ -68,12 +68,12 @@
   [dir="rtl"] .task-list li {
     padding: 0.5em 3.85em 0.5em 1em;
   }
-  .task-list .active {
+  .task-list .is-active {
     background: #ebeae4;
     position: relative;
     font-weight: normal;
   }
-  .task-list .active:after {
+  .task-list .is-active:after {
     left: 100%; /* LTR */
     border: solid transparent;
     border-color: rgba(235, 234, 228, 0);
@@ -87,7 +87,7 @@
     top: 50%;
     margin-top: -1.32em;
   }
-  [dir="rtl"] .task-list .active:after {
+  [dir="rtl"] .task-list .is-active:after {
     left: auto;
     right: 100%;
     border-left-color: transparent;
diff --git a/core/themes/seven/js/mobile.install.js b/core/themes/seven/js/mobile.install.js
index 7830720..43196cb 100644
--- a/core/themes/seven/js/mobile.install.js
+++ b/core/themes/seven/js/mobile.install.js
@@ -4,7 +4,7 @@
 
   function findActiveStep(steps) {
     for (var i = 0; i < steps.length; i++) {
-      if (steps[i].className === 'active') {
+      if (steps[i].className === 'is-active') {
         return i + 1;
       }
     }
