美文网首页
引导页页面制作

引导页页面制作

作者: 钮家媳妇儿 | 来源:发表于2020-07-24 16:57 被阅读0次

关于引导页制作要点:

1、计算定位
2、利用无限大的 border 属性

    border-radius: 50%;
    border: 10000px solid rgba(0, 0, 0, .7);

具体js:

guide.js
注意点:
1、js中有需要在html中的扣洞处的class名称
2、图片名称需要按照guideTypes里面的名称来定义

(function() {
  'use strict';

  var $ = window.jQuery;
    // 图片路径
  var UPLOAD_FOLDER = 'upload/';
  var guideTypes = 'follow details contact menus actions'.split(' ');

  // preload guide image
  $.each(guideTypes, function(_, type) {
    new Image().src = UPLOAD_FOLDER + 'guide-for-' + type + '.png';
  });

    // 展示指引
  function showGuide() {
        // 背景图不给滚动
    function disableScroll() {
      $('html, body')
        .scrollTop(0)
        .addClass('with-guide')
        .on('touchmove', false);
    }
        // 背景图可滚动
    function enableScroll() {
      $('html, body')
        .removeClass('with-guide')
        .off('touchmove', false);
    }
    disableScroll();
    var body = $('body');

    var html = [];
        // 指引页的长度
    var len = guideTypes.length;
        
    $.each(guideTypes, function(_, type) {
      html.push([
        '<div class="guide guide-for-' + type + '" data-type="' + type + '">',
          '<div class="guide-for"></div>',
          '<div class="guide-main">',
            '<img class="guide-img" src="' + UPLOAD_FOLDER + 'guide-for-' + type + '.png">',
            '<button class="guide-btn" type="button"></button>',
          '</div>',
        '</div>'
      ].join(''));
    });

    var wrap = $('<div class="guide-wrap">' + html.join('') + '</div>').appendTo(body);
    var guides = $('.guide', wrap);
    var win = $(window);

    var posfuncs = [];

    guides.each(function(index) {
      var type = $(this).data('type');
      var frame = $('.guide-for', this);
      var main = $('.guide-main', this);
      // var btn = $('.guide-btn', this);

      if (type === 'follow') {
        var followBtn = $('#js-follow-btn');

        posfuncs[index] = function() {
          var pos = followBtn.offset();
          var width = followBtn.width();
          var height = followBtn.height();
          frame.css({
            left: pos.left + width / 2,
            top: pos.top + height / 2,
            width: width * 1.2,
            height: width * 1.2
          });
          main.css({
            top: pos.top + height / 2
          });
        };
      } else if (type === 'details') {
        var details = $('.office-intro');
        posfuncs[index] = function() {
          var height = details.height();
          var pos = details.offset();
          frame.css({
            top: pos.top + height / 2,
            left: '50%',
            width: height + 10,
            height: height + 10
          });
          main.css({
            top: pos.top + height
          });
        };
      } else if (type === 'contact') {
        var navLink = $('.address-nav-link');
        var phoneLink = $('.office-concat-dial-link');
        posfuncs[index] = function() {
          var navPos = navLink.offset();
          var phonePos = phoneLink.offset();

          var height = phonePos.top + phoneLink.height() - navPos.top;
          var width = Math.max(navLink.width(), phoneLink.width());

          frame.css({
            top: navPos.top + height / 2,
            left: navPos.left + width / 2,
            width: width + 15,
            height: height + 30
          });
          main.css({
            top: navPos.top + height / 2
          });
        };
      } else if (type === 'menus') {
        var menus = $('.index-menus');

        posfuncs[index] = function() {
          var pos = menus.offset();
          var height = menus.height();
          var width = menus.width();

          frame.css({
            top: pos.top + height / 2,
            left: pos.left + width / 2,
            width: width - 10,
            height: height
          });

          main.css({
            top: pos.top
          });
        };
      } else if (type === 'actions') {
        var actions = $('.action-bar > .action-bar');
        posfuncs[index] = function() {
          var pos = actions.offset();
          var height = actions.height();
          var width = actions.width();

          frame.css({
            top: pos.top + height / 2,
            left: pos.left + width / 2,
            width: width - 10,
            height: height
          });

          main.css({
            top: pos.top
          });
        };
      }
    });

    function calcPos() {
      $.each(posfuncs, function(_, posfunc) {
        posfunc();
      });
    }

    win.on('resize load', calcPos).trigger('resize');

    wrap.on('click', '.guide-btn', function() {
      var guide = $(this).parents('.guide');
      var index = guide.index();
      if (index === len - 1) {
        wrap.css({
          display: 'none'
        });
        enableScroll();
        win.off('resize load', calcPos)
      } else {
        guide.css({
          display: 'none'
        });
        guide.next().css({
          display: 'block'
        });
      }
    });

    guides.eq(0).css({display: 'block'});
  }

  $(showGuide);
})();


