jackmiwamiwa devblog

フロントエンドをメインに行ったことをまとめていくサイトになります。

IsometricSassを使って3D表現をやってみる

IsometricSassを使うとcssのみで3D表現できるので、それをいろいろとさわってみる。

参考url一覧

github

github.com

やっていることの参考url

IsometricSass

行ったこと

事前準備

HTML : html

CSS : sass(isometricがsassを使っているので、)

sassビルド : Easy Sass(参考url

isometricをローカルに入れる

https://github.com/MorganCaron/IsometricSass/blob/master/src/sass/_isometric.sassのファイルを自分のcssファイルと同じ場所に入れる

ディレクト

f:id:jackswim3411:20190524195104p:plain

Context

html

<div class="isometric-container">
  <div class="isometric">
    2d <br>Isometric
  </div>
</div>

sass

@import isometric

結果

f:id:jackswim3411:20190524195246p:plain

Grid

html

<div class="isometric-container">
  <div class="isometric">
    <div class="grid"></div><!--ここを変更-->
  </div>
</div>

sass

@import isometric

// ここから追記
$size: 5rem

.grid
    +grid($size, 1%, mediumorchid)
    width: $size*5
    height: $size*5

自分の環境だと $size: 1rem だとサイズが小さくて見えなかったので、5remに変更。

結果

f:id:jackswim3411:20190524200602p:plain

Plane

html

<div class="isometric-container">
  <div class="isometric">
    <div class="plane"></div> <!--ここを変更-->
  </div>
</div>

sass

@import isometric

// ここから追記
$size: 5rem

.plane
  +plane($size, $size, darkcyan)

結果

f:id:jackswim3411:20190524231730p:plain

Border

html

<div class="isometric-container">
  <div class="isometric">
    <div class="plane"></div>
  </div>
</div>

sass

@import isometric

// ここから追記
$size: 5rem

.plane
  +plane($size, $size, darkcyan)
  +border(5px, black) //ここ追記

結果

f:id:jackswim3411:20190524231823p:plain

Edge

html

<div class="isometric-container">
  <div class="isometric">
    <div class="plane"></div>
  </div>
</div>

sass

@import isometric

// ここから追記
$size: 5rem

.plane
  +plane($size, $size, darkcyan)
  +edge(5px, darkcyan) //ここを変更

結果

f:id:jackswim3411:20190524232315p:plain

Shadow

html

<div class="isometric-container">
  <div class="isometric">
    <div class="plane"></div>
  </div>
</div>

sass

@import isometric

// ここから追記
$size: 5rem

.plane
  +plane($size, $size, darkcyan)
  +edge(5px, darkcyan) //ここを変更

結果

f:id:jackswim3411:20190524232315p:plain

Cube

<div class="isometric-container">
  <!--ここから変更-->
  <div class="isometric">
    <div class="cube">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </div>
</div>

sass

@import isometric

$size: 5rem

// ここから追記
.cube
  +cube($size, $size, $size, darkcyan)

結果

f:id:jackswim3411:20190524232623p:plain

Position

html

<div class="isometric-container">
  <div class="isometric">
    <div class="plane"></div>
    <div class="grid"></div>
  </div>
</div>

sass

@import isometric

$size: 5rem

.plane
  +plane($size, $size, darkcyan)
  //ここから
  top: $size
  left: $size*2
  transform: translateZ($size*.5)

.grid
    +grid($size, 1%, mediumorchid)
    width: $size*5
    height: $size*5

結果

f:id:jackswim3411:20190524234224p:plain

Animation

html

<div class="isometric-container">
  <div class="isometric">
    <div class="plane"></div>
    <div class="grid"></div>
  </div>
</div>

sass

@import isometric

$size: 5rem

.plane
  +plane($size, $size, darkcyan)
  +animation(planeAnimation, transform, translateZ(0), translateZ($size), 0s, 2s, alternate infinite) //animetion

.grid
  +grid($size, 1%, mediumorchid)
    width: $size*5
    height: $size*5

結果

f:id:jackswim3411:20190524233822p:plain

Move Shadow

html

<div class="isometric-container">
  <div class="isometric">
    <div class="plane"></div>
    <div class="grid"></div>
  </div>
</div>

sass

@import isometric

$size: 5rem

.plane
  +plane($size, $size, darkcyan)
  +animation(planeAnimation, transform, translateZ(0), translateZ($size), 0s, 2s, alternate infinite)
  +moveShadow(planeShadow, 0, $size, .2, .4, 0s, 2s, alternate infinite) //影のアニメーション

.grid
    +grid($size, 1%, mediumorchid)
    width: $size*5
    height: $size*5

結果

f:id:jackswim3411:20190524234146p:plain

Rotate

html

<div class="isometric-container">
  <div class="isometric">
    <div class="plane"></div>
    <div class="grid"></div>
  </div>
</div>

sass

@import isometric

$size: 5rem

.plane
  +plane($size, $size, darkcyan)
  +animation(planeAnimation, transform, translateZ(0), translateZ($size), 0s, 2s, alternate infinite)
  +moveShadow(planeShadow, 0, $size, .2, .4, 0s, 2s, alternate infinite)
  +rotate(planeRotate, 0deg, 360deg, 0s, 7s) //回転のアニメーション

.grid
    +grid($size, 1%, mediumorchid)
    width: $size*5
    height: $size*5

結果

f:id:jackswim3411:20190524234339p:plain

実行させてみて

さわっていけば画像のところまでいけるらしいので、これからもちょこちょこさわっていきたい。

f:id:jackswim3411:20190524234421p:plain

ドキュメントのものがsassしかないので、自分用とかにscssstylusも作っていきたい。

scss版

github.com