4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NuxtでTrianglifyを使う

Last updated at Posted at 2020-04-07

概要

Nuxt(とvuetify)で作成しているページの背景にTrianglifyを利用しようとしたところ、ドキュメントが見つかりませんでした。
なんとか実装できたため、メモとして残しておきます。

Trianglify

Trianglifyとは美しいポリゴンっぽい画像を生成してくれるライブラリです。
CDNとnpm両方で提供されています。

スクリーンショット 2020-04-07 23.55.26.png http://qrohlf.com/trianglify/

CDN

CDNから呼び出す際はnuxt.config.jsheadに書き込みます。

nuxt.config.js
head: {
  script: [{ src: 'https://cdnjs.cloudflare.com/ajax/libs/trianglify/2.0.0/trianglify.min.js' }]
},

背景に当てたいので、layout/default.vueで利用します。

layout/default.vue
<template>
  <v-app id="background">
    <v-content>
      <v-container>
        <nuxt />
      </v-container>
    </v-content>
  </v-app>
</template>

<script>
export default {
  mounted() {
    this.addTriangleTo(document.getElementById('background'))
  },
  methods: {
    addTriangleTo(target) {
      const dimensions = target.getClientRects()[0]
      const pattern = Trianglify({
        width: dimensions.width,
        height: dimensions.height
      })
      target.style['background-image'] = 'url(' + pattern.png() + ')'
    }
  }
}
</script>

これでもできたのですが、Trianglify is not definedと怒れることが時々あったり、、、。
多分よくない書き方だと思います。

npm

npmで落とした物を利用する際は一度pluginにします。


npm install trianglify --save
plugins/trianglify.js
import Vue from 'vue'
import Trianglify from '../node_modules/trianglify/dist/trianglify.min.js'

Vue.prototype.$addTriangleTo = (target) => {
  const dimensions = target.getClientRects()[0]
  const pattern = Trianglify({
    width: dimensions.width,
    height: dimensions.height
  })
  target.style['background-image'] = 'url(' + pattern.png() + ')'
}

pluginを有効化します。

nuxt.config.js

plugins: ['~/plugins/trianglify.js'],

同じくlayout/default.vueで当てます。

layouts/default.vue

<template>
  <v-app id="background">
    <v-content>
      <v-container>
        <nuxt />
      </v-container>
    </v-content>
  </v-app>
</template>

<script>
export default {
  mounted() {
    this.$addTriangleTo(document.getElementById('background'))
  }
}
</script>

これでいい感じの背景を設定することができました。

Trianglifyを背景にして作成したサービス

https://nvimc-generator.web.app/
(作成中)

参考

https://github.com/qrohlf/trianglify
https://github.com/qrohlf/trianglify/blob/master/examples/basic-web-example.html
https://hacknote.jp/archives/26679/

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?