<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.0/anime.min.js"></script>

<div class="lang-select">
  <ul class="flex flex-column-nowrap">
    <li><a class="flex flex-ai-c"><span>KOR</span><span></span></a></li>
    <li class="flex-order-m1"><a class="flex flex-ai-c"><span>ENG</span><span></span></a></li>
  </ul>
</div>


<div class="top-bar flex flex">
  <nav class="menu-box-1">
    <ul class="flex height-100p">
      <li><a href="#" class="height-100p flex flex-ai-c relative">Bada Platform</a></li>
      <li><a href="#" class="height-100p flex flex-ai-c relative">Developers</a></li>
      <li><a href="#" class="height-100p flex flex-ai-c relative">Notice</a></li>
      <li>
        <a href="#" class="height-100p flex flex-ai-c relative">About Us</a>
        <ul></ul>
      </li>
    </ul>
  </nav>
</div>






<div style="margin-top:500px;"></div>

<div class="ship-ani-box active-on-visible" data-active-on-visible-callback-func-name="ShipAniBox__init">
  <div class="follow-path"><img src="http://www.badaplatform.org/images/main/icon_ship.png" alt=""></div>
  <div class="outerWrapper">
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg version="1.1" id="Isolation_Mode" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
         y="0px" width="476px" height="267px" viewBox="1.75 0.375 476 267" enable-background="new 1.75 0.375 476 267"
         xml:space="preserve">
      <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-8.4348" y1="7.8242" x2="339.801" y2="7.8242" gradientTransform="matrix(1.36 0 0 1.36 16.4391 122.2301)">
        <stop  offset="0" style="stop-color:#6A9AF0"/>
        <stop  offset="1" style="stop-color:#EEF4FE"/>
      </linearGradient>
      <path fill="#FFFFFF" stroke="url(#SVGID_1_)" stroke-width="10" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M11.768,8c0,0,24.444,139.932,229.214,153.464c207.453,13.712,230.786,96.28,230.786,96.28"/>
    </svg>
  </div>
</div>
<!-- //ship_road -->

<div class="img-box-1 active-on-visible">
  <div class="img-box">
    <img src="http://www.badaplatform.org/images/main/img_infra01.png" alt="">
  </div>
</div>

/* no */
body, ul, li {
  margin:0;
  padding:0;
  list-style:none;
}

/* lib */
.flex {
  display:flex;
}

.flex-column-nowrap {
  flex-flow:column nowrap;
}

.flex-order-m1 {
  order:-1;
}

.flex-ai-c {
  align-items:center;
}

.height-100p {
  height:100%;
}

.relative {
  position:relative;
}

/* cus */
.top-bar {
  height:100px;
}

.top-bar .menu-box-1 > ul > li > a::before {
  content:"";
  display:block;
  width:5px;
  height:5px;
  background-color:black;
  position:absolute;
  top:calc(50% - 20px);
  left:calc(50% - 2.5px);
  border-radius:50%;
  visibility:hidden;
  opacity:0;
  transition: opacity .4s, visibility .4s;
}

.top-bar .menu-box-1 > ul > li:hover > a::before {
  opacity:1;
  visibility:visible;
}

.top-bar .menu-box-1 > ul > li {
  position:relative;
}

.top-bar .menu-box-1 > ul > li > ul {
  background-color:red;
  top:100%;
  left:0;
  width:100%;
  height:100px;
  position:absolute;
  border:2px solid blue;
}

.top-bar .menu-box-1 > ul > li > ul::before {
  content:"";
  position:absolute;
  top:-7px;
  left:calc(50%);
  transform:translateX(-50%) rotate(45deg);
  width:10px;
  height:10px;
  background-color:red;
  border:2px solid blue;
  border-bottom-color:transparent;
  border-right-color:transparent;
}

.lang-select > ul > li > a > span:last-child {
  transition:transform 1s;
  font-size:5px;
}

.lang-select > ul > li:not(.flex-order-m1) > a > span:last-child {
  visibility:hidden;
}

.lang-select.active > ul > li > a > span:last-child {
  transform:rotate(180deg);
}

.lang-select {
  border:10px solid red;
  display:inline-block;
  border-radius:10px;
  height:22px;
  overflow:hidden;
  transition:height 1s;
}

.lang-select.active {
  height:42px;
}

.ship-ani-box {
  position: relative;
  width: 476px;
  height: 267px;
  border:20px solid red;
  margin:0 auto;
}

.ship-ani-box > .outerWrapper {
  width:100%;
  height:100%;
  position: relative;
}

.ship-ani-box > .follow-path {
  position: absolute;
  width: 51px;
  height: 20px;
  top: -12px;
  left: -23px;
  z-index: 99;
}

.img-box-1 {
  opacity:0;
  transform:translateY(-500px);
  transition:opacity 3s, transform 3s 1s;
}

.img-box-1.active {
  opacity:1;
  transform:translateY(0);
}
/* 발견되면 활성화시키는 라이브러리 시작 */
function ActiveOnVisible__init() {
    $(window).resize(ActiveOnVisible__initOffset);
    ActiveOnVisible__initOffset();

    $(window).scroll(ActiveOnVisible__checkAndActive);
    ActiveOnVisible__checkAndActive();
}

function ActiveOnVisible__initOffset() {
    $('.active-on-visible').each(function(index, node) {
        var $node = $(node);

        var offsetTop = $node.offset().top;
        $node.attr('data-active-on-visible-offsetTop', offsetTop);

        if ( !$node.attr('data-active-on-visible-diff-y') ) {
            $node.attr('data-active-on-visible-diff-y', '0');
        }

        if ( !$node.attr('data-active-on-visible-delay') ) {
            $node.attr('data-active-on-visible-delay', '0');
        }
    });

    ActiveOnVisible__checkAndActive();
}

function ActiveOnVisible__checkAndActive() { 
    $('.active-on-visible:not(.actived)').each(function(index, node) {
        var $node = $(node);

        var offsetTop = $node.attr('data-active-on-visible-offsetTop') * 1;
        var diffY = parseInt($node.attr('data-active-on-visible-diff-y'));
        var delay = parseInt($node.attr('data-active-on-visible-delay'));

        var callbackFuncName = $node.attr('data-active-on-visible-callback-func-name');

        if ( $(window).scrollTop() + $(window).height() + diffY > offsetTop ) {
            $node.addClass('actived');

            setTimeout(function() {
                $node.addClass('active');
                if ( window[callbackFuncName] ) {
                    window[callbackFuncName]($node);
                }
            }, delay);
        }
    });
}

$(function() {
    ActiveOnVisible__init();
})
/* 발견되면 활성화시키는 라이브러리 끝 */

function ShipAniBox__init() {
  var path = anime.path('.ship-ani-box path');

  var motionPath = anime({
    targets: '.ship-ani-box .follow-path',
    translateX: path('x'),
    translateY: path('y'),
    rotate: path('angle'),
    easing: 'easeInOutQuad',
    duration: 3000,
    loop: false 
  });
}

function LangSelect__init() {
  $('.lang-select').click(function() {
    $(this).toggleClass('active');
  });
  
  $('.lang-select > ul > li').click(function() {
    $(this).addClass('flex-order-m1');
    $(this).siblings('.flex-order-m1').removeClass('flex-order-m1');
  });
}

$(function() {
  LangSelect__init();
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.