client/components/PhotoList.vue (68 lines of code) (raw):

<template> <div> <h1>Photo</h1> <div class="row"> <div v-for="item in items" :key="item.href"> <div class="col-xs-3"> <a :href="item.href" data-lightbox="image" :data-title="item.title" :onClick="item.ga" class="photo" > <picture> <source :srcset="item.mini_webp" type="image/webp"> <img class="img-responsive img-rounded" :src="item.mini" :alt="item.alt"> </picture> </a> </div> </div> </div> </div> </template> <script> const genarateGA = (title) => { return `ga('send', 'event', 'photo', 'photo', '${title}')` } export default { data () { return { items: [ { href: require('~/assets/images/aoshima.jpg'), title: 'サンメッセ日南', ga: genarateGA('sanmesse'), mini: require('~/assets/images/aoshima_mini.jpg'), mini_webp: require('~/assets/images/aoshima_mini.jpg?webp'), alt: 'サンメッセ日南' }, { href: require('~/assets/images/fushimi.jpg'), title: '伏見稲荷神社', alt: '伏見稲荷神社', ga: genarateGA('hushimi'), mini: require('~/assets/images/fushimi_mini.jpg'), mini_webp: require('~/assets/images/fushimi_mini.jpg?webp') }, { href: require('~/assets/images/takatiho.jpg'), title: '高千穂峡', alt: '高千穂峡', ga: genarateGA('takachiho'), mini: require('~/assets/images/takatiho_mini.jpg'), mini_webp: require('~/assets/images/takatiho_mini.jpg?webp') }, { href: require('~/assets/images/kirishima.jpg'), title: '霧島', alt: '霧島', ga: genarateGA('kirishima'), mini: require('~/assets/images/kirishima_mini.jpg'), mini_webp: require('~/assets/images/kirishima_mini.jpg?webp') } ] } } } </script>