フロントエンド技術を語る会
黒神 / GIG inc.
総評
めっちゃよかった😂
最初からVue.js, Vuex,
vue-router, Webpackや
SSRできる仕組みなどが
取り込まれている
最高😂
<Transition/>コンポーネントを使えばページ遷移時のアニメーションを簡単に
実装できる
最高😂
<main>
<transition
name="router-transition"
enter-active-class="animated fadeIn"
leave-active-class="animated fadeOut"
>
<nuxt/>
</transition>
</main>
<style scoped>でスタイルをコンポーネント内に閉じ込めることができる。
他の要素に影響しない
最強😂
<style scoped>
.header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 2rem;
}
.logo {
font-size: 2rem;
font-weight: bold;
}
</style>
`$ nuxt generate`コマンドで静的なファイルを生成可能。あとはWebサーバーにアゲるだけ!
最高😂
共通箇所のコンポーネント化で管理しやすく。コンポーネントごとに担当を決めておけば共同開発も容易!
神😂
<template>
<div class="banner">
<router-link :to="`${ link }`">
<div class="banner__title">
<span class="en">{{ en }}</span>
<span class="ja">{{ ja }}</span>
</div>
</router-link>
</div>
</template>
npmからnuxt-sass-resources-loaderをインストールして、
nuxt.config.jsに数行追記するだけでOK!
modules: [
['nuxt-sass-resources-loader', [
'~/assets/sass/variabmixin.scssle.scss',
'~/assets/sass/',
]],
],
Vueファイルが肥大化してしまうと...
ページ内遷移用 のリンクとして設定
ページ外遷移、アンカーリンク、
クリックイベント用 のリンクとして設定
<router-link
to="/about/"
@click="closeMenu"
>
<span>About</span>
</router-link>
<router-link
to="/about/"
@click.native="closeMenu"
>
<span>About</span>
</router-link>
vue-slickなどで動的に生成される子要素に対しては
scoped用のdata-v属性が付与されない模様
data-v属性セレクタが動的に生成された要素の
小要素に付与されてしまう → スタイル無効
.photo__slider .slick-list[data-v-2a183b29] {
overflow: visible;
}
.photo__slider .slick-arrow[data-v-2a183b29] {
border: 0;
margin: 0;
padding: 0;
width: 38px;
height: 5px;
overflow: hidden;
text-indent: -9999px;
position: absolute;
bottom: -30px;
}
.photo__slider {
.slick-list {
overflow: visible;
}
.slick-arrow {
border: 0;
margin: 0;
padding: 0;
width: 38px;
height: 5px;
overflow: hidden;
text-indent: -9999px;
position: absolute;
bottom: -30px;
}
}
解決策
/deep/セレクタを指定すると、親要素にdata-vの属性セレクタが付与されるようになる → スタイルが効く!
.photo__slider[data-v-2a183b29] .slick-list {
overflow: visible;
}
.photo__slider[data-v-2a183b29] .slick-arrow {
border: 0;
margin: 0;
padding: 0;
width: 38px;
height: 5px;
overflow: hidden;
text-indent: -9999px;
position: absolute;
bottom: -30px;
}
.photo__slider /deep/ {
.slick-list {
overflow: visible;
}
.slick-arrow {
border: 0;
margin: 0;
padding: 0;
width: 38px;
height: 5px;
overflow: hidden;
text-indent: -9999px;
position: absolute;
bottom: -30px;
}
}
つくったもの配信してます!
@kokushing