< 記事共通の特徴 >

全デモのソース一式がダウンロード可能です。
ソース一式はローカル環境ですぐに使える構成になっています。

animateを使わないスムーズモーション01
(直線出現)

animateを使わないスムーズモーション03
(斜め直線出現)


animateを使わないスムーズモーション02
(直線出現:画面内出現)

画面内出現

解説

用途・理由

animateによるモーションは少し処理が重いため、CSSによりモーションを設定したい。
前記事のように、要素を画面外から出現させるのではなく、画面内から出現させたい。

表示範囲制限

子要素が親要素の範囲をはみ出した場合の動作は、CSSで設定できます。
親要素に overflow:hidden を設定すると、親要素の範囲を超えた子要素は非表示になります。

以下に簡単な例を示します。
 ※ 上側では、子要素が親要素の範囲を超えて表示されている一方、
 ※ 下側では、子要素が親要素の範囲内の表示になっていると思います。
親要素(demo01_parent)
子要素(demo01_Child)
親要素(demo01_parent.opt_add_hidden)
子要素(demo01_Child)
※ 下側の親要素に overflow: hidden を設定しています。
※ 上側の親要素には overflow を設定していないので、ブラウザに依存した動作となります。

上記例のコードは以下の通りです。
<!-- CSSの設定 -->
<style>
  .demo01_Parent {
    width: 200px;
    margin:  5px;
    padding: 10px;
    background: #44cc44;
  }
  .demo01_Parent.opt_add_hidden {
    overflow: hidden;
  }
  .demo01_Child {
    width:  300px;
    height:  60px;
    padding: 10px;
    background: #cc4444;
  }
</style>

<!-- HTML -->
<div class="demo01_Parent">
  親要素(demo01_parent)<br/>
  <div class="demo01_Child">子要素(demo01_Child)</div>
</div>

<div class="demo01_Parent opt_add_hidden">
  親要素(demo01_parent.opt_add_hidden)<br/>
  <div class="demo01_Child">子要素(demo01_Child)</div>
</div>

デモでは、limit_disp_inner_content により表示範囲を限定しています。
<div id="main_area">
  <div class="limit_disp_inner_content">
    <div class="block_design type01 ready appear_top"   ><p><span>↓</span></p></div><!-- block_design01 -->
    <div class="block_design type02 ready appear_right" ><p><span>←</span></p></div><!-- block_design01 -->
    <div class="block_design type04 ready appear_left"  ><p><span>→</span></p></div><!-- block_design01 -->
    <div class="block_design type03 ready appear_bottom"><p><span>↑</span></p></div><!-- block_design01 -->
  </div><!-- limit_disp_inner_content -->
</div><!-- main_area -->

デモのCSS設定は次の通りなので、
limit_disp_inner_content に含まれる要素は、width:520px の範囲内のみの表示となります。
#main_area {
  width:  560px;
  margin: 0 auto;
  padding: 20px;
  letter-spacing: -.40em;
}
/* ============================================== */
/* 登場モーション関連(画面内出現のための表示範囲限定) */
/* ============================================== */
#main_area .limit_disp_inner_content {
  overflow: hidden;
}
※ .limit_disp_inner_content のサイズは、#main_area の width:560px から padding の 20px×2=40px を引いた 520px になります。

まとめ

上記ポイントをまとめると、下記のようなコードになります。
<!DOCTYPE html>
<head>
  <title>animateを使わないスムーズモーション2(直線出現:画面内出現)</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<style>
  html, body { margin: 0; padding: 0; }
  .limit_disp_inner_content {
    height: 300px;
    overflow: hidden;
  }
  .motion_block {
    display: table;
    width: 100%;
    height: 300px;
    margin: 0 auto;
    background: #ccffcc;
    text-align: center;

    /* 移動にかける時間を設定(登場の速度) */
    -webkit-transition: all 5s ease;
    transition:         all 5s ease;

    /* 移動後の位置 */
    position: relative;
    top: 0;
  }
  .motion_block span {
    display: table-cell;
    font-size: 70px;
    vertical-align: middle;
  }
  .motion_block.ready {
    /* 移動前の位置 */
    top: 400px;
  }
</style>
</head>
<body>
  <div class="limit_disp_inner_content">
    <div class="motion_block ready"><span>↑-- Hello --↑</span></div><!-- motion_block -->
  </div><!-- limit_disp_inner_content -->
<script>
  $(document).ready(function() {
    $('.motion_block').removeClass('ready');
  });
</script>
</body>
</html>

animateを使わないスムーズモーション01
(直線出現)

animateを使わないスムーズモーション03
(斜め直線出現)