diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/build.jsx wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/build.jsx
index f1af419b9..5db507cb7 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/build.jsx
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/build.jsx
@@ -31,4 +31,9 @@ if ( images.length > 0 ) {
 	);
 
 	container.replaceChild( temp.querySelector( '#screenshots' ), document.getElementById( 'screenshots' ) );
+
+	// On page load, we want to show or hide <Screenshots /> after it is rendered, based on the #hash in url.
+	if ( typeof window.showUrlHashTargetTab === 'function' ) {
+		window.showUrlHashTargetTab();
+	}
 }
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/plugin/sections/screenshots/index.jsx wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/plugin/sections/screenshots/index.jsx
index 3d1cda1cc..e2b40ca55 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/plugin/sections/screenshots/index.jsx
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/plugin/sections/screenshots/index.jsx
@@ -21,7 +21,7 @@ export const Screenshots = ( { screenshots } ) => {
 
 	if ( items ) {
 		return (
-			<div id="screenshots" className="plugin-screenshots">
+			<div id="screenshots" className="plugin-screenshots tabcontent">
 				<h2>{ localeData.screenshots }</h2>
 				<ImageGallery items={ items } />
 			</div>
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/plugin/style.scss wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/plugin/style.scss
index cf0ce66ec..2e0606345 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/plugin/style.scss
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/plugin/style.scss
@@ -40,52 +40,45 @@
 		padding-top: 0;
 	}
 
-	.tabs {
-		list-style: none;
-		margin:0;
+	.tab {
+
+		display: flex;
+		flex-wrap: wrap;
+		margin: 0;
 		border-bottom: 2px solid #eee;
 
-		li {
-			display: inline-block;
-			margin-bottom: -2px;
-			border: 2px solid transparent;
+		button, a {
+			cursor: pointer;
+			padding: 8px 22px;
 			font-size: 0.8rem;
-			color: #0073aa;
-			transition: background .2s ease;
+			border: 0;
+			margin: 4px;		
+		}
 
-			a {
-				border: 0;
-				display: block;
-				padding: 0.64rem 1.25rem;
-				background: white;
-				text-decoration: none;
+		button {
+			color: #0073aa;
 
-				&.active, &:hover {
-					background: #eee;
-				}
+			&:hover {
+				background-color: #ddd;
 			}
 
 			&.active, &:hover {
-				padding-bottom: 0 !important;
-				border: 2px solid #eee;
+				border-top: 2px solid #eee;
+				border-left: 2px solid #eee;
+				border-right: 2px solid #eee;
+				background: #fff;
+				margin: -2px 2px;
+				padding-bottom: 10px;
 			}
 		}
+	}
 
-		@media screen and (max-width:34em) {
-			border-top: 2px solid #eee;
-
-			li {
-				display: block;
-				border: none;
-				border-bottom: 1px solid #eee;
-				margin-bottom: 1px;
 
-				&.active, &:hover {
-					border: none;
-					border-bottom: 1px solid #eee;
-				}
-			}
-		}
+	.tabcontent {
+		display: none;
+		padding: 6px 12px;
+		border: 1px solid #ccc;
+		border-top: none;
 	}
 
 	.entry-content {
@@ -99,7 +92,6 @@
 		}
 
 		> div {
-			display:none;
 			border: 0;
 
 			~ button {
@@ -125,53 +117,6 @@
 		padding: 0 ms( 4 );
 	}
 
-	span#description,
-	span#reviews,
-	span#developers,
-	span#installation {
-		position:fixed;
-	}
-
-	span#reviews:not(:target) ~ span#installation:not(:target) ~ span#developers:not(:target) ~ .tabs li#tablink-description ,
-	span#reviews:target ~ .tabs li#tablink-reviews,
-	span#installation:target ~ .tabs li#tablink-installation,
-	span#developers:target ~ .tabs li#tablink-developers  {
-		border-top: 2px solid #eee;
-		border-left: 2px solid #eee;
-		border-right: 2px solid #eee;
-		border-bottom: 0;
-		padding-bottom: 2px;
-		background: #fff;
-	}
-
-	span#reviews:not(:target) ~ span#installation:not(:target) ~ span#developers:not(:target) ~ .entry-content #tab-description,
-	span#reviews:not(:target) ~ span#installation:not(:target) ~ span#developers:not(:target) ~ .entry-content #screenshots,
-	span#reviews:not(:target) ~ span#installation:not(:target) ~ span#developers:not(:target) ~ .entry-content #faq,
-	span#reviews:not(:target) ~ span#installation:not(:target) ~ span#developers:not(:target) ~ .entry-content #blocks,
-	span#reviews:not(:target) ~ span#installation:not(:target) ~ span#developers:not(:target) ~ .entry-content #tab-developers,
-	span#reviews:not(:target) ~ span#installation:not(:target) ~ span#developers:not(:target) ~ .entry-content #tab-developers ~ button,
-	span#reviews:target ~ .entry-content #tab-reviews,
-	span#installation:target ~ .entry-content #tab-installation,
-	span#developers:target ~ .entry-content #tab-changelog,
-	span#developers:target ~ .entry-content #tab-developers,
-	span#developers:target ~ .entry-content #tab-developers ~ button,
-	span#developers:target ~ .entry-content #tab-developers .plugin-development {
-		display:block;
-	}
-
-	span#reviews:not(:target) ~ span#installation:not(:target) ~ span#developers:not(:target) ~ .entry-content #tab-developers .plugin-development,
-	span#developers:target ~ .entry-content #tab-developers .plugin-contributors {
-		display:none;
-	}
-
-	span#reviews:not(:target) ~ span#installation:not(:target) ~ span#developers:not(:target) ~ .entry-meta .plugin-contributors,
-	span#reviews:target ~ .entry-meta .plugin-meta,
-	span#reviews:target ~ .entry-meta .plugin-support,
-	span#reviews:target ~ .entry-meta .plugin-donate,
-	span#reviews:target ~ .entry-meta .plugin-contributors,
-	span#installation:target ~ .entry-meta .plugin-contributors {
-		display:none;
-	}
 
 	@media screen and ( min-width: $ms-breakpoint ) {
 		.plugin-header,
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php
index 3d18e8fa8..ec6537c81 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php
@@ -84,6 +84,7 @@ function scripts() {
 	if ( is_singular( 'plugin' ) ) {
 		wp_enqueue_script( 'wporg-plugins-popover', get_stylesheet_directory_uri() . '/js/popover.js', array( 'jquery' ), '20171002', true );
 		wp_enqueue_script( 'wporg-plugins-faq', get_stylesheet_directory_uri() . '/js/section-faq.js', array( 'jquery' ), '20180131', true );
+		wp_enqueue_script( 'wporg-plugins-tabs', get_stylesheet_directory_uri() . '/js/tabs.js', array(), '20190501', true );
 	}
 
 	if ( ! is_404() ) {
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/js/tabs.js wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/js/tabs.js
new file mode 100644
index 000000000..19449548c
--- /dev/null
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/js/tabs.js
@@ -0,0 +1,64 @@
+/* eslint-disable no-var */
+
+( function() {
+	window.openTab = function( tabButton, tabs, widgets ) {
+		var main = document.getElementById( 'main' );
+
+		var tabcontents = main.getElementsByClassName( 'tabcontent' );
+		for ( var i = 0; i < tabcontents.length; i++ ) {
+			tabcontents[ i ].style.display = 'none';
+		}
+
+		var widgetElements = main.querySelectorAll( '.entry-meta .widget' );
+		for ( var j = 0; j < widgetElements.length; j++ ) {
+			widgetElements[ j ].style.display = 'none';
+		}
+
+		var tablinks = main.getElementsByClassName( 'tablinks' );
+		for ( var k = 0; k < tablinks.length; k++ ) {
+			tablinks[ k ].className = tablinks[ k ].className.replace( ' active', '' );
+			tablinks[ k ].setAttribute( 'aria-selected', 'false' );
+		}
+
+		var tabButtonElement = document.getElementById( tabButton );
+		tabButtonElement.className += ' active';
+		tabButtonElement.setAttribute( 'aria-selected', 'true' );
+
+		for ( var l = 0; l < tabs.length; l++ ) {
+			var tab = document.getElementById( tabs[ l ] );
+			if ( tab ) {
+				tab.style.display = 'block';
+			}
+		}
+
+		for ( var m = 0; m < widgets.length; m++ ) {
+			main.querySelectorAll( '.entry-meta .widget.' + widgets[ m ] )[ 0 ].style.display = 'block';
+		}
+	};
+
+	window.showUrlHashTargetTab = function() {
+		var targetTab = window.location.hash.substr( 1 );
+
+		if ( targetTab === 'reviews' ) {
+			window.openTab(
+				'tab-button-reviews',
+				[ 'tab-reviews' ],
+				[ 'plugin-ratings' ] );
+		} else if ( targetTab === 'installation' ) {
+			window.openTab(
+				'tab-button-installation',
+				[ 'tab-installation' ],
+				[ 'plugin-meta', 'plugin-ratings', 'plugin-support' ] );
+		} else if ( targetTab === 'developers' ) {
+			window.openTab(
+				'tab-button-developers',
+				[ 'tab-developers', 'tab-changelog' ],
+				[ 'plugin-meta', 'plugin-ratings', 'plugin-support' ] );
+		} else {
+			window.openTab(
+				'tab-button-description',
+				[ 'tab-description', 'screenshots', 'faq' ],
+				[ 'plugin-meta', 'plugin-ratings', 'plugin-support' ] );
+		}
+	};
+} )();
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php
index 9b4e3ef42..258894623 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php
@@ -51,24 +51,48 @@ $plugin_title = $is_closed ? $post->post_name : get_the_title();
 	</header><!-- .entry-header -->
 
 	<?php if ( ! get_query_var( 'plugin_advanced' ) ) : ?>
-		<script type="text/javascript">if ( '#changelog' == window.location.hash ) { window.location.hash = '#developers'; }</script>
-		<span id="description"></span>
-		<span id="reviews"></span>
-		<span id="installation"></span>
-		<span id="developers"></span>
-		<ul class="tabs clear">
-			<li id="tablink-description"><a href="#description"><?php esc_html_e( 'Details', 'wporg-plugins' ); ?></a></li>
-			<li id="tablink-reviews"><a href="#reviews"><?php esc_html_e( 'Reviews', 'wporg-plugins' ); ?></a></li>
+		<div class="tab" role="tablist">
+			<button 
+				id="tab-button-description"
+				class="tablinks"
+				onclick="openTab('tab-button-description', ['tab-description', 'screenshots', 'faq'], ['plugin-meta', 'plugin-ratings', 'plugin-support'])"
+				role="tab"
+				aria-controls="tab-description"
+			>
+				<?php esc_html_e( 'Details', 'wporg-plugins' ); ?>
+			</button>
+			<button 
+				id="tab-button-reviews"
+				class="tablinks"
+				onclick="openTab('tab-button-reviews', ['tab-reviews'], ['plugin-ratings'])"
+				role="tab"
+				aria-controls="tab-reviews"
+			>
+				<?php esc_html_e( 'Reviews', 'wporg-plugins' ); ?>
+			</button>
 			<?php if ( isset( $content['installation'] ) && ! $is_closed ) : ?>
-				<li id="tablink-installation">
-					<a href="#installation"><?php esc_html_e( 'Installation', 'wporg-plugins' ); ?></a>
-				</li>
+				<button 
+					id="tab-button-installation"
+					class="tablinks"
+					onclick="openTab('tab-button-installation', ['tab-installation'], ['plugin-meta', 'plugin-ratings', 'plugin-support'])"
+					role="tab"
+					aria-controls="tab-installation"
+				>
+					<?php esc_html_e( 'Installation', 'wporg-plugins' ); ?>
+				</button>
 			<?php endif; ?>
-			<li id="tablink-support">
-				<a href="<?php echo esc_url( Template::get_support_url() ); ?>"><?php esc_html_e( 'Support', 'wporg-plugins' ); ?></a>
-			</li>
-			<li id="tablink-developers"><a href="#developers"><?php esc_html_e( 'Development', 'wporg-plugins' ); ?></a></li>
-		</ul>
+			<button 
+				id="tab-button-developers"
+				class="tablinks"
+				onclick="openTab('tab-button-developers', ['tab-developers', 'tab-changelog'], ['plugin-meta', 'plugin-ratings', 'plugin-support'])"
+				role="tab"
+				aria-controls="tab-developers"
+			>
+				<?php esc_html_e( 'Development', 'wporg-plugins' ); ?>
+			</button>
+			<a href="<?php echo esc_url( Template::get_support_url() ); ?>"><?php esc_html_e( 'Support', 'wporg-plugins' ); ?></a>
+		</div>
+		<script type="text/javascript">if ( '#changelog' == window.location.hash ) { window.location.hash = '#developers'; }</script>
 	<?php endif; ?>
 
 	<div class="entry-content">
@@ -112,13 +136,13 @@ $plugin_title = $is_closed ? $post->post_name : get_the_title();
 
 	<div class="entry-meta">
 		<?php
-			if ( get_query_var( 'plugin_advanced' ) && ( ! $is_closed || current_user_can( 'plugin_admin_view', $post ) ) ) {
-				get_template_part( 'template-parts/plugin-sidebar', 'advanced' );
-			} elseif ( $is_closed ) {
-				get_template_part( 'template-parts/plugin-sidebar', 'closed' );
-			} else {
-				get_template_part( 'template-parts/plugin-sidebar' );
-			}
+		if ( get_query_var( 'plugin_advanced' ) && ( ! $is_closed || current_user_can( 'plugin_admin_view', $post ) ) ) {
+			get_template_part( 'template-parts/plugin-sidebar', 'advanced' );
+		} elseif ( $is_closed ) {
+			get_template_part( 'template-parts/plugin-sidebar', 'closed' );
+		} else {
+			get_template_part( 'template-parts/plugin-sidebar' );
+		}
 		?>
 	</div><!-- .entry-meta -->
 </article><!-- #post-## -->
diff --git wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/section.php wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/section.php
index 2961d2470..9c930eaa7 100644
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/section.php
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/section.php
@@ -11,11 +11,11 @@ global $section, $section_slug, $section_content;
 
 $prefix = in_array( $section_slug, array( 'screenshots', 'faq' ), true ) ? '' : 'tab-';
 
-$classes = [ 'plugin-' . $section_slug, 'section' ];
+$classes = [ 'plugin-' . $section_slug, 'section', 'tabcontent' ];
 $classes = implode( ' ', $classes );
 ?>
 
-<div id="<?php echo esc_attr( $prefix . $section_slug ); ?>" class="<?php echo esc_attr( $classes ); ?>">
+<div id="<?php echo esc_attr( $prefix . $section_slug ); ?>" role="tabpanel" aria-labelled-by="<?php echo esc_attr( 'tab-button-' . $section_slug ); ?>" class="<?php echo esc_attr( $classes ); ?>">
 	<h2 id="<?php echo esc_attr( $section_slug . '-header' ); ?>"><?php echo esc_html( $section['title'] ); ?></h2>
 	<?php echo $section_content; ?>
 </div>
