スマホで目次追従

【Cocoon】スマホで目次を追従させる方法
WordPressテーマ「Cocoon」利用者むけのスマホで目次を追従するカスタマイズです。縦長になりがちなスマホにオススメのカスタマイズです。離脱率も下がるかもしれません!コピペで簡単なのでぜひやって見てください。
【Cocoon】スマホで目次を追従させる方法
WordPressテーマ「Cocoon」利用者むけのスマホで目次を追従するカスタマイズです。縦長になりがちなスマホにオススメのカスタマイズです。離脱率も下がるかもしれません!コピペで簡単なのでぜひやって見てください。

/************************************
** スマホ追尾目次
************************************/
#mobile-toc-widget-wrap .menu-trigger,
#mobile-toc-widget-wrap .menu-trigger span {
  display: inline-block;
  transition: all .4s;
  box-sizing: border-box;
}
#mobile-toc-widget-wrap .menu-trigger {
  position: relative;
  width: 25px;
  height: 35px;
}
#mobile-toc-widget-wrap .menu-trigger span {
  position: absolute;
  left: 0;
  width: 100%;
  height: 3px;
  background-color: #fff; /* 三本線色 */
  border-radius: 4px;
}
#mobile-toc-widget-wrap .menu-trigger span:nth-of-type(1) {
  top: 13px;
}
#mobile-toc-widget-wrap .menu-trigger span:nth-of-type(2) {
  top: 20px;
}
#mobile-toc-widget-wrap .menu-trigger span:nth-of-type(3) {
  top: 27px;
}
#mobile-toc-widget-wrap .menu-trigger.active {
  -webkit-transform: rotate(360deg);
  transform: rotate(360deg);
}
#mobile-toc-widget-wrap .menu-trigger.active span:nth-of-type(1) {
  -webkit-transform: translateY(20px) rotate(-45deg);
  transform: translateY(20px) rotate(-45deg);
  top:0;
}
#mobile-toc-widget-wrap .menu-trigger.active span:nth-of-type(2) {
  -webkit-transform: translateY(0) rotate(45deg);
  transform: translateY(0) rotate(45deg);
}
#mobile-toc-widget-wrap .menu-trigger.active span:nth-of-type(3) {
  opacity: 0;
}
#mobile-toc-widget-wrap{
  position: fixed;
  bottom: 50px;
  right: 20px;
  margin: 0;
  padding: 0;
  z-index:5;
  counter-reset: mobile-toc;
}
#mobile-toc-widget-wrap label .mobile-toc-button {
  width: 58px;
  height: 58px;
  border-radius:50%;
  background: #f6a068; /* ボタン色 */
  box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.16);
  transition: ease-out 0.3s;
  text-align:center;
  position:relative;
  z-index: 3;
}
#mobile-toc-widget-wrap label .mobile-toc-button .mobile-toc-button-title {
  color: #fff; /* ボタン文字色 */
  font-size: 0.65em;
  letter-spacing: 0;
  position: absolute;
  bottom: 7px;
  left: 0;
  right: 0;
  margin: auto;
}
#mobile-toc-widget-wrap label:hover {
  background: #efefef;
}
#mobile-toc-widget-wrap input {
  display: none;
}
#mobile-toc-widget-wrap .mobile-toc-show {
  display:none;
}
#mobile-toc-widget-wrap input:checked ~ .mobile-toc-show {
  background:#fff;
  position: absolute;
  top: 0;
  left: 0;
  padding: 2.5em 1em;
  opacity:0.97; /* 20190924数値変更 */
  position:fixed;
  width:100%;
  height:100%;
  display:block;
  animation: 0.5s fade-in;
  -webkit-animation: 0.5s fade-in;
  overflow-y:scroll;
}
@-webkit-keyframes fadeIn { 
  0% {display: none;opacity: 0;}
  1% {display: block;opacity: 0;}
  100% {display: block;opacity: 0.93;}
}
@keyframes fade-in {
  0% {display: none;opacity: 0;}
  1% {display: block;opacity: 0;}
  100% {display: block;opacity: 0.93;}
}
#mobile-toc-widget-wrap .widgettitle{
  text-align: center;
  margin: 0 0 1em; /* 20190924数値変更 */
  color: #f6a068; /* 目次名の色 */
  font-size: 1.1em;
  letter-spacing:2px;
  font-weight:600; /* 20190924追記 */
}
#mobile-toc-widget-wrap .mobile-toc-show .toc{
  border:none;
  margin: 0 !important;
  padding: 0 !important;
}
#mobile-toc-widget-wrap .toc .toc-list > li {
  list-style-type: none !important;
  position: relative;
  margin-left: 13px;
  margin-right: 25px;
  padding-left: 32px;
  margin-bottom: 15px;
  padding-bottom: 0px;
  font-size: 1.1em;
  line-height: 1.8;
}
#mobile-toc-widget-wrap .toc a {
  font-size: 0.8em;
  font-weight:600;/* 20190924追記 */
}
#mobile-toc-widget-wrap .toc-list{
  padding:0 !important;
}
#mobile-toc-widget-wrap .toc-list > li:before{
  counter-increment: mobile-toc;
  content: counter(mobile-toc);
  position: absolute;
  left: 5px;
  top: 5px;
  background: none;
  font-size: 0.8em;
  color: #f6a068; /* 数字の色 */
}
#mobile-toc-widget-wrap .toc_widget_list > li ol {
  margin-top: 5px;
  padding-left: 20px;
}
#mobile-toc-widget-wrap .toc-list ol{
  list-style:none;
}
#mobile-toc-widget-wrap .toc-list > li > ol > li a {
  position: relative;
  text-decoration: none !important;
  font-weight:500;/* 20190924追記 */
}
#mobile-toc-widget-wrap .toc-list > li ol li a:before {
  position: absolute;
  content: "・";
  font-size: 1.4em;
  left: -20px;
  top: -10px;
  color: #f6a068; /* 点の色 */
}
Copy

