ポートフォリオ作りたい
ポートフォリオを作りたい
まとめたいもの
- GitHub
- Zennの本
- 自作Chrome拡張機能
- noteの記事
背景
アピール的な意味
Twitterのプロフィール欄に上記のURLのどれか一つだけしか貼らないのはもったいない気がした。
記事などは厳密にはWORKSというよりかはそれに付随する物が多いが、「この人はこんな雰囲気で文章を書くのだなぁ」と知ってもらえればと思う。
自己満足
本来であれば他人に対してアピールするためのものであるが、僕の場合は定期的に振り返ってこれからも頑張るための原動力にしたい。
HTML、CSSを最近全然書いていないから復習がてら作成する。
ポトフォーリオかと思ってました。ポトフの親戚的な語呂だなぁ考えていたら違った。
参考にしたいもの
あくまでの参考にするのは一部のみ
VSCode風の表示。ソースコードをよく見ておきたい。
- ryota-shimajiri
- [GitHub Pagesを利用して簡単にポートフォリオを作ってみた(https://qiita.com/shimajiri/items/6b536f6ea4d68e920600)
Vim風の表示。デザインの参考に。
Slack風
表示したいもの
- Zennの本
- 自作Chrome拡張機能
- Storeのリンクと記事をセット
- noteの記事
- おすすめだけ
- GitHub
- 主なレポジトリのみ
- ポートフォリオのソースコード最終更新日時
- (もし自動で取得する何かがあれば)活動の最終日時
- 簡単なプロフィール
- 名前
- アイコン
- なんかひとこと
- 今使っている主な環境
- 表示できそうなアイコンがあればそれを使いたい
- 一応シェアボタン的なものをつけてみたい
ファビコンの作成
- TailwindCSS
- CSSフレームワーク
- Icons for Tailwind CSS
- TailwindInk
- Tailwind Color SHEDES GENERATOR
- tailblocks
-
公式ドキュメント
ctrl + k
で入力して検索すると、例(コード+表示結果)が出てくる!
- PurgeCSS
- 使われていないCSSをパージ
ファビコン
- GitHub
- Qiita
- Zenn
- note
管理の面からも、ファビコン取得して表示したほうが良さそう
仕様がいつ変わるかわからない&公式のAPIじゃないから配布されているリソースを使うことにした。
Vueでyamlの読み込み(Webpackの設定)
fsで怒られる関係で、js-yamlではなく、yaml-loaderを使う。
vue.config.jsのconfigureWebpack
でwebpackの設定を書ける。
module.exports = {
runtimeCompiler: true,
pages: {
index: {
entry: "src/main.js",
title: "eetann's portfolio"
}
},
configureWebpack: {
module: {
rules: [
{
test: /\.(yml|yaml)$/,
use: [
{
loader: require.resolve('json-loader')
},
{
loader: require.resolve('yaml-loader')
}
]
}
]
}
}
}
公式ドキュメントWorking with Webpack | Vue CLIに設定書いて新しいloaderの追加方法書いてあったので変更。
module.exports = {
chainWebpack: config => {
config.module
.rule('yaml')
.test(/\.ya?ml?$/)
.use('json-loader')
.loader('json-loader')
.end()
.use('yaml-loader')
.loader('yaml-loader')
.end()
},
}
Vue.js のやつを GitHub pages で公開する方法
GitHub Pages サイトの公開元を設定する - GitHub Docsによると、公開するブランチやフォルダー(rootか./docs
)を設定できるらしい。
./docs
に出力するために、vue.config.jsのoutputDir
を設定する。
また、デフォルトだと、publicPath: '/'
なので、相対パスにする=publicPath: './'
。
Configuration Reference | Vue CLI
新人にドヤ顔で説明できるか、今風フロントエンド開発ハンズオン(Git/Node.js/ES6/webpack4/Babel7) - Qiita
webpackやnpmコマンド、Babelとかいろんなことがわかりやすく説明されていて、めちゃくちゃ参考になった。人類の永久保存版では?
Vue.jsで画像パスを動的にする
Vueのv-bind:src=hoge.img_src
のようにやると、hoge.img_src
のパスがビルド前のものを示してしまう。
これを解決するには、v-bind:src="require('@/assets/' + bio.img_src).default"
のように指定すること。
参考
下記は、動的なパスの指定では動かない
進捗状況
2020/12/28 11:57
思っていたよりもきれいに表示できている!
Notionのギャラリービュー参考にしたら良いかも。
ヘッダーどうにかしたい
Worksの部分は↓を参考にした
VueとTailwindでモーダル
参考になりそう
VueJS Modal | Tailwind Starter Kit by Creative Tim
💡今の所のアイデア
ヘッダーに閉じるボタンがあるので、フッダーにはボタンはいらない。
- ヘッダー:名前
- フッダー:インストールリンク
- ボディー
- 画像
- タグ
- 説明
- 記事のリンク集
Vueの子コンポーネントすべて同じ表示問題
v-forの中の子コンポーネントの表示フラグが同じだと、表示フラグが立った度にすべての子コンポーネントが同時に表示されてしまう。
以下のように、表示フラグを立てる際にデータも渡すこと。
かなり端折って書いている。
親コンポーネント
MyModal
が子で、work
が子に渡すデータ、showModal
が表示フラグ
<div
v-for="work in works"
:key="work.added_date"
class="xl:w-1/4 md:w-1/2 p-4"
>
<div class="p-6 bg-gray-100 rounded-lg" v-on:click="openModal(work)">
ここをクリックすると子コンポーネント=モーダルが表示
</div>
<MyModal
v-if="showModal == work.release_date"
v-bind:work="work"
v-on:close="closeModal"
></MyModal>
</div>
import MyModal from "./MyModal.vue";
export default {
name: "MyWorks",
components: { MyModal },
data() {
return { works: [], showModal: "" };
},
methods: {
openModal(work) {
this.showModal = work.release_date;
},
closeModal() {
this.showModal = "";
},
},
};
Tailwind CSS で max-h-5/6 を使いたい
max-h-5
(= max-height: 1.25rem;
) とか、max-h-full
(= max-height: 100%;
) はあるが、max-h-5/6
(= max-height: max-height: 83.333333%;
) は無い。
Max-Height - Tailwind CSS に載っている通り、tailwind.config.js
に設定を加えれば良い。
定義されていない指定をすると狂うのでちゃんと確認し、無ければ自分で設定すること。
h-hoge
にはあってもmax-h-hoge
には無いのがたくさんあるので要注意。
Tailwind CSS で デフォルトのspacingを維持して新しい設定を加えたい。
h-1/10
のような新しいspacingを加えたいときは、theme
のspacing
ではなく、theme
のextend
のspacing
に設定を加える。
tailwind.config.js
の例
module.exports = {
theme: {
extend: {
spacing: {
'1/10': '10%',
},
},
},
}
進捗2021/01/04
モーダルを実装。
モーダルのメインの部分には、
- 使用画像
- タグ
- 一言説明
を表示。
加えて、それに関わるGitHubレポジトリや記事を今空けているところ表示したい。
ブログカードとして表示しようかと思ったけど、表示箇所が大きい&タイトル情報は上記の「一言説明」と重複して煩わしいので普通にリンクすることにする。
ヘッダー部分に名前表示すると
- 名前長くなったときの対処がしづらい
- モーダルを開く前の表示とレイアウトが異なる
ので、ボディーへ。
改善してみた
大画面
小画面
"Here!"の部分は、モーダルに表示する内容によって
- INSTALL
- READ MORE
とかいろいろ考えたけど、そこで条件分岐するのは面倒なのでHereにした。
英語的に妥当なのかは不明。
インライン要素一覧
インライン要素 - HTML: HyperText Markup Language | MDN
<button>
もインラインなのかぁ
インライン要素を右に寄せるときはそれを囲んでるやつにtext-right
(=text-align: right;
)
TailwindCSSでのclassの入れ替えをvim-swapでやるのがすごく便利。
これは後で記事に入れたい。
let g:swap#rules = deepcopy(g:swap#default_rules)
let g:swap#rules += [{
\ "filetype": ['html', 'vue'],
\ "delimiter": ['\s'],
\ "surrounds": ['class="', '"', 0],
\ },{
\ "filetype": ['html', 'vue'],
\ "delimiter": ['\s'],
\ "surrounds": ["class='", "'", 0],
\ }]
記事にした
まとめ記事書いた。
これ以降のポートフォリオ改善時に得られた知見は別のスクラップに書くと思う。