This commit is contained in:
Alexander Agnarson 2020-08-17 12:30:39 +02:00
parent b51191b2c6
commit ad29debb83
11 changed files with 969 additions and 397 deletions

154
dark.css
View file

@ -88,85 +88,6 @@ a:hover,
background: -webkit-linear-gradient(top, rgba(26,26,26,1) 0%,rgba(0,0,0,0) 100%);
background: linear-gradient(to bottom, rgba(26,26,26,1) 0%,rgba(0,0,0,0) 100%); }
/* header : nav mobile
/* ------------------------------------ */
#nav-mobile.nav-container { background: #222; border-top: 1px solid rgba(255,255,255,0.05); border-bottom: 1px solid rgba(255,255,255,0.05); }
#nav-mobile .nav-toggle { background: transparent; color: #fff; }
#nav-mobile .nav-text { color: #999; }
@media only screen and (max-width: 719px) {
#nav-mobile .nav-wrap { background: #222; }
#nav-mobile .nav li a { color: #999; border-bottom: 1px solid #292929; }
#nav-mobile .nav li > a:hover,
#nav-mobile .nav li.current_page_item > a,
#nav-mobile .nav li.current-menu-item > a,
#nav-mobile .nav li.current-post-parent > a { background: transparent; }
}
/* header : nav header
/* ------------------------------------ */
#nav-header.nav-container { background: #222; border-top: 1px solid rgba(255,255,255,0.05); border-bottom: 1px solid rgba(255,255,255,0.05); }
.sticky-element-sticky #nav-header.nav-container:after { background: linear-gradient(to bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 100%); }
#nav-header .nav-toggle { color: #fff; }
#nav-header .nav-text { color: #999; }
@media only screen and (min-width: 720px) {
#nav-header .nav li a { color: rgba(255,255,255,0.5); }
#nav-header .nav > li > a:hover,
#nav-header .nav > li:hover > a { color: rgba(255,255,255,0.9); }
#nav-header .nav li > a:hover,
#nav-header .nav li:hover > a { color: rgba(255,255,255,0.9); }
#nav-header .nav li.current_page_item > a,
#nav-header .nav li.current-menu-item > a,
#nav-header .nav li.current-menu-ancestor > a,
#nav-header .nav li.current-post-parent > a { color: rgba(255,255,255,0.9); }
#nav-header .nav ul { background: #222; }
#nav-header .nav ul li { border-bottom: 1px solid rgba(255,255,255,0.03); }
}
@media only screen and (max-width: 719px) {
#nav-header .nav-wrap { background: #222; }
#nav-header .nav li a { color: #999; border-bottom: 1px solid #292929; }
#nav-header .nav li > a:hover,
#nav-header .nav li.current_page_item > a,
#nav-header .nav li.current-menu-item > a,
#nav-header .nav li.current-post-parent > a { background: transparent; }
}
/* footer : nav
/* ------------------------------------ */
#nav-footer.nav-container { background: #1a1a1a; border-bottom: 1px solid #222; }
#nav-footer .nav-toggle { color: rgba(255,255,255,0.9); }
#nav-footer .nav-text { color: #666; }
@media only screen and (min-width: 720px) {
#nav-footer .nav li a { color: #777; }
#nav-footer .nav li > a:hover,
#nav-footer .nav li:hover > a,
#nav-footer .nav li.current_page_item > a,
#nav-footer .nav li.current-menu-item > a,
#nav-footer .nav li.current-menu-ancestor > a,
#nav-footer .nav li.current-post-parent > a { color: rgba(255,255,255,0.9); }
#nav-footer .nav ul { background: #222; }
#nav-footer .nav ul:before { border-top: 8px solid #222; }
#nav-footer .nav ul li { border-bottom: 1px solid #292929; }
}
@media only screen and (max-width: 719px) {
#nav-footer .nav li a { color: #999; border-top: 1px solid #222; }
#nav-footer .nav li > a:hover { background: #1a1a1a; color: #fff; }
#nav-footer .nav li.current_page_item > a,
#nav-footer .nav li.current-menu-item > a,
#nav-footer .nav li.current-post-parent > a { background: #1a1a1a; color: #fff; }
}
.page-title,
.pad-top,
.sidebar .widget { border-color: rgba(255,255,255,0.05); }
@ -268,4 +189,77 @@ hr { background: #333; }
.child-menu > li > ul > li > a { border-bottom: 1px solid #2d2d2d; border-left: 1px solid #2d2d2d; border-right: 1px solid #2d2d2d; }
.child-menu > li ul ul { border-left: 10px solid #2d2d2d; border-right: 1px solid #2d2d2d; border-bottom: 1px solid #2d2d2d; }
.child-menu > li ul ul a:hover,
.child-menu > li ul ul li.current_page_item > a { background: #2d2d2d; }
.child-menu > li ul ul li.current_page_item > a { background: #2d2d2d; }
/* menu header styling */
#header .nav-menu:not(.mobile) { background: #222; border-bottom: 1px solid rgba(255,255,255,0.05); }
#header .nav-menu:not(.mobile) { border-top-color: rgba(255,255,255,0.05); }
#header .nav-menu:not(.mobile) li.current_page_item > span > a,
#header .nav-menu:not(.mobile) li.current-menu-item > span > a,
#header .nav-menu:not(.mobile) li.current-menu-ancestor > span > a,
#header .nav-menu:not(.mobile) li.current-post-parent > span > a { color: #fff; }
#header .nav-menu:not(.mobile) ul ul li.current_page_item > span > a,
#header .nav-menu:not(.mobile) ul ul li.current-menu-item > span > a,
#header .nav-menu:not(.mobile) ul ul li.current-menu-ancestor > span > a,
#header .nav-menu:not(.mobile) ul ul li.current-post-parent > span > a { color: #fff; }
#header .nav-menu:not(.mobile) button.active { background: rgba(255,255,255,0.1); color: rgba(255,255,255,0.5); }
#header .nav-menu:not(.mobile) button .svg-icon { fill: rgba(255,255,255,0.3); }
#header .nav-menu:not(.mobile) a { color: rgba(255,255,255,0.6); }
#header .nav-menu:not(.mobile) a:hover { color: #fff; }
#header .nav-menu:not(.mobile) ul ul > li:hover > span { background: transparent; }
#header .nav-menu:not(.mobile) .menu ul { background: #222; box-shadow: 0 2px 2px rgba(0,0,0,0.15); color: #666; }
#header .nav-menu:not(.mobile) .menu ul:after { border-bottom-color: transparent; }
#header .nav-menu:not(.mobile) .menu ul ul:after { border-bottom-color: transparent; }
#header .nav-menu:not(.mobile) .menu ul ul:after { border-right-color: #222; }
#header .nav-menu-dropdown-left .nav-menu:not(.mobile) .menu ul ul:after { border-left-color: #fff; }
#header .nav-menu:not(.mobile) .menu ul a { font-size: 13px; color: rgba(255,255,255,0.7); }
#header .nav-menu:not(.mobile) .menu ul span { border-bottom: 1px solid rgb(255,255,255,0.04); }
#header .nav-menu:not(.mobile) .menu ul li:last-child a { border-bottom: 0; }
#header .nav-menu:not(.mobile) ul ul a { transition: all 0.3s ease; }
#header .nav-menu:not(.mobile) ul ul a:hover { background: transparent; color: #fff; }
#header .nav-menu:not(.mobile) ul ul button.active { background: rgba(255,255,255,0.1); color: rgba(255,255,255,0.5); }
#header .menu-toggle-icon span { background: #fff; }
#header .nav-menu.mobile { background: transparent; border-top: none; position: relative; z-index: 3; border-top: 1px solid rgba(255,255,255,0.06); border-bottom: 1px solid rgba(255,255,255,0.1); }
#header .nav-menu.mobile .svg-icon { fill: #fff; }
#header .nav-menu.mobile button.active .svg-icon { fill: #fff; }
#header .nav-menu.mobile ul ul { background: rgba(0,0,0,0.05); }
#header .nav-menu.mobile ul li .menu-item-wrapper,
#header .nav-menu.mobile ul ul li .menu-item-wrapper { border-bottom: 1px solid rgba(255,255,255,0.07); }
#header .nav-menu.mobile > div > ul > li:first-child .menu-item-wrapper { border-top: 1px solid rgba(255,255,255,0.07); }
#header .nav-menu.mobile ul li a { color: #fff; }
#header .nav-menu.mobile ul button,
#header .nav-menu.mobile ul ul button { border-left: 1px solid rgba(255,255,255,0.07); }
/* menu footer styling */
#footer .menu-toggle-icon span { background: #fff; }
#footer .nav-menu:not(.mobile) { background: transparent; border-bottom: 1px solid rgba(255,255,255,0.04); }
#footer .nav-menu:not(.mobile) a { color: rgba(255,255,255,0.5); }
#footer .nav-menu:not(.mobile) a:hover { color: #fff; }
#footer .nav-menu:not(.mobile) .menu ul { background: #222; box-shadow: 0 4px 10px rgba(0,0,0,0.06); }
#footer .nav-menu:not(.mobile) .menu ul span { border-bottom: 1px solid rgba(255,255,255,0.04); }
#footer .nav-menu:not(.mobile) .menu ul:after { border-bottom-color: transparent; border-top-color: #222; }
#footer .nav-menu:not(.mobile) .menu ul ul:after { border-right-color: #222; border-top-color: transparent; }
#footer .nav-menu:not(.mobile) li.current_page_item > span > a,
#footer .nav-menu:not(.mobile) li.current-menu-item > span > a,
#footer .nav-menu:not(.mobile) li.current-menu-ancestor > span > a,
#footer .nav-menu:not(.mobile) li.current-post-parent > span > a { color: #fff; }
#footer .nav-menu:not(.mobile) button .svg-icon { fill: rgba(255,255,255,0.3); }
#footer .nav-menu:not(.mobile) button.active { background: rgba(255,255,255,0.1); }
#footer .nav-menu:not(.mobile) ul ul > li:hover > span { background: none; }
#footer .nav-menu.mobile { border-bottom: 1px solid rgba(255,255,255,0.05); }
#footer .nav-menu.mobile .svg-icon { fill: #fff; }
#footer .nav-menu.mobile button.active .svg-icon { fill: #fff; }
#footer .nav-menu.mobile ul ul { background: rgba(255,255,255,0.03); }
#footer .nav-menu.mobile ul li .menu-item-wrapper,
#footer .nav-menu.mobile ul ul li .menu-item-wrapper { border-bottom: 1px solid rgba(255,255,255,0.07); }
#footer .nav-menu.mobile > div > ul > li:first-child .menu-item-wrapper { border-top: 1px solid rgba(255,255,255,0.07); }
#footer .nav-menu.mobile ul li a { color: #fff; }
#footer .nav-menu.mobile ul button,
#footer .nav-menu.mobile ul ul button { border-left: 1px solid rgba(255,255,255,0.07); }

View file

@ -41,12 +41,8 @@
</div><!--/#footer-widgets-->
<?php } ?>
<?php if ( has_nav_menu( 'footer' ) ): ?>
<nav class="nav-container group" id="nav-footer">
<div class="nav-toggle"><i class="fas fa-bars"></i></div>
<div class="nav-text"><!-- put your mobile menu text here --></div>
<div class="nav-wrap"><?php wp_nav_menu( array('theme_location'=>'footer','menu_class'=>'nav container group','container'=>'','menu_id'=>'','fallback_cb'=>false) ); ?></div>
</nav><!--/#nav-footer-->
<?php if ( has_nav_menu('footer') ): ?>
<?php \AlxMedia\Nav::nav_menu(array('theme_location'=>'footer','menu_id' => 'nav-footer','fallback_cb'=> false)); ?>
<?php endif; ?>
<div id="footer-bottom">

View file

@ -88,6 +88,19 @@ if ( ! function_exists( 'boxstyle_setup' ) ) {
add_action( 'after_setup_theme', 'boxstyle_setup' );
/* Custom navigation
/* ------------------------------------ */
require_once 'functions/nav.php';
$nav = new \AlxMedia\Nav();
$nav->enqueue(
[
'script' => 'js/nav.js',
'inline' => false,
]
);
$nav->init();
/* Custom logo
/* ------------------------------------ */
if ( ! function_exists( 'boxstyle_custom_logo' ) ) {

View file

@ -109,10 +109,6 @@ if ( ! function_exists( 'boxstyle_dynamic_css' ) ) {
a,
.themeform label .required,
#nav-mobile .nav li > a:hover,
#nav-mobile .nav li.current_page_item > a,
#nav-mobile .nav li.current-menu-item > a,
#nav-mobile .nav li.current-post-parent > a,
.post-hover:hover .post-title a,
.post-title a:hover,
.post-nav li a:hover span,
@ -155,18 +151,10 @@ a,
.wp-pagenavi a:active,
.wp-pagenavi span.current { border-bottom-color: '.esc_attr( get_theme_mod('color-1') ).'; }
@media only screen and (min-width: 720px) {
#nav-header .nav li.current_page_item > a,
#nav-header .nav li.current-menu-item > a,
#nav-header .nav li.current-menu-ancestor > a,
#nav-header .nav li.current-post-parent > a { border-bottom-color: '.esc_attr( get_theme_mod('color-1') ).'; }
}
@media only screen and (max-width: 719px) {
#nav-header .nav li > a:hover,
#nav-header .nav li.current_page_item > a,
#nav-header .nav li.current-menu-item > a,
#nav-header .nav li.current-post-parent > a { color: '.esc_attr( get_theme_mod('color-1') ).'; }
}
#header .nav-menu:not(.mobile) > div > ul > li.current_page_item > span,
#header .nav-menu:not(.mobile) > div > ul > li.current-menu-item > span,
#header .nav-menu:not(.mobile) > div > ul > li.current-menu-ancestor > span,
#header .nav-menu:not(.mobile) > div > ul > li.current-post-parent > span { border-color: '.esc_attr( get_theme_mod('color-1') ).'; }
'."\n";
}
// background color

305
functions/nav.php Normal file
View file

@ -0,0 +1,305 @@
<?php // phpcs:ignore WordPress.Files.FileName.NotHyphenatedLowercase
/**
* An accessible and mobile-friendly implementation for navigation menus.
*/
namespace AlxMedia;
/**
* Object containing all methods and hooks to modify default menus.
*/
class Nav {
/**
* Whether the script has already been enqueued or not.
*
* @static
*
* @access protected
*
* @var bool
*/
protected static $enqueued = false;
/**
* Whether we added scripts & styles inline or not.
*
* @access protected
*
* @var bool
*/
protected $inline = false;
/**
* An array containing URLs for our assets.
*
* @access protected
*
* @var array
*/
protected $assets = [];
/**
* Prefix for asset handles.
*
* @access protected
*
* @var string
*/
protected $handle_prefix = 'alexmedia-nav';
/**
* Init.
*
* @access public
*
* @return void
*/
public function init() {
add_filter( 'walker_nav_menu_start_el', [ $this, 'add_nav_sub_menu_buttons' ], 10, 4 );
add_filter( 'nav_menu_item_title', [ $this, 'nav_menu_item_title' ], 10, 4 );
}
/**
* Enqueue assets.
*
* @access public
*
* @param array $args The arguments [script=>URL,style=>URL,inline=>true|false].
*
* @return void
*/
public function enqueue( $args = false ) {
if ( ! $args ) {
return;
}
// Early exit if we've already enqueued our assets.
if ( self::$enqueued ) {
return;
}
$args = wp_parse_args(
$args,
[
'script' => false,
'style' => false,
'inline' => false,
]
);
$this->assets['script'] = $args['script'];
$this->assets['style'] = $args['style'];
$this->inline = $args['inline'];
if ( $this->inline ) {
add_action( 'wp_footer', [ $this, 'inline_assets' ] );
} else {
add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_assets' ] );
}
self::$enqueued = true;
}
/**
* Inline assets.
*
* @access public
*
* @return void
*/
public function inline_assets() {
if ( $this->assets['script'] ) {
echo '<script>';
include get_theme_file_path( $this->assets['script'] );
echo '</script>';
}
if ( $this->assets['style'] ) {
echo '<style>';
include get_theme_file_path( $this->assets['style'] );
echo '</style>';
}
}
/**
* Enqueue assets.
*
* @access public
*
* @return void
*/
public function enqueue_assets() {
if ( $this->assets['style'] ) {
wp_enqueue_style(
$this->handle_prefix . '-style',
get_theme_file_uri( $this->assets['style'] ),
[],
filemtime( get_theme_file_path( $this->assets['style'] ) )
);
}
if ( $this->assets['script'] ) {
wp_enqueue_script(
$this->handle_prefix . '-script',
get_theme_file_uri( $this->assets['script'] ),
[],
filemtime( get_theme_file_path( $this->assets['script'] ) ),
true
);
}
}
/**
* A wrapper for the wp_nav_menu function, adding our custom HTML for the expand/collapse button.
*
* @static
*
* @access public
*
* @param array $args The arguments to pass to wp_nav_menu().
* @param string|false $toggle_label The label for our toggle button.
* @param string $nav_classes CSS classes to add to the <nav> element.
* If left false then the default will be used.
* @return void
*/
public static function nav_menu( $args, $toggle_label = false, $nav_classes = 'main-navigation nav-menu' ) {
if ( false === $toggle_label ) {
$toggle_label = '<span class="screen-reader-text">' . esc_html__( 'Expand Menu', 'boxstyle' ) . '</span><div class="menu-toggle-icon"><span></span><span></span><span></span></div>';
}
?>
<nav id="<?php echo esc_attr( $args['menu_id'] ); ?>-nav" class="<?php echo esc_attr( $nav_classes ); ?>">
<button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false">
<?php
/**
* Note to code reviewers:
* The $toggle_label variable is hardcoded and there is no user input involved.
* There is no need to escape hardcoded strings, so we can ignore the PHPCS notices here.
*/
echo $toggle_label; // phpcs:ignore WordPress.Security.EscapeOutput
?>
</button>
<?php wp_nav_menu( $args ); ?>
</nav>
<?php
}
/**
* Filter the HTML output of a nav menu item to add the dropdown button that reveal the sub-menu.
*
* @access public
*
* @param string $item_output The menu item's starting HTML output.
* @param WP_Post $item Menu item data object.
* @param int $depth Depth of menu item. Used for padding.
* @param stdClass $args An object of wp_nav_menu() arguments.
*
* @return string Modified nav menu item HTML.
*/
public function add_nav_sub_menu_buttons( $item_output, $item, $depth, $args ) {
if ( ! $args->theme_location ) {
return $item_output;
}
$html = '<span class="menu-item-wrapper">';
// Skip when the item has no sub-menu.
if ( in_array( 'menu-item-has-children', $item->classes, true ) ) {
$html = '<span class="menu-item-wrapper has-arrow">';
$item_output .= '<button onClick="alxMediaMenu.toggleItem(this)"><span class="screen-reader-text">' . esc_html__( 'Toggle Child Menu', 'boxstyle' ) . '</span><svg class="svg-icon" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="14" height="8" viewBox="0 0 20 12"><polygon fill="" fill-rule="evenodd" points="1319.899 365.778 1327.678 358 1329.799 360.121 1319.899 370.021 1310 360.121 1312.121 358" transform="translate(-1310 -358)"></polygon></svg></button>';
}
$html .= $item_output;
$html .= '</span>';
return $html;
}
/**
* Filters a menu item's title.
*
* This is an accessibility improvement.
* Verbally highlights the current item for screen-readers.
*
* @access public
*
* @param string $title The menu item's title.
* @param WP_Post $item The current menu item.
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param int $depth Depth of menu item. Used for padding.
*
* @return string
*/
public function nav_menu_item_title( $title, $item, $args, $depth ) {
if ( ! $args->theme_location ) {
return $title;
}
// Classes that can be used to indicate the currently active menu item.
$is_current_classes = [
'current-menu-item',
'current_page_item',
];
// Classes that can be used to indicate the parent of a currently active menu item.
$is_current_parent_classes = [
'current-page-ancestor',
'current-menu-ancestor',
'current-menu-parent',
'current-page-parent',
'current_page_parent',
'current_page_ancestor',
];
// Figure out if this menu-item is the current one.
$is_current = false;
foreach ( $is_current_classes as $class ) {
if ( in_array( $class, $item->classes, true ) ) {
$is_current = true;
break;
}
}
// Figure out if this menu-item is a parent of the current one.
$is_current_parent = false;
if ( ! $is_current ) {
foreach ( $is_current_parent_classes as $class ) {
if ( in_array( $class, $item->classes, true ) ) {
$is_current_parent = true;
break;
}
}
}
// Change the title text for current items.
if ( $is_current ) {
/**
* Use sprintf() to allow LTR languages to reverse the order
* and put the title before the prefix.
*/
return sprintf(
/* Translators: %1$s: "Current Page:". %2$s: The menu-item title. */
__( '<span class="screen-reader-text">%1$s </span>%2$s', 'boxstyle' ),
esc_html__( 'Current Page:', 'boxstyle' ),
$title
);
}
// Change the title text for current item parents.
if ( $is_current_parent ) {
/**
* Use sprintf() to allow LTR languages to reverse the order
* and put the title before the prefix.
*/
return sprintf(
/* Translators: %1$s: "Current Page Parent:". %2$s: The menu-item title. */
__( '<span class="screen-reader-text">%1$s </span>%2$s', 'boxstyle' ),
esc_html__( 'Current Page Parent', 'boxstyle' ),
$title
);
}
return $title;
}
}

View file

@ -46,50 +46,42 @@
</div><!--/.group-->
<?php if ( has_nav_menu('mobile') ): ?>
<nav class="nav-container group" id="nav-mobile">
<div class="nav-toggle"><i class="fas fa-bars"></i></div>
<div class="nav-text"><!-- put your mobile menu text here --></div>
<div class="nav-wrap container"><?php wp_nav_menu(array('theme_location'=>'mobile','menu_class'=>'nav container-inner group','container'=>'','menu_id' => '','fallback_cb'=> false)); ?></div>
<div id="header-menu-mobile">
<?php \AlxMedia\Nav::nav_menu(array('theme_location'=>'mobile','menu_id' => 'nav-mobile','fallback_cb'=> false)); ?>
<?php if ( get_theme_mod( 'header-search', 'on' ) == 'on' ): ?>
<div class="container">
<div class="container-inner">
<div class="toggle-search"><i class="fas fa-search"></i></div>
<div class="search-expand">
<div class="search-expand-inner">
<?php get_search_form(); ?>
</div>
</div>
</div><!--/.container-inner-->
</div><!--/.container-->
<button class="toggle-search">
<svg class="svg-icon" id="svg-search" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 23 23"><path d="M38.710696,48.0601792 L43,52.3494831 L41.3494831,54 L37.0601792,49.710696 C35.2632422,51.1481185 32.9839107,52.0076499 30.5038249,52.0076499 C24.7027226,52.0076499 20,47.3049272 20,41.5038249 C20,35.7027226 24.7027226,31 30.5038249,31 C36.3049272,31 41.0076499,35.7027226 41.0076499,41.5038249 C41.0076499,43.9839107 40.1481185,46.2632422 38.710696,48.0601792 Z M36.3875844,47.1716785 C37.8030221,45.7026647 38.6734666,43.7048964 38.6734666,41.5038249 C38.6734666,36.9918565 35.0157934,33.3341833 30.5038249,33.3341833 C25.9918565,33.3341833 22.3341833,36.9918565 22.3341833,41.5038249 C22.3341833,46.0157934 25.9918565,49.6734666 30.5038249,49.6734666 C32.7048964,49.6734666 34.7026647,48.8030221 36.1716785,47.3875844 C36.2023931,47.347638 36.2360451,47.3092237 36.2726343,47.2726343 C36.3092237,47.2360451 36.347638,47.2023931 36.3875844,47.1716785 Z" transform="translate(-20 -31)"></path></svg>
<svg class="svg-icon" id="svg-close" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 16 16"><polygon fill="" fill-rule="evenodd" points="6.852 7.649 .399 1.195 1.445 .149 7.899 6.602 14.352 .149 15.399 1.195 8.945 7.649 15.399 14.102 14.352 15.149 7.899 8.695 1.445 15.149 .399 14.102"></polygon></svg>
</button>
<div class="search-expand">
<div class="search-expand-inner">
<?php get_search_form(); ?>
</div>
</div>
<?php endif; ?>
</nav><!--/#nav-mobile-->
</div>
<?php endif; ?>
<div id="header-sticky">
<?php if ( has_nav_menu('header') ): ?>
<nav class="nav-container group" id="nav-header">
<div class="nav-toggle"><i class="fas fa-bars"></i></div>
<div class="nav-text"><!-- put your mobile menu text here --></div>
<div class="nav-wrap container"><?php wp_nav_menu(array('theme_location'=>'header','menu_class'=>'nav container-inner group','container'=>'','menu_id' => '','fallback_cb'=> false)); ?></div>
<div id="header-menu-header">
<?php \AlxMedia\Nav::nav_menu(array('theme_location'=>'header','menu_id' => 'nav-header','fallback_cb'=> false)); ?>
<?php if ( get_theme_mod( 'header-search', 'on' ) == 'on' ): ?>
<div class="container">
<div class="container-inner">
<div class="toggle-search"><i class="fas fa-search"></i></div>
<div class="search-expand">
<div class="search-expand-inner">
<?php get_search_form(); ?>
</div>
</div>
</div><!--/.container-inner-->
</div><!--/.container-->
<button class="toggle-search">
<svg class="svg-icon" id="svg-search" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 23 23"><path d="M38.710696,48.0601792 L43,52.3494831 L41.3494831,54 L37.0601792,49.710696 C35.2632422,51.1481185 32.9839107,52.0076499 30.5038249,52.0076499 C24.7027226,52.0076499 20,47.3049272 20,41.5038249 C20,35.7027226 24.7027226,31 30.5038249,31 C36.3049272,31 41.0076499,35.7027226 41.0076499,41.5038249 C41.0076499,43.9839107 40.1481185,46.2632422 38.710696,48.0601792 Z M36.3875844,47.1716785 C37.8030221,45.7026647 38.6734666,43.7048964 38.6734666,41.5038249 C38.6734666,36.9918565 35.0157934,33.3341833 30.5038249,33.3341833 C25.9918565,33.3341833 22.3341833,36.9918565 22.3341833,41.5038249 C22.3341833,46.0157934 25.9918565,49.6734666 30.5038249,49.6734666 C32.7048964,49.6734666 34.7026647,48.8030221 36.1716785,47.3875844 C36.2023931,47.347638 36.2360451,47.3092237 36.2726343,47.2726343 C36.3092237,47.2360451 36.347638,47.2023931 36.3875844,47.1716785 Z" transform="translate(-20 -31)"></path></svg>
<svg class="svg-icon" id="svg-close" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 16 16"><polygon fill="" fill-rule="evenodd" points="6.852 7.649 .399 1.195 1.445 .149 7.899 6.602 14.352 .149 15.399 1.195 8.945 7.649 15.399 14.102 14.352 15.149 7.899 8.695 1.445 15.149 .399 14.102"></polygon></svg>
</button>
<div class="search-expand">
<div class="search-expand-inner">
<?php get_search_form(); ?>
</div>
</div>
<?php endif; ?>
</nav><!--/#nav-header-->
</div>
<?php endif; ?>
</div><!--/#header-sticky-->
</div>
</header><!--/#header-->

319
js/nav.js Normal file
View file

@ -0,0 +1,319 @@
/**
* Polyfill for IE11 - adds NodeList.foreach().
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach
*/
if ( window.NodeList && ! NodeList.prototype.forEach ) {
NodeList.prototype.forEach = function( callback, thisArg ) {
thisArg = thisArg || window;
for ( var i = 0; i < this.length; i++ ) { // eslint-disable-line vars-on-top
callback.call( thisArg, this[ i ], i, this );
}
};
}
window.alxMediaMenu = {
/**
*
* @param {Object} args - The arguments.
* @param {string} args.selector - The navigation selector.
* @param {int} args.breakpoint - The breakpoint in pixels.
*/
init: function( args ) {
var self = this,
navs = document.querySelectorAll( args.selector );
if ( ! navs.length ) {
return;
}
navs.forEach( function( nav ) {
var menuToggler = nav.querySelector( '.menu-toggle' );
// Hide menu toggle button if menu is empty and return early.
if ( ! nav.querySelector( 'ul' ) && nav.querySelector( '.menu-toggle' ) ) {
nav.querySelector( '.menu-toggle' ).style.display = 'none';
}
// Add nav-menu class.
if ( ! nav.classList.contains( 'nav-menu' ) ) {
nav.classList.add( 'nav-menu' );
}
// Toggle the hover event listeners.
self.toggleHoverEventListeners( nav );
// Toggle focus classes on links.
nav.querySelectorAll( 'a,button' ).forEach( function( link ) {
link.addEventListener( 'focus', window.alxMediaMenu.toggleFocus, true );
link.addEventListener( 'blur', window.alxMediaMenu.toggleFocus, true );
});
menuToggler.addEventListener( 'click', function() {
if ( nav.classList.contains( 'toggled' ) ) {
menuToggler.setAttribute( 'aria-expanded', 'false' );
nav.classList.remove( 'toggled' );
} else {
menuToggler.setAttribute( 'aria-expanded', 'true' );
nav.classList.add( 'toggled' );
}
});
// If on mobile nav, close it when clicking outside.
// If on desktop, close expanded submenus when clicking outside.
document.addEventListener( 'click', function( event ) {
if ( ! nav.contains( event.target ) ) {
// Mobile.
nav.classList.remove( 'toggled' );
// Desktop.
nav.querySelectorAll( 'button.active,.sub-menu.active' ).forEach( function( el ) {
el.classList.remove( 'active' );
});
menuToggler.setAttribute( 'aria-expanded', 'false' );
}
});
});
// Toggle mobile classes on initial load.
window.alxMediaMenu.toggleMobile( args.selector, args.breakpoint );
// Toggle mobile classes on resize.
window.addEventListener( 'resize', function() {
// If timer is null, reset it to our bounceDelay and run, otherwise wait until timer is cleared.
if ( ! window.resizeDebouncedTimeout ) {
window.resizeDebouncedTimeout = setTimeout( function() {
window.resizeDebouncedTimeout = null;
window.alxMediaMenu.toggleMobile( args.selector, args.breakpoint );
}, 250 );
}
});
// Toggle focus classes to allow submenu access on tables.
document.querySelectorAll( args.selector ).forEach( function( el ) {
window.alxMediaMenu.toggleFocusTouch( el );
});
},
/**
* Expand a menu item.
*
* @param {Element} - The menu item (DOM element).
* @return {void}
*/
toggleItem: function( el ) {
var parentLi = this.helper.firstAncestorMatch( el, 'li' ),
parentUl = this.helper.firstAncestorMatch( el, 'ul' ),
ul = parentLi.querySelector( 'ul.sub-menu' );
parentLi.classList.remove( 'hover' );
ul.setAttribute( 'tabindex', '-1' );
this.helper.toggleClass( ul, 'active' );
this.helper.toggleClass( el, 'active' );
// Go one level up in the list, and close other items that are already open.
parentUl.querySelectorAll( 'ul.sub-menu' ).forEach( function( subMenu ) {
var subMenuButton;
if ( ! parentLi.contains( subMenu ) ) {
subMenu.classList.remove( 'active' );
subMenuButton = subMenu.parentNode.querySelector( 'button.active' );
if ( subMenuButton ) {
subMenuButton.classList.remove( 'active' );
}
}
});
},
/**
* Toggles a mobile class to elements matching our selector,
* depending on the defined breakpoint.
*
* @param {string} selector - The elements where we want to toggle our mobile class.
* @param {string} className - The class-name we want to toggle.
* @param {int} breakpoint - The breakpoint.
* @return {void}
*/
toggleMobile: function( selector, breakpoint ) {
var self = this,
screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
navs = document.body.querySelectorAll( selector ),
isMobile;
breakpoint = breakpoint || 720;
isMobile = breakpoint > screenWidth;
if ( isMobile ) {
navs.forEach( function( nav ) {
if ( ! nav.classList.contains( 'mobile' ) ) {
nav.classList.add( 'mobile' );
self.toggleHoverEventListeners( nav );
}
});
} else {
navs.forEach( function( nav ) {
if ( nav.classList.contains( 'mobile' ) ) {
nav.classList.remove( 'mobile' );
self.toggleHoverEventListeners( nav );
}
});
}
},
/**
* Add a "hover" class.
*
* @return {void}
*/
liMouseEnterEvent: function() {
this.classList.add( 'hover' );
},
/**
* Remove the "hover" class.
*
* @return {void}
*/
liMouseLeaveEvent: function() {
this.classList.remove( 'hover' );
},
/**
*
* @param {Element} nav - The nav element.
* @return {void}
*/
toggleHoverEventListeners: function( nav ) {
if ( nav.classList.contains( 'mobile' ) ) {
this.removeHoverEventListeners( nav );
} else {
this.addHoverEventListeners( nav );
}
},
/**
* Add event-listeners for hover events.
*
* @param {Element} nav - The nav element.
* @return {void}
*/
addHoverEventListeners: function( nav ) {
nav.querySelectorAll( 'li' ).forEach( function( li ) {
li.addEventListener( 'mouseenter', window.alxMediaMenu.liMouseEnterEvent );
li.addEventListener( 'mouseleave', window.alxMediaMenu.liMouseLeaveEvent );
});
},
/**
* Remove event-listeners for hover events.
*
* @param {Element} nav - The nav element.
* @return {void}
*/
removeHoverEventListeners: function( nav ) {
nav.querySelectorAll( 'li' ).forEach( function( li ) {
li.removeEventListener( 'mouseenter', window.alxMediaMenu.liMouseEnterEvent );
li.removeEventListener( 'mouseleave', window.alxMediaMenu.liMouseLeaveEvent );
});
},
/**
* Sets or removes .focus class on an element.
*
* @return {void}
*/
toggleFocus: function() {
var self = this;
// Move up through the ancestors of the current link until we hit .nav-menu.
while ( -1 === self.className.indexOf( 'nav-menu' ) ) {
// On li elements toggle the class .focus.
if ( 'li' === self.tagName.toLowerCase() ) {
if ( -1 !== self.className.indexOf( 'focus' ) ) {
self.className = self.className.replace( ' focus', '' );
} else {
self.className += ' focus';
}
}
self = self.parentElement;
}
},
/**
* Toggle focus classes to allow submenu access on tables.
*
* @param {Element} el - The menu element.
* @return {void}
*/
toggleFocusTouch: function( el ) {
var touchStartFn,
parentLinks = el.querySelectorAll( '.menu-item-has-children > a, .page_item_has_children > a' );
if ( 'ontouchstart' in window ) {
touchStartFn = function( e ) {
var menuItem = this.parentNode;
if ( ! menuItem.classList.contains( 'focus' ) ) {
e.preventDefault();
menuItem.parentNode.children.forEach( function( child ) {
if ( menuItem !== child ) {
child.classList.remove( 'focus' );
}
});
menuItem.classList.add( 'focus' );
} else {
menuItem.classList.remove( 'focus' );
}
};
parentLinks.forEach( function( parentLink ) {
parentLink.addEventListener( 'touchstart', touchStartFn, false );
});
}
},
/**
* Helper methods.
*/
helper: {
/**
* Toggle a class to an element.
*
* @param {Element} el - The element.
* @param {string} className - The class we want to toggle.
* @return {void}
*/
toggleClass: function( el, className ) {
if ( el.classList.contains( className ) ) {
el.classList.remove( className );
} else {
el.classList.add( className );
}
},
/**
* Get the 1st ancestor of an element that matches our selector.
*
* @param {Element} el - The element.
* @param {string} selector - The class we want to toggle.
* @return {Element}
*/
firstAncestorMatch: function( el, selector ) {
if ( el.parentNode.matches( selector ) ) {
return el.parentNode;
}
return this.firstAncestorMatch( el.parentNode, selector );
}
}
};
window.alxMediaMenu.init({
selector: '.main-navigation.nav-menu',
breakpoint: 720
});

View file

@ -87,30 +87,6 @@ jQuery(document).ready(function($) {
$('body').toggleClass('s1-expand').toggleClass('s1-collapse');
}
});
/* Dropdown menu animation
/* ------------------------------------ */
$('.nav ul.sub-menu').hide();
$('.nav li').hover(
function() {
$(this).children('ul.sub-menu').slideDown('fast');
},
function() {
$(this).children('ul.sub-menu').hide();
}
);
/* Dropdown menu animation
/* ------------------------------------ */
$('.dropdown-buttons ul.sub-menu').hide();
$('.dropdown-buttons li').hover(
function() {
$(this).children('ul.sub-menu').slideDown('fast');
},
function() {
$(this).children('ul.sub-menu').hide();
}
);
/* Fitvids
/* ------------------------------------ */
@ -142,37 +118,4 @@ jQuery(document).ready(function($) {
pushup: ''
});
/* Mobile menu smooth toggle height
/* ------------------------------------ */
$('.nav-toggle').on('click', function() {
slide($('.nav-wrap .nav', $(this).parent()));
});
function slide(content) {
var wrapper = content.parent();
var contentHeight = content.outerHeight(true);
var wrapperHeight = wrapper.height();
wrapper.toggleClass('expand');
if (wrapper.hasClass('expand')) {
setTimeout(function() {
wrapper.addClass('transition').css('height', contentHeight);
}, 10);
}
else {
setTimeout(function() {
wrapper.css('height', wrapperHeight);
setTimeout(function() {
wrapper.addClass('transition').css('height', 0);
}, 10);
}, 10);
}
wrapper.one('transitionEnd webkitTransitionEnd transitionend oTransitionEnd msTransitionEnd', function() {
if(wrapper.hasClass('open')) {
wrapper.removeClass('transition').css('height', 'auto');
}
});
}
});

View file

@ -2,7 +2,7 @@
Contributors: alxmedia
Requires at least: 5.0
Tested up to: 5.5
Version: 1.2.4
Version: 1.2.5
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl-3.0
Tags: blog, one-column, two-columns, right-sidebar, left-sidebar, custom-colors, custom-menu, featured-images, flexible-header, full-width-template, post-formats, sticky-post, theme-options, threaded-comments, translation-ready, custom-logo, custom-header, custom-background
@ -81,6 +81,10 @@ Sidebar images
== Changelog ==
= 1.2.5 - 2020-08-17 =
* Improved a11y
* Added new menu
= 1.2.4 - 2020-08-12 =
* Fixed broken flexslider by disabling wp lazy loading

View file

@ -61,8 +61,8 @@
#nav-mobile.nav-container,
#nav-header.nav-container,
#nav-footer.nav-container { padding-left: 0; padding-right: 0; }
.toggle-search { left: 20px; right: auto; top: 5px; bottom: auto; }
.search-expand { bottom: auto; right: 90px; left: 64px; top: 5px; width: auto; z-index: 99; }
.toggle-search { left: 20px; right: auto; top: 7px; bottom: auto; }
.search-expand { bottom: auto; right: 110px; left: 80px; top: 10px; width: auto; z-index: 99; }
/* footer */
#footer-bottom .pad { padding-top: 50px; padding-bottom: 40px; }
@ -166,7 +166,7 @@
#nav-mobile .nav,
#nav-header .nav { padding-bottom: 50px; }
#btn-mode { background: transparent; box-shadow: none; -webkit-box-shadow: none; color: #999; position: absolute; bottom: 66px; right: 54px; padding: 10px; margin-bottom: 2px; }
#btn-mode { background: transparent; box-shadow: none; -webkit-box-shadow: none; color: #333; position: absolute; bottom: 68px; right: 58px; padding: 10px; margin-bottom: 2px; }
#btn-mode:hover:before,
#btn-mode:hover:after { display: none; }

420
style.css
View file

@ -1,7 +1,7 @@
/*
Theme Name: Boxstyle
Theme URI: http://alx.media/themes/boxstyle/
Version: 1.2.4
Version: 1.2.5
Requires at least: 5.0
Requires PHP: 5.6
Tested up to: 5.5
@ -72,7 +72,7 @@ table { border-collapse: collapse; border-spacing: 0; }
body { background: #eee; font-size: 15px; line-height: 1.5em; color: #555; font-weight: 300; }
::selection { background: #198cff; color: #fff; }
::-moz-selection { background: #198cff; color: #fff; }
a { color: #198cff; text-decoration: none; outline: 0; }
a { color: #198cff; text-decoration: none; }
a:hover { color: #333; }
img { max-width: 100%; height: auto; box-shadow: 0 10px 10px rgba(0,0,0,0.1), 0 1px 1px rgba(0,0,0,0.15); }
#wpadminbar img { box-shadow: none; }
@ -520,85 +520,6 @@ box-shadow: 0 0 2px rgba(255,255,255,0.4);
-webkit-border-radius: 3px; border-radius: 3px; }
.thumb-icon.small i { font-size: 12px; line-height: 16px; padding: 5px 0; }
/* common : nav
/* ------------------------------------ */
.nav-container { background: #888; z-index: 99; position: relative; }
.nav-toggle { display: none; background: #777; cursor: pointer; float: right; height: 48px; width: 60px; color: #fff; text-align: center; }
.nav-toggle i { font-size: 24px; padding: 10px 0; }
.nav-text { display: none; float: right; font-size: 16px; line-height: 24px; padding: 13px 20px; }
.nav li > a:after,
.nav > li > a:after { font-family: "Font Awesome 5 Free"; font-weight: 900; display: inline-block; }
@media only screen and (min-width: 720px) {
.nav-wrap { height: auto!important; }
/* common */
.nav { font-size: 0; position: relative; }
.nav li a { color: #ccc; display: block; line-height: 20px; }
/* dropdown arrows */
.nav li > a:after { content: "\f0da"; float: right; opacity: 0.35; }
.nav > li > a:after {content: "\f0d7"; float: none; margin-left: 6px; font-size: 14px; line-height: 1.2em; }
.nav li > a:only-child:after {content: ""; margin: 0; }
#footer .nav li > a:after { content: "\f0da"; }
#footer .nav > li > a:after { content: "\f0d8"; }
#footer .nav li > a:only-child:after { content: ""; }
/* level 1 */
.nav > li { font-size: 16px; border-right: 1px solid #999; display: inline-block; position: relative; }
.nav > li > a { padding: 14px; }
.nav > li > a:hover,
.nav > li:hover > a { background: #777; }
.nav li > a:hover,
.nav li:hover > a,
.nav li.current_page_item > a,
.nav li.current-menu-item > a,
.nav li.current-menu-ancestor > a,
.nav li.current-post-parent > a { color: #fff; }
/* level 2 & 3 */
.nav li:hover > ul { display: block; }
.nav ul { display: none; background: #777; position: absolute; left: 0; top: 48px; width: 180px; padding: 10px 0; z-index: 2; -webkit-transform: translateZ(0);
-webkit-box-shadow: 0 2px 2px rgba(0,0,0,0.15);
box-shadow: 0 2px 2px rgba(0,0,0,0.15); }
.nav ul li { font-size: 14px; position: relative; display: block; padding: 0; }
.nav ul li a { padding: 10px 20px; }
.nav ul li:last-child { border-bottom: 0!important; }
/* level 3 */
.nav ul ul { position: absolute; top: -10px; left: 180px; }
}
@media only screen and (max-width: 719px) {
.nav { font-weight: 600; }
.nav-container { text-transform: none; }
.nav-toggle,
.nav-text { display: block; }
.nav-wrap { position: relative; float: left; width: 100%; height: 0; overflow: hidden; }
.nav-wrap.transition {
-webkit-transition: height 0.35s ease;
-moz-transition: height 0.35s ease;
-o-transition: height 0.35s ease;
transition: height 0.35s ease; }
.expand .nav-wrap { height: auto; }
/* common */
.nav { float: left; width: 100%; }
.nav li a { line-height: 20px; display: block; padding: 8px 20px; }
.nav li li a { padding-left: 15px; padding-right: 15px; }
/* dropdown arrows */
.nav li > a:after { content: '\f0d7'; opacity: 0.5; margin-left: 6px; }
.nav > li > a:after { content: '\f0d7'; font-size: 14px; }
.nav li > a:only-child:after { content: ''; }
/* level 1 */
.nav > li { font-size: 15px; }
.nav li > a:hover,
.nav li.current_page_item > a,
.nav li.current-menu-item > a,
.nav li.current-post-parent > a { color: #fff; }
/* level 2 & 3 */
.nav ul { display: block!important; margin-left: 40px; }
.nav ul li { font-weight: 300; }
.nav ul li a { padding-top: 6px; padding-bottom: 6px; }
}
/* ------------------------------------------------------------------------- *
* Section: Header
@ -625,88 +546,233 @@ box-shadow: 0 0 2px rgba(255,255,255,0.4);
/* header : search
/* ------------------------------------ */
.toggle-search { background: #198cff; border-radius: 20px; color: rgba(255,255,255,0.8); font-size: 18px; line-height: 24px; cursor: pointer; padding: 6px 14px; display: block; position: absolute; right: 30px; bottom: 10px; }
.toggle-search:hover,
.toggle-search.active { color: #fff; }
.toggle-search.active i:before { content: "\f00d"; font-size: 22px; }
.search-expand { display: none; position: absolute; bottom: 0; right: 78px; width: 340px; }
.search-expand-inner { padding: 0 10px 10px; }
.toggle-search { background: #eee; border-radius: 20px; position: absolute; top: 12px; right: 40px; z-index: 3; border: 0; width: 50px; color: #333; text-align: center; font-size: 20px; line-height: 24px; cursor: pointer; padding: 6px 0; margin: 0; display: block; }
.search-expand { display: none; position: absolute; bottom: 13px; right: 100px; width: 320px; z-index: 3; }
.search-expand-inner { }
.search-expand .themeform input { background: #f2f2f2; width: 100%; border: 1px solid #eee; border-radius: 20px; }
.search-expand .themeform input:focus { border-color: #ccc; }
/* header : nav mobile
/* ------------------------------------ */
#nav-mobile.nav-container { background: #fff; border-top: 1px solid #f4f4f4; border-bottom: 1px solid #eee; padding-left: 20px; padding-right: 20px; }
#nav-mobile .nav-toggle { background: transparent; color: #333; }
#nav-mobile .nav-text { color: #999; }
.toggle-search.active { padding-top: 8px; padding-bottom: 9px; }
.toggle-search .svg-icon { fill: #fff; margin: 0 auto; }
.toggle-search #svg-close { display: none; }
.toggle-search.active #svg-search { display: none; }
.toggle-search.active #svg-close { display: block; }
@media only screen and (max-width: 719px) {
/* common */
#nav-mobile .nav-wrap { background: #fff; }
#nav-mobile .nav { padding: 0 0 20px; }
#nav-mobile .nav li a { color: #333; border-bottom: 1px solid #f4f4f4; }
/* level 1 */
#nav-mobile .nav li > a:hover,
#nav-mobile .nav li.current_page_item > a,
#nav-mobile .nav li.current-menu-item > a,
#nav-mobile .nav li.current-post-parent > a { background: #f4f4f4; color: #198cff; }
}
/* hide and display */
@media only screen and (min-width: 720px) {
.mobile-menu #nav-mobile { display: none; }
}
@media only screen and (max-width: 719px) {
.mobile-menu #nav-header { display: none; }
}
/* header : nav header
/* ------------------------------------ */
#nav-header.nav-container { background: #fff; border-top: 1px solid #f4f4f4; border-bottom: 1px solid #eee; padding-left: 20px; padding-right: 20px; }
.sticky-element-sticky #nav-header.nav-container:after { background: linear-gradient(to bottom, rgba(0,0,0,0.05) 0%,rgba(0,0,0,0) 100%); content:""; position: absolute; bottom: -40px; left: 0; right: 0; height: 40px; width: 100%; pointer-events: none; }
#nav-header .nav-toggle { background: transparent; color: #333; }
#nav-header .nav-text { color: #999; }
#header-menu-header,
#header-menu-mobile { position: relative; }
@media only screen and (min-width: 720px) {
/* common */
#nav-header .nav { font-weight: 600; }
#nav-header .nav li a { font-size: 14px; color: #999; }
#nav-header .nav > li:first-child { margin-left: 30px; }
/* level 1 */
#nav-header .nav > li { border-right: none; margin-right: 30px; }
#nav-header .nav > li > a { padding: 18px 0; border-bottom: 2px solid transparent; margin-bottom: -1px; }
#nav-header .nav > li > a:hover,
#nav-header .nav > li:hover > a { background: transparent; color: #555; }
#nav-header .nav li > a:hover,
#nav-header .nav li:hover > a { color: #555; }
#nav-header .nav li.current_page_item > a,
#nav-header .nav li.current-menu-item > a,
#nav-header .nav li.current-menu-ancestor > a,
#nav-header .nav li.current-post-parent > a { color: #555; border-bottom-color: #198cff; }
/* level 2 & 3 */
#nav-header .nav > li > ul { top: 52px; }
#nav-header .nav ul { background: #fff; }
#nav-header .nav ul li { border-bottom: 1px solid #f4f4f4; }
#nav-header .nav ul li:last-child { border-bottom: none; }
#nav-header .nav ul li a { font-size: 12px; border: none; }
.mobile-menu #header-menu-mobile { display: none; }
}
@media only screen and (max-width: 719px) {
/* common */
#nav-header .nav-wrap { background: #fff; }
#nav-header .nav { padding: 0 0 20px; }
#nav-header .nav li a { color: #333; border-bottom: 1px solid #f4f4f4; }
/* level 1 */
#nav-header .nav li > a:hover,
#nav-header .nav li.current_page_item > a,
#nav-header .nav li.current-menu-item > a,
#nav-header .nav li.current-post-parent > a { background: #f4f4f4; color: #198cff; }
.mobile-menu #header-menu-header { display: none; }
}
/* ------------------------------------------------------------------------- *
* Section: Navigation
/* ------------------------------------------------------------------------- */
/* menu hamburger */
.menu-toggle-icon { float: right; width: 30px; height: 20px; position: relative; transform: rotate(0deg); transition: .5s ease-in-out; cursor: pointer; }
.menu-toggle-icon span { display: block; position: absolute; height: 2px; width: 100%; background: #333; border-radius: 2px; opacity: 1; left: 0; transform: rotate(0deg); transition: .25s ease-in-out; }
.menu-toggle-icon span:nth-child(1) { top: 0px; transform-origin: left center; }
.menu-toggle-icon span:nth-child(2) { top: 8px; transform-origin: left center; }
.menu-toggle-icon span:nth-child(3) { top: 16px; transform-origin: left center; }
.toggled .menu-toggle-icon span:nth-child(1) { transform: rotate(45deg); top: -2px; left: 5px; }
.toggled .menu-toggle-icon span:nth-child(2) { width: 0%; opacity: 0; }
.toggled .menu-toggle-icon span:nth-child(3) { transform: rotate(-45deg); top: 19px; left: 5px; }
/* menu hide and display */
@media only screen and (min-width: 720px) {
.mobile-menu #nav-mobile-nav { display: none; }
}
@media only screen and (max-width: 719px) {
.mobile-menu #nav-header-nav { display: none; }
#nav-mobile,
#nav-header,
#nav-footer { display: none; }
.mobile #nav-mobile,
.mobile #nav-header,
.mobile #nav-footer { display: block; }
}
/* menu base */
.nav-menu > .menu-toggle { display: none; }
.nav-menu.mobile > .menu-toggle { display: block; }
.nav-menu.mobile > .menu-toggle ~ * { max-height: 4000px; overflow: hidden; width: 100%; transition: max-height 0.5s cubic-bezier(1, 0, 1, 0); }
.nav-menu.mobile > .menu-toggle[aria-expanded="false"] ~ * { max-height: 0; transition: max-height 0.5s cubic-bezier(0, 1.05, 0, 1); }
.nav-menu .menu,
.nav-menu .menu ul { display: flex; list-style: none; list-style-type: none; margin: 0; padding: 0; }
.nav-menu a { display: block; text-decoration: none; width: 100%; }
.nav-menu.mobile ul { flex-direction: column; }
.nav-menu .menu ul { flex-direction: column; max-width: 0; max-height: 0; overflow: hidden; }
.nav-menu .menu ul.active,
.nav-menu:not(.mobile) .menu li.hover > ul { max-width: 100vw; max-height: 300vh; }
.nav-menu:not(.mobile) .menu .sub-menu { position: absolute; text-align: left; }
.nav-menu .screen-reader-text { display: none; }
.nav-menu .menu-item-wrapper { display: flex; }
.nav-menu { line-height: 20px; }
.nav-menu button { color: inherit; cursor: pointer; font-family: inherit; position: relative; text-align: inherit; user-select: none; background: none; border: none; box-shadow: none; border-radius: 0; font-size: inherit; font-weight: 400; letter-spacing: inherit; padding: 0; text-transform: none; }
.nav-menu.mobile .menu ul { transition: max-height 500ms; max-width: 100%; }
.nav-menu:not(.mobile) { position: relative; z-index: 3; }
.nav-menu:not(.mobile) .menu { flex-wrap: wrap; justify-content: left; }
.nav-menu:not(.mobile) .menu ul.active,
.nav-menu:not(.mobile) .menu li.hover > ul { overflow: visible; width: 180px; opacity: 1; transform: translateY(0); transition: opacity 0.15s linear, transform 0.15s linear; }
.nav-menu:not(.mobile) .menu ul .sub-menu { left: 200px; top: 0; }
.nav-menu:not(.mobile) .menu { position: relative; }
.nav-menu:not(.mobile) .menu ul { font-size: 15px; opacity: 0; padding: 10px 0; position: absolute; top: calc(100% + 20px); transition: opacity 0.15s linear, transform 0.15s linear, right 0s 0.15s; transform: translateY(6px); z-index: 1; }
.nav-menu:not(.mobile) .menu ul li { position: relative; }
.nav-menu:not(.mobile) .menu ul a { display: block; padding: 10px 20px; transition: background-color 0.15s linear; width: 100%; }
.nav-menu:not(.mobile) .menu li.menu-item-has-children.focus > ul { min-width: 180px; max-width: 180px; max-height: 300vh; overflow: visible; opacity: 1; transform: translateY(0); transition: opacity 0.15s linear, transform 0.15s linear; }
.nav-menu:not(.mobile) .menu li ul.sub-menu:not(.active) { opacity: 0; }
.nav-menu:not(.mobile) .menu li.hover ul.sub-menu:not(.active) { opacity: 1; }
.nav-menu:not(.mobile) .menu li.focus ul ul.sub-menu:not(.active) { opacity: 0; }
.nav-menu:not(.mobile) .menu li.focus ul li.hover ul.sub-menu { opacity: 1; }
.nav-menu:not(.mobile) .menu ul:before,
.nav-menu:not(.mobile) .menu ul:after { content: ""; display: block; position: absolute; bottom: 100%; }
.nav-menu:not(.mobile) .menu ul:before { left: 0; right: 0; height: 20px; }
.nav-menu:not(.mobile) .menu ul:after { border: 8px solid transparent; border-bottom-color: transparent; left: 18px; }
.nav-menu:not(.mobile) .menu ul ul { left: calc(100% + 20px); top: -10px !important; }
.nav-menu:not(.mobile) .menu ul ul:before { bottom: 0; height: auto; left: auto; left: -20px; top: 0; width: 22px; }
.nav-menu:not(.mobile) .menu ul ul:after { border-bottom-color: transparent; bottom: auto; left: -16px; top: 20px; }
.nav-menu-dropdown-left .nav-menu:not(.mobile) .menu ul ul:before { left: auto; right: -20px; }
.nav-menu-dropdown-left .nav-menu:not(.mobile) .menu ul ul { right: calc(100% + 20px); left: auto; }
.nav-menu-dropdown-left .nav-menu:not(.mobile) .menu ul ul:after { border-right-color: transparent; right: -16px; left: auto; }
.nav-menu-dropdown-left .nav-menu:not(.mobile) ul ul button .svg-icon { transform: none; }
.nav-menu:not(.mobile) a,
.nav-menu:not(.mobile) span { transition: all 0.3s ease; }
.nav-menu.mobile { padding: 0; }
.nav-menu.mobile button:focus { outline: none; }
.nav-menu.mobile > button { padding: 16px 20px; float: right; }
.nav-menu.mobile button .svg-icon { transition: all 250ms; }
.nav-menu.mobile button.active .svg-icon { transform: rotate(180deg); }
.nav-menu.mobile ul { border: 0; }
.nav-menu.mobile ul li .menu-item-wrapper { justify-content: space-between; width: 100%; }
.nav-menu.mobile > div > ul > li:last-child { margin-bottom: 52px; }
.nav-menu.mobile ul li a { font-size: 15px; font-weight: 600; padding: 14px 20px; text-align: left; }
.nav-menu.mobile ul ul li a { font-size: 14px; }
.nav-menu.mobile ul ul li a { padding: 12px 0 12px 40px; }
.nav-menu.mobile ul ul ul li a { padding: 12px 0 12px 60px; }
.nav-menu.mobile ul button { margin: 10px 0; padding: 0 20px; }
/* menu styling */
.nav-menu a { color: #fff; font-weight: 600; }
.nav-menu .svg-icon { fill: #333; }
.nav-menu:not(.mobile) .menu ul { background: #333; color: #fff; }
.nav-menu:not(.mobile) .menu ul:after { border-bottom-color: #333; }
.nav-menu:not(.mobile) .menu ul ul:after { border-right-color: #333; }
.nav-menu-dropdown-left .nav-menu:not(.mobile) .menu ul ul:after { border-left-color: #333; }
.nav-menu:not(.mobile) { border-top: 1px solid #eee; font-size: 14px; font-weight: 400; float: none; padding: 6px 0 20px 0; }
.nav-menu:not(.mobile) a { color: #999; }
.nav-menu:not(.mobile) a:hover { color: #333; }
.nav-menu:not(.mobile) ul ul a { font-size: 14px; }
.nav-menu:not(.mobile) ul ul a:hover { color: #ccc; }
.nav-menu:not(.mobile) ul ul > li:hover > span { background: rgba(255,255,255,0.1); }
.nav-menu:not(.mobile) ul ul a { color: #eee; }
.nav-menu:not(.mobile) button { background: none; color: #666; padding: 0 4px; margin-left: 2px; border-radius: 4px; }
.nav-menu:not(.mobile) button.active { background: #eee; color: #333; }
.nav-menu:not(.mobile) button .svg-icon { fill: #ccc; }
.nav-menu:not(.mobile) ul ul button { background: none; color: #eee; padding: 0 5px; margin: 0 10px 0 0; }
.nav-menu:not(.mobile) ul ul button.active { background: #444; color: #eee; }
.nav-menu:not(.mobile) ul ul button .svg-icon { transform: rotate(-90deg); }
.nav-menu:not(.mobile) .menu > li { margin: 16px 20px 0 0; position: relative; }
.nav-menu:not(.mobile) .menu > li:last-child { margin-right: 0; }
.nav-menu:not(.mobile) .menu a { padding: 0; }
.nav-menu:not(.mobile) li.current_page_item > span > a,
.nav-menu:not(.mobile) li.current-menu-item > span > a,
.nav-menu:not(.mobile) li.current-menu-ancestor > span > a,
.nav-menu:not(.mobile) li.current-post-parent > span > a { color: #333; }
.nav-menu:not(.mobile) ul ul li.current_page_item > span > a,
.nav-menu:not(.mobile) ul ul li.current-menu-item > span > a,
.nav-menu:not(.mobile) ul ul li.current-menu-ancestor > span > a,
.nav-menu:not(.mobile) ul ul li.current-post-parent > span > a { color: #333; }
.nav-menu.mobile { background: #fff; border-top: 1px solid #f2f2f2; }
.nav-menu.mobile button.active .svg-icon { fill: #333; }
.nav-menu.mobile ul ul { background: rgba(0,0,0,0.03); }
.nav-menu.mobile ul li .menu-item-wrapper,
.nav-menu.mobile ul ul li .menu-item-wrapper { border-bottom: 1px solid rgba(0,0,0,0.07); }
.nav-menu.mobile > div > ul > li:first-child .menu-item-wrapper { border-top: 1px solid rgba(0,0,0,0.07); }
.nav-menu.mobile ul li a { color: #333; }
.nav-menu.mobile ul button,
.nav-menu.mobile ul ul button { border-left: 1px solid rgba(0,0,0,0.07); }
/* menu header styling */
#header .nav-menu:not(.mobile) { background: #fff; padding-bottom: 0; box-shadow: 0 1px rgba(0,0,0,0.1), 0 3px 3px rgba(0,0,0,0.04); }
#header .nav-menu:not(.mobile) { padding: 0 50px; }
#header .nav-menu:not(.mobile) .menu > li { margin-top: 0; }
#header .nav-menu:not(.mobile) .menu > li:first-child { }
#header .nav-menu:not(.mobile) > div > ul > li > span { padding-top: 20px; padding-bottom: 20px; border-bottom: 2px solid transparent; margin-top: -1px; }
#header .nav-menu:not(.mobile) > div > ul > li:hover > span { border-color: transparent; }
#header .nav-menu:not(.mobile) > div > ul > li.current_page_item > span,
#header .nav-menu:not(.mobile) > div > ul > li.current-menu-item > span,
#header .nav-menu:not(.mobile) > div > ul > li.current-menu-ancestor > span,
#header .nav-menu:not(.mobile) > div > ul > li.current-post-parent > span { border-color: #198cff; }
#header .nav-menu:not(.mobile) ul ul li.current_page_item > span > a,
#header .nav-menu:not(.mobile) ul ul li.current-menu-item > span > a,
#header .nav-menu:not(.mobile) ul ul li.current-menu-ancestor > span > a,
#header .nav-menu:not(.mobile) ul ul li.current-post-parent > span > a { color: #333; }
#header .nav-menu:not(.mobile) .menu ul { background: #fff; top: calc(100% - 2px); box-shadow: 0 2px 2px rgba(0,0,0,0.15); color: #666; }
#header .nav-menu:not(.mobile) .menu ul:after { border-bottom-color: transparent; }
#header .nav-menu:not(.mobile) .menu ul ul:after { border-bottom-color: transparent; }
#header .nav-menu:not(.mobile) .menu ul ul:after { border-right-color: #fff; }
#header .nav-menu-dropdown-left .nav-menu:not(.mobile) .menu ul ul:after { border-left-color: #fff; }
#header .nav-menu:not(.mobile) .menu ul a { font-size: 13px; color: #777; }
#header .nav-menu:not(.mobile) .menu ul span { border-bottom: 1px solid #f2f2f2; }
#header .nav-menu:not(.mobile) .menu ul li:last-child span { border-bottom: 0; }
#header .nav-menu:not(.mobile) ul ul a { transition: all 0.3s ease; }
#header .nav-menu:not(.mobile) ul ul a:hover { color: #333; }
#header .nav-menu:not(.mobile) ul ul button.active { background: #f2f2f2; color: #999; }
#header .nav-menu.mobile { position: relative; z-index: 3; border-bottom: 1px solid #f2f2f2; }
/* menu footer styling */
#footer .menu-toggle-icon span { background: #333; }
#footer .nav-menu a { font-weight: 600; }
#footer .nav-menu:not(.mobile) { background: transparent; font-size: 14px; border-top: 0; border-bottom: 1px solid rgba(0,0,0,0.06); float: none; padding-top: 4px; padding-left: 50px; padding-right: 50px; position: relative; z-index: 2; }
#footer .nav-menu:not(.mobile) a { color: rgba(0,0,0,0.5); }
#footer .nav-menu:not(.mobile) a:hover { color: #333; }
#footer .nav-menu:not(.mobile) button { transform: rotate(-180deg); }
#footer .nav-menu:not(.mobile) .menu ul button { transform: none; }
#footer .nav-menu:not(.mobile) .menu { justify-content: left; }
#footer .nav-menu:not(.mobile) .menu ul { background: #fff; top: auto; bottom: calc(100% + 19px); border-radius: 4px; box-shadow: 0 4px 10px rgba(0,0,0,0.06); }
#footer .nav-menu:not(.mobile) .menu ul a { font-size: 13px; }
#footer .nav-menu:not(.mobile) .menu ul span { border-bottom: 1px solid rgba(0,0,0,0.06); }
#footer .nav-menu:not(.mobile) .menu ul li:last-child span { border-bottom: 0; }
#footer .nav-menu:not(.mobile) .menu ul ul { bottom: auto; }
#footer .nav-menu:not(.mobile) .menu > li > ul:before,
#footer .nav-menu:not(.mobile) .menu > li > ul:after { bottom: auto; top: 100%; }
#footer .nav-menu:not(.mobile) .menu ul:after { border-bottom-color: transparent; border-top-color: #fff; }
#footer .nav-menu:not(.mobile) .menu ul ul:after { border-right-color: #fff; border-top-color: transparent; }
#footer .nav-menu:not(.mobile) li.current_page_item > span > a,
#footer .nav-menu:not(.mobile) li.current-menu-item > span > a,
#footer .nav-menu:not(.mobile) li.current-menu-ancestor > span > a,
#footer .nav-menu:not(.mobile) li.current-post-parent > span > a { color: #333; }
#footer .nav-menu:not(.mobile) button .svg-icon { fill: rgba(0,0,0,0.2); }
#footer .nav-menu:not(.mobile) button.active { background: rgba(0,0,0,0.1); }
#footer .nav-menu:not(.mobile) ul ul a { transition: all 0.3s ease; }
#footer .nav-menu:not(.mobile) ul ul > li:hover > span { background: none; }
#footer .nav-menu.mobile { background: transparent; border-top: none; border-bottom: 1px solid rgba(0,0,0,0.07); }
#footer .nav-menu.mobile .svg-icon { fill: #333; }
#footer .nav-menu.mobile button.active .svg-icon { fill: #333; }
#footer .nav-menu.mobile ul ul { background: rgba(0,0,0,0.03); }
#footer .nav-menu.mobile ul li .menu-item-wrapper,
#footer .nav-menu.mobile ul ul li .menu-item-wrapper { border-bottom: 1px solid rgba(0,0,0,0.07); }
#footer .nav-menu.mobile > div > ul > li:first-child .menu-item-wrapper { border-top: 1px solid rgba(0,0,0,0.07); }
#footer .nav-menu.mobile ul li a { color: #333; }
#footer .nav-menu.mobile ul button,
#footer .nav-menu.mobile ul ul button { border-left: 1px solid rgba(0,0,0,0.07); }
/* ------------------------------------------------------------------------- *
* Section: Page
@ -753,54 +819,6 @@ box-shadow: 0 0 2px rgba(255,255,255,0.4);
#footer-bottom .social-links .social-tooltip:hover:after { background: #333; color: #fff; }
#footer-bottom .social-links .social-tooltip:hover:before { border-color: #333 transparent; }
/* footer : nav
/* ------------------------------------ */
#nav-footer.nav-container { background: #f4f4f4; z-index: 97; border-bottom: 1px solid #e5e5e5; padding-left: 20px; padding-right: 20px; }
#nav-footer .nav-toggle { background: transparent; color: #333; }
#nav-footer .nav-text { color: #666; }
@media only screen and (min-width: 720px) {
/* common */
#nav-footer .nav { font-weight: 600; }
#nav-footer .nav li a { font-size: 14px; color: #777; }
/* level 1 */
#nav-footer .nav > li { margin-right: 30px; border-right: none; }
#nav-footer .nav > li:first-child { margin-left: 30px; }
#nav-footer .nav > li > a { padding: 18px 0; }
#nav-footer .nav > li > a:hover,
#nav-footer .nav > li:hover > a { background: transparent; }
#nav-footer .nav li > a:hover,
#nav-footer .nav li:hover > a,
#nav-footer .nav li.current_page_item > a,
#nav-footer .nav li.current-menu-item > a,
#nav-footer .nav li.current-menu-ancestor > a,
#nav-footer .nav li.current-post-parent > a { color: #333; }
/* level 2 & 3 */
#nav-footer .nav ul { background: #fff; bottom: 55px; top: auto; text-align: left; border-radius: 4px;
-webkit-box-shadow: 0 0 4px rgba(0,0,0,0.1), 0 1px 0 rgba(0,0,0,0.1);
box-shadow: 0 0 4px rgba(0,0,0,0.1), 0 1px 0 rgba(0,0,0,0.1); }
#nav-footer .nav ul:before { content:''; display: inline-block; border-left: 8px solid transparent; border-right: 8px solid transparent; border-top: 8px solid #fff; border-bottom: 8px solid transparent; position: absolute; bottom: -16px; left: 20px; }
#nav-footer .nav ul li { border-bottom: 1px solid #f4f4f4; }
#nav-footer .nav ul li:last-child { border-bottom: none; }
#nav-footer .nav ul li a { font-size: 13px; }
/* level 3 */
#nav-footer .nav ul ul { position: absolute; top: auto; bottom: -10px; }
}
@media only screen and (max-width: 719px) {
/* common */
#nav-footer .nav { padding-bottom: 20px; }
#nav-footer .nav li a { color: #666; border-top: 1px solid #e5e5e5; }
/* level 1 */
#nav-footer .nav li > a:hover { background: #eee; color: #333; }
#nav-footer .nav li.current_page_item > a,
#nav-footer .nav li.current-menu-item > a,
#nav-footer .nav li.current-post-parent > a { background: #eee; color: #333; }
}
/* ------------------------------------------------------------------------- *
* Post Entry