.guide {
  position: absolute;
  left: 0;
  right: 0;
  display: none;
}

.guide-wrap {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 4;
  overflow: hidden;
}

.guide-for {
  position: absolute;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  -webkit-border-radius: 50%;
  border-radius: 50%;
  border: 10000px solid rgba(0, 0, 0, .7);
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
}

.guide-for::before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  border: 1px dashed rgba(0, 0, 0, .7);
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-border-radius: inherit;
  border-radius: inherit;
}

.guide-main {
  position: absolute;
  left: 0;
  right: 0;
}

.guide-img {
  display: block;
  margin-left: auto;
  margin-right: auto;
  max-width: 320px;
}

.guide-btn {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
  display: block;
  margin-left: auto;
  margin-right: auto;
  width: 34.13333333%;
  max-width: 120px;
}

.guide-btn::before {
  content: "";
  display: block;
  height: 0;
  padding-top: 33.59375%;
  background: url(../images/guide/guide-btn-next.png);
  -webkit-background-size: 100% 100%;
  background-size: 100%;
}

.guide:last-of-type .guide-btn::before {
  background-image: url(../images/guide/guide-btn-done.png);
}

.guide-for-follow .guide-for::before {
  border-color: #fff;
}

.guide-for-follow .guide-main {
  padding-top: 1rem;
}

.guide-for-follow .guide-img {
  margin-bottom: 2rem;
}

.guide-for-details .guide-for {
  margin-left: -20px;
}

.guide-for-details .guide-for::before {
  border-color: #fff;
}

.guide-for-details .guide-main {
  margin-top: -30px;
}

.guide-for-details .guide-img {
  margin-bottom: 2rem;
}

.guide-for-contact .guide-for,
.guide-for-menus .guide-for,
.guide-for-actions .guide-for {
  -webkit-border-radius: 10015px;
  border-radius: 10015px;
}

.guide-for-contact .guide-for::before,
.guide-for-menus .guide-for::before,
.guide-for-actions .guide-for::before {
  -webkit-border-radius: 15px;
  border-radius: 15px;
}

.guide-for-contact .guide-main {
  margin-top: -40px;
}

.guide-for-contact .guide-img {
  margin-bottom: 1rem;
}

.guide-for-menus .guide-main {
  -webkit-transform: translateY(-100%);
  -ms-transform: translateY(-100%);
  transform: translateY(-100%);
}

.guide-for-menus .guide-btn {
  position: absolute;
  bottom: 15%;
  left: 0;
  right: 0;
}

.guide-for-actions .guide-main {
  -webkit-transform: translateY(-100%);
  -ms-transform: translateY(-100%);
  transform: translateY(-100%);
  padding: 0 1rem;
}

.guide-for-actions .guide-btn {
  position: absolute;
  top: -1.5rem;
  left: 0;
  right: 0;
  -webkit-transform: translateY(-100%);
  -ms-transform: translateY(-100%);
  transform: translateY(-100%);
}

相关文章

  • 引导页页面制作

    关于引导页制作要点: 1、计算定位2、利用无限大的 border 属性 具体js: guide.js注意点:1、j...

  • APP启动引导页的制作,用ViewPager实现翻页动画

    Android网络与数据存储 第一章学习 一个启动引导页的制作#### 概要: 这次制作App的引导页,主要用到2...

  • App页面分类

    引导页(欢迎页) 过渡页(启动页) 加载页 沉浸式页面 功能页,eg: 登陆、注册,设置,发布… 列表页 正文页,...

  • KEEP引导页

    KEEP引导页 简介:一个好的引导页会使得用户体验大大提升,那么视频引导页是一个不错的创新,页面分为视频,logo...

  • h5页面制作速成技巧

    h5页面所带来惊艳的展示效果,使得h5页面制作受到越来越多企业和用户的欢迎,而在众多H5制作软件诞生以后,h5页面...

  • 电商案例列表页制作

    列表页制作 1). 列表页准备工作 列表页面是新的页面,我们需要新建 list.html 因为 列表页的 头部 和...

  • Android初级开发(四)——补充8、ViewPager的使用

    ViewPager常用来制作引导页,就是我们经常看到的打开一个APP后,出现的几个图片展示页面。本文做的小例子效果...

  • 引导页

    引导页是用户第一次使用app时,引导用户使用的页面,这个界面通常加载到进入界面的上面。我这个引导页是一个View,...

  • Swift present 与 push 跳转问题

    Swift 使用presentViewController 跳转页面后显示黑屏 原因:storyboard 制作页...

  • iOS 引导页 --LaunchIntroduction

    一、前言 引导页,一个酷炫的页面,基本上每个应用程序刚安装后启动的时候都会有一个引导页,用于引导用户使用APP,怎...

网友评论

      本文标题:引导页页面制作

      本文链接:https://www.haomeiwen.com/subject/dstslktx.html