<?php if ( wp_is_mobile()  && is_single()) : ?>
<?php if(is_active_sidebar('mobile_toc_widget')) : ?>
<div id="mobile-toc-widget-wrap">  
    <label for="mobile-toc">
    <div class="mobile-toc-button">
      <div class="menu-trigger">
      <span></span>
      <span></span>
      <span></span>
      </div>
     <span class="mobile-toc-button-title">目次</span>
    </div>
  </label>
    <input type="checkbox" id="mobile-toc"/>
    <div class="mobile-toc-show">
      <div class="mobile-toc-widget">        
      <?php dynamic_sidebar('mobile_toc_widget'); ?>      
      </div>
    </div>
</div>
<script>
//スマホ目次追尾
jQuery('#mobile-toc-widget-wrap label').on('click', function() {
    jQuery('.menu-trigger').toggleClass('active');
});
jQuery('#mobile-toc-widget-wrap .toc-list a').on('click', function() {
    jQuery('.menu-trigger').toggleClass('active');
});
jQuery('#sidebar-menu-input').on('click', function() {
    if (jQuery('#sidebar-menu-input').prop('checked')) {
        jQuery('#mobile-toc-widget-wrap').css('display', 'none');
    }else{
    jQuery('#mobile-toc-widget-wrap').css('display', 'block');
  }
});
jQuery('#mobile-toc-widget-wrap .toc-list a').click(function() {
    if (jQuery('#mobile-toc-widget-wrap input').prop('checked')) {
        jQuery('#mobile-toc-widget-wrap input').prop('checked', false);
    }
});
//スムーススクロール
jQuery(function () {
 var headerHight = 50; 
 jQuery('a[href^="#"]').click(function(){
     var href= jQuery(this).attr("href");
       var target = jQuery(href == "#" || href == "" ? 'html' : href);
        var position = target.offset().top-headerHight;
     jQuery("html, body").animate({scrollTop:position}, 550, "swing");
        return false;
   });
});
</script>
<?php endif; ?>
<?php endif; ?>
Copy
//目次スマホ追尾専用ウィジェット
add_action(
  'widgets_init', 
  function(){
    register_sidebar(array(
      'id' => 'mobile_toc_widget',
      'name' => '目次スマホ追尾',
      'description' => 'スマホだけに表示される追尾される目次専用エリアです。',
      'before_widget' => '',
      'after_widget' => '',
      'before_title' => '<div class="widgettitle">',
            'after_title' => "</div>\n"
    ));
  }
);
Copy

コメント

タイトルとURLをコピーしました