I was working on a client’s site who is using Epik Theme. He requested for responsive menu and I did it by this way.
First create a JS file “responsive-menu.js” and put in “epik/js” folder. Here is the JS code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
jQuery(function(){ jQuery( ".nav-header .sub-menu" ).before( "<button class='sub-menu-toggle' role='button'></button>" ); jQuery(".responsive-menu").on( "click", function() { jQuery( ".header-widget-area .widget_nav_menu" ).fadeToggle(); }); jQuery(".sub-menu-toggle").on( "click", function() { var $this = jQuery( this ); $this.toggleClass( "activated" ); $this.next( ".sub-menu" ).slideToggle(); }); jQuery(window).resize(function() { if ( window.innerWidth > 960 ) { jQuery( ".header-widget-area .widget_nav_menu, .sub-menu" ).css('display', 'block'); }else{ jQuery( ".header-widget-area .widget_nav_menu, .sub-menu" ).css('display', 'none'); } }); }); |
Adding the Dashicons CSS, responsive-menu.js and creating Responsive Menu markup at header. Add following codes in functions.php file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
add_action('genesis_header_right', 'epik_responsive_menu'); function epik_responsive_menu(){ echo '<!-- Responsive Menu --> <div class="responsive-menu hide"> <span class="dashicons dashicons-menu"></span> </div>'; } //Search this 'genesis_sample_google_fonts' and replace the code by this new one function genesis_sample_google_fonts() { wp_enqueue_script( 'minimum-responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' ); wp_enqueue_style( 'dashicons' ); wp_enqueue_style( 'google-font', '//fonts.googleapis.com/css?family=Open+Sans:300,400,700', array(), PARENT_THEME_VERSION ); } |
Adding the following CSS in style.css file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
.hide, .sub-menu-toggle { display: none; } @media only screen and (max-width: 960px) { .header-image .site-header, .header-image .site-header .wrap { background-position: left top !important; } .site-header .widget_nav_menu { display: inline-block; width: 100%; } .header-image .site-header .widget-area{ float: none; } .responsive-menu { color: #d2d2d2; cursor: pointer; display: block; margin: 0; padding: 13px 0 0; position: relative; right: 0; text-align: right; top: 0; width: auto; } .responsive-menu .dashicons, .responsive-menu .dashicons-before:before{font-size: 32px; width: 30px; height: 30px;} .header-widget-area .widget_nav_menu{display: none; margin-top: 30px;} .site-header .widget-area{text-align: left;} .site-header .genesis-nav-menu .menu-item{display:block; position: relative;} .site-header .genesis-nav-menu .menu-item:hover {position: relative;} .site-header .genesis-nav-menu a { padding: 15px 0 15px 20px; border-left: none; border-top: 1px solid #4b4b4b; text-align: left; } .site-header .genesis-nav-menu .sub-menu { clear: both; display: none; opacity: 1; filter: alpha(opacity=100); position: static; width: 100%; } .site-header .genesis-nav-menu .sub-menu a, .site-header .genesis-nav-menu .sub-menu li:last-child a { background: none; border-width: 1px 0 0; position: relative; padding-left: 40px; width: auto; } .sub-menu-toggle, .sub-menu-toggle:hover { background: none!important; color: #afafaf!important; display: block; font-size: 12px; font-size: 1.2rem; font-weight: 300; font-family: 'Dashicons'; margin: 0 auto; overflow: hidden; padding: 7px 18px; position: absolute; right: 0; top: 10px; text-align: center; visibility: visible; } .sub-menu-toggle:before { content: "\f347"; font-family: 'Dashicons'; } .sub-menu-toggle.activated:before { content: "\f343"; font-family: 'Dashicons'; } } |
Replacing some existing CSS by this new CSS
Go to line no 3985 and replace by this
1 2 3 4 5 6 7 8 9 10 11 12 |
.content, .content-sidebar-sidebar .content, .content-sidebar-sidebar .content-sidebar-wrap, .sidebar-content-sidebar .content, .sidebar-content-sidebar .content-sidebar-wrap, .sidebar-primary, .sidebar-secondary, .sidebar-sidebar-content .content, .sidebar-sidebar-content .content-sidebar-wrap, .wrap { width: 100%; } |
Go to line no 3985 and remove this full CSS
1 2 3 4 |
.header-image .site-header, .header-image .site-header .wrap { background-position: center top !important; } |
Now all are done. Just refresh the home page and you’ll get responsive menu for small devices.
Leave a Reply