tag:crieit.net,2005:https://crieit.net/tags/CSS/feed 「CSS」の記事 - Crieit Crieitでタグ「CSS」に投稿された最近の記事 2022-04-28T00:04:15+09:00 https://crieit.net/tags/CSS/feed tag:crieit.net,2005:PublicArticle/18178 2022-04-28T00:04:15+09:00 2022-04-28T00:04:15+09:00 https://crieit.net/posts/bootstrap5-scroll-margin-top-darkmode-parallax-demo-20220430 Bootstrap 5 + scroll-margin-top + ダークモード + パララックス についてメモ <h2 id="経緯"><a href="#%E7%B5%8C%E7%B7%AF">経緯</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://labor.ewigleere.net/">Bootstrap 5 で JavaScript の記述なしにアンカーリンクへのアニメーション付きスクロールが <code>scroll-behavior</code> で実装されていることを最小限構成で確認した</a>ので、改めて Bootstrap 5 で検証したいと思います。</p> <h2 id="デモ"><a href="#%E3%83%87%E3%83%A2">デモ</a></h2> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://arm-band.github.io/test-scroll-mt-vault-celestia/">Home - Vault Celestia</a></li> </ul> <p>早速ですがデモを。</p> <h2 id="scroll-margin-top"><a href="#scroll-margin-top">scroll-margin-top</a></h2> <p>上述の通り、 Bootostrap 5 ではアンカーリンクへのアニメーション付きスクロールは <code>scroll-behavior: smooth;</code> で実装されているのでこの部分はそちらに任せて、 <code>scroll-margin-top</code> のみ自前で記述。</p> <pre><code class="scss">// foundation/_variable.scss $navbar-height: 56px; /* css変数 + Scss変数 */ :root { --navbar-height: #{$navbar-height}; } // object/utility/_u-ssnapmt.scss .u-ssnapmt { scroll-margin-top: var(--navbar-height); } </code></pre> <p>今回は css変数 + Scss の併用で記述してみました。</p> <h2 id="css変数 + ページごとのキービジュアル画像の変更"><a href="#css%E5%A4%89%E6%95%B0+%2B+%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%94%E3%81%A8%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E7%94%BB%E5%83%8F%E3%81%AE%E5%A4%89%E6%9B%B4">css変数 + ページごとのキービジュアル画像の変更</a></h2> <p>キービジュアル (ページ最上部にある画像 + 見出し + キャッチコピー等のパーツ) の背景画像について、ページごとに異なる画像を表示させたい、というのはよくある話だとは思います。</p> <pre><code class="html"><head> <style> .c-eyecatch { /* css変数で キービジュアル の画像をページごとに切替 */ background-image: var(--img); } </style> </head> <body> <!-- css変数で キービジュアル の画像をページごとに切替 --> <div class="p-3 p-sm-5 c-eyecatch" style="--img:url('https://source.unsplash.com/ROVBDer29PQ/1920x1080')"> <div class="container"> <h1 class="display-4">ほげ</h1> <p class="lead">ふがふが</p> </div> </div> <main class="l-main"> <section class="container py-5"> <h1 class="display-4">ぴよ</h1> <p>ほげら</p> </section> <!-- 流用 --> <div class="p-3 p-sm-5 mb-4 c-eyecatch" style="--img:url('https://source.unsplash.com/lNxMcE8mvIM/1920x1080')"></div> </body> </code></pre> <p>今回は css変数 を使って</p> <ul> <li>予め <code>head</code>タグ 内の <code>style</code>タグ では <code>background-image: var(--img);</code> でcss変数で指定しておく</li> <li>各要素で変数の値を都度差し替える</li> </ul> <p>という形で画像を切り替える形式を採ってみました。</p> <p>なお、今回はデモなので Jumbotron風 の実装で。</p> <h2 id="ダークモード"><a href="#%E3%83%80%E3%83%BC%E3%82%AF%E3%83%A2%E3%83%BC%E3%83%89">ダークモード</a></h2> <pre><code class="scss">// layout/_l-main.scss @charset "utf-8"; @use "../foundation" as f; .l-main { background-color: f.$bg-color; color: f.$color; #dark > & { /* ダークモード対応 */ @media (prefers-color-scheme: dark) { background-color: f.$color; color: f.$bg-color; } } } </code></pre> <p>メディアクエリ <code>@media (prefers-color-scheme: dark)</code> によるダークモードを試しに記述。</p> <p>ブログのような色に対して中立性の高いコンテンツの場合は使えそうですが、ブランドカラーが決まっている場合は難しそうな感。</p> <p>個人的には基本ダークモードの方がありがたいのですが……。</p> <h2 id="パララックス"><a href="#%E3%83%91%E3%83%A9%E3%83%A9%E3%83%83%E3%82%AF%E3%82%B9">パララックス</a></h2> <p>最後はパララックス。これについてはパッケージを利用しました。</p> <pre><code class="json"> "dependencies": { "ukiyojs": "^3.0.0" }, </code></pre> <pre><code class="js">import Ukiyo from 'ukiyojs'; window.addEventListener( 'load', () => { const ukiyoParallaxes = document.querySelectorAll( '.ukiyo' ); ukiyoParallaxes.forEach( ( ukiyoParallax ) => { new Ukiyo( ukiyoParallax, { scale: 1.75, speed: 1.75, } ); }); }); </code></pre> <p>公式のドキュメント通りです。</p> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/yitengjun/ukiyo-js">GitHub - yitengjun\/ukiyo-js: ⛰️Modern parallax library for picture elements and any images</a></li> </ul> <p>検索すると自前実装も出てくるのですが、後々を考えるとパッケージの方が良さそうな気がするので。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <h3 id="scroll-margin-top"><a href="#scroll-margin-top">scroll-margin-top</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.aizulab.com/blog/sticky-header-overlap/">アンカーリンクの遷移先が隠れる…。追従ヘッダーの重なりを回避するCSS | 会津ラボ</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://tech.arms-soft.co.jp/entry/2020/01/29/090000">アンカーリンクのズレをscroll-snapを使って直せるか試してみた - arms inc. Engineers' Blog</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://wb-hp.com/blog/2021/10/04/google-ie-support-ended.html">scroll-margin-top でヘッダー固定されたページのアンカーリンクの座標を調整する | ホワイトボードオフィシャルブログ</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://zenn.dev/catnose99/articles/75d3c69bf71bad">【追記: Safariでも動くようになった!】scroll-margin-topがsafariでうまく効かない問題と現状のワークアラウンド</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Web/CSS/scroll-margin-top">scroll-margin-top - CSS: カスケーディングスタイルシート | MDN</a></li> </ul> <h3 id="Bootstrap 5 での jumbotron"><a href="#Bootstrap+5+%E3%81%A7%E3%81%AE+jumbotron">Bootstrap 5 での jumbotron</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://bootstrap-guide.com/sample/jumbotron-bgimage">背景が画像のジャンボトロンの実例~Bootstrap5設置ガイド</a></li> </ul> <h3 id="css変数 で背景画像指定"><a href="#css%E5%A4%89%E6%95%B0+%E3%81%A7%E8%83%8C%E6%99%AF%E7%94%BB%E5%83%8F%E6%8C%87%E5%AE%9A">css変数 で背景画像指定</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/sygnas/items/5a08d2462b6fc46850d7">CSS変数でbackground-imageを指定するとChromeとSafariで挙動が異なるのを解決する - Qiita</a></li> </ul> <h3 id="ダークモード"><a href="#%E3%83%80%E3%83%BC%E3%82%AF%E3%83%A2%E3%83%BC%E3%83%89">ダークモード</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.webcreatorbox.com/tech/dark-mode">Webサイトをダークモードに対応させよう | Webクリエイターボックス</a></li> </ul> <h3 id="パララックス"><a href="#%E3%83%91%E3%83%A9%E3%83%A9%E3%83%83%E3%82%AF%E3%82%B9">パララックス</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://zenn.dev/nye/articles/b3cbcf347a0291">モダンアニメーションのパララックス(視差効果)背景のライブラリを作った</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/yitengjun/ukiyo-js">GitHub - yitengjun\/ukiyo-js: ⛰️Modern parallax library for picture elements and any images</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.npmjs.com/package/ukiyojs">ukiyojs - npm</a></li> </ul> arm-band tag:crieit.net,2005:PublicArticle/18177 2022-04-27T23:58:57+09:00 2022-04-27T23:58:57+09:00 https://crieit.net/posts/css-scroll-behavior-and-scroll-margin-top-note-20220428 (css) scroll-behavior と scroll-margin-top についてメモ <p>css の <code>scroll-behavior</code> と <code>scroll-margin-top</code> について検証したのでメモ。</p> <h2 id="経緯"><a href="#%E7%B5%8C%E7%B7%AF">経緯</a></h2> <p>Bootstrap 5 で何気なく検証をしていたら、特に何をしたわけでもないのに同一ページ内のアンカーリンクにアニメーション付きでスクロールしたので気になりました。</p> <p>自前の JavaScript では何も記述していないプレーンな状態だったので、 Bootstrap 5 の JavaScript かと思ったのですが、該当の CDN からの読み込みの <code>script</code>タグ を削除しても動作したので「すわ css 側か?」となり調べてみることにしました。</p> <h2 id="調査結果"><a href="#%E8%AA%BF%E6%9F%BB%E7%B5%90%E6%9E%9C">調査結果</a></h2> <p>結果、 <code>scroll-behavior</code>プロパティ に依るものと分かりました。具体的には、</p> <pre><code class="css">html { scroll-behavior: smooth; } </code></pre> <p>この記述でページ全体にスクロールアニメーションが付与されていました。</p> <p>しかも調べてみると、別ページのアンカーリンクに遷移する場合は</p> <ol> <li>ページ遷移</li> <li>遷移先のページでアンカーリンクまで自動的にアニメーション付きでスクロール</li> </ol> <p>という挙動をすることが分かりました。</p> <p>css で別ページのアンカーリンクまで対応しているのであれば、上述の挙動が気になる場合を除けばもはやこれ1つで済んでしまうのではないでしょうか……。</p> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://caniuse.com/?search=scroll-behavior">"scroll-behavior" | Can I use... Support tables for HTML5, CSS3, etc</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/yoshitake_1201/items/05a13fd77c18ff380eb6">iOSのバージョンと Safariバージョンの対応表(2022\/4\/6 現在 - Qiita</a></li> </ul> <p>注意点としては、 iOS Safari が15.4(2022/3/14リリース、2022/4/27記事執筆時点で最新版) のみサポートとなっているため、最新版以外の Safari のサポートが必要な場合は polyfill 等の代替手段を講じる必要性がありそうです。</p> <p>PJAX 等のデフォルトではない遷移をした際の挙動については未検証なので何ともですが少し気になります。</p> <p>それと、もう一点気になったのは Bootstrap のケースで言うとナビゲーションバーに <code>.fixed-top</code> を付けていた場合。つまりナビゲーションバーが画面上部に固定表示で追従するパターンですね。</p> <p>頻出するパターンですが、このケースでは工夫しないとアンカーリンク移動時にナビゲーションバーの裏側にコンテンツが隠れてしまうという課題がありました。</p> <p>かつてはこれを <code>margin-top: -80px; padding-top: 80px;</code> 等とネガティブマージンとパディングで調整・相殺するテクニックを使っていましたが……。</p> <h2 id="scroll-margin-top"><a href="#scroll-margin-top">scroll-margin-top</a></h2> <p>ここで兼ねてより目を付けていたのが <code>scroll-margin-top</code> 。 <code>scroll-snap</code> と呼ばれるスクロール時に特定の位置で止めたり誘導するプロパティの1つで、上述のアンカーリンク遷移時にナビゲーションバーの裏側に隠れてしまう問題を解決する方法として利用できます。</p> <pre><code class="css">.anchor-link { scroll-margin-top: 80px; } </code></pre> <p>これまで上述のようなネガティブマージョンとパディングの相殺や、あるいは <code>before</code>疑似要素 を利用した方法で調整していた手間が、上述の通り1行指定するだけで解決できます。</p> <p>css変数を使用するならば、</p> <pre><code class="css">:root { /* 変数定義 */ --navbar-height: 80px; } html { /* スムーススクロール */ scroll-behavior: smooth; } .header { /* ナビゲーションバーを上部固定表示 */ position: fixed; top: 0; left: 0; width: 100%; z-index: 10; /* css変数を使用して高さを指定 */ height: var(--navbar-height); } .main { /* スクロール可能なコンテンツ領域の上端部分はめり込むのでここは普通に margin-top でナビゲーションバー分下げる。css変数使用。 */ margin-top: var(--navbar-height); } .anchor-link { /* アンカーリンクが裏側に隠れるのを抑止。css変数使用。 */ scroll-margin-top: var(--navbar-height); } </code></pre> <p>このようなイメージですね。</p> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://caniuse.com/?search=scroll-margin-top">"scroll-margin-top" | Can I use... Support tables for HTML5, CSS3, etc</a></li> </ul> <p>ちなみにこちらは iOS Safari 14.7 以降で有効ですが、やはりそこそこ新しめの Safari である必要があるので、こちらもケースによっては注意が必要そうです。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <h3 id="scroll-behavior"><a href="#scroll-behavior">scroll-behavior</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://coliss.com/articles/build-websites/operation/work/scroll-page-smoothly-by-css-and-javascript.html">CSSだけでも実装できる!ページ内アンカーやページ上部にアニメーションでスクロールさせるCSS, JavaScriptのまとめ | コリス</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://web.havincoffee.com/design/2020/09/2009281.html#inpage-ank21">CSSでページ内リンクをなめらかにスクロールする|web design-havin' a coffee break|珈琲とウェブデザイン</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://caniuse.com/?search=scroll-behavior">"scroll-behavior" | Can I use... Support tables for HTML5, CSS3, etc</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/yoshitake_1201/items/05a13fd77c18ff380eb6">iOSのバージョンと Safariバージョンの対応表(2022\/4\/6 現在 - Qiita</a></li> </ul> <h3 id="ネガティブマージョンとパディングの調整"><a href="#%E3%83%8D%E3%82%AC%E3%83%86%E3%82%A3%E3%83%96%E3%83%9E%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%A8%E3%83%91%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%AE%E8%AA%BF%E6%95%B4">ネガティブマージョンとパディングの調整</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://designsupply-web.com/media/programming/1999/">ネガティブマージン・パディングで固定ヘッダー使用時のアンカーリンクに対応する</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.softel.co.jp/blogs/tech/archives/6083">【CSS】ページ内リンクのジャンプ先の位置を調整する at softelメモ</a> <ul> <li>疑似要素を使う手法もあり</li> </ul></li> </ul> <h3 id="scroll-margin-top"><a href="#scroll-margin-top">scroll-margin-top</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.aizulab.com/blog/sticky-header-overlap/">アンカーリンクの遷移先が隠れる…。追従ヘッダーの重なりを回避するCSS | 会津ラボ</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://tech.arms-soft.co.jp/entry/2020/01/29/090000">アンカーリンクのズレをscroll-snapを使って直せるか試してみた - arms inc. Engineers' Blog</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://wb-hp.com/blog/2021/10/04/google-ie-support-ended.html">scroll-margin-top でヘッダー固定されたページのアンカーリンクの座標を調整する | ホワイトボードオフィシャルブログ</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://zenn.dev/catnose99/articles/75d3c69bf71bad">【追記: Safariでも動くようになった!】scroll-margin-topがsafariでうまく効かない問題と現状のワークアラウンド</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Web/CSS/scroll-margin-top">scroll-margin-top - CSS: カスケーディングスタイルシート | MDN</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://caniuse.com/?search=scroll-margin-top">"scroll-margin-top" | Can I use... Support tables for HTML5, CSS3, etc</a></li> </ul> arm-band tag:crieit.net,2005:PublicArticle/18159 2022-04-03T12:30:16+09:00 2022-04-03T12:42:20+09:00 https://crieit.net/posts/CSS-624914c890151 CSSで文字をアニメーションさせる方法 <p>文字をアニメーションさせて目立たせるやり方です。</p> <p>見出しに使ったりワンポイントに使ったりいろいろできると思います。</p> <p>この記事では以下のpタグの文字をアニメーションさせていきます。</p> <pre><code><p id="text">あいうえお</p> </code></pre> <h2 id="文字の色を変える"><a href="#%E6%96%87%E5%AD%97%E3%81%AE%E8%89%B2%E3%82%92%E5%A4%89%E3%81%88%E3%82%8B">文字の色を変える</a></h2> <p><a href="https://crieit.now.sh/upload_images/3520c28939be4266608647d457cf6d6a6249130632cb5.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3520c28939be4266608647d457cf6d6a6249130632cb5.gif?mw=700" alt="image" /></a></p> <p>まずは簡単な色を変えるアニメーションです。</p> <pre><code class="css">#text { animation: color-loop 1s infinite; } @keyframes color-loop { 0% { color: red; } 50% { color: blue; } 100% { color: red; } } </code></pre> <p>「animation: color-loop 1s infinite」はcolor-loopを1秒間で繰り返し(infinite)行うという意味です。</p> <p>@keyframesは時間のどの割合の時に何を変更するかを指定します。赤から50%で青になり100%で赤に戻るという内容です。</p> <p>もちろんこの割合をもっと細かく設定したり色の数を増やしたりできます。</p> <h2 id="文字を拡大縮小させる"><a href="#%E6%96%87%E5%AD%97%E3%82%92%E6%8B%A1%E5%A4%A7%E7%B8%AE%E5%B0%8F%E3%81%95%E3%81%9B%E3%82%8B">文字を拡大縮小させる</a></h2> <p><a href="https://crieit.now.sh/upload_images/86b0d51084338445cae86902dcfa8d226249135893e1f.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/86b0d51084338445cae86902dcfa8d226249135893e1f.gif?mw=700" alt="image" /></a></p> <pre><code class="css">#text { display: inline-block; animation: scale-loop 1s infinite;; } @keyframes scale-loop { 0% { transform: scale(1, 1); } 50% { transform: scale(2, 2); } 100% { transform: scale(1, 1); } } </code></pre> <p>scale()で拡大縮小をさせることができます。拡大縮小したい倍率を指定すればOKです。(X方向 、Y方向)になっています。</p> <p>一つ注意なのが「display: inline-block」を指定しておく必要があることです。これが無いと変化する幅が文字列の幅より大きくなってしまいX軸方向で大きくずれてしまいます。</p> <h2 id="文字を回転させる"><a href="#%E6%96%87%E5%AD%97%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B">文字を回転させる</a></h2> <p><a href="https://crieit.now.sh/upload_images/9be7097c344163386497a613bc758b8262491383f0ec4.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9be7097c344163386497a613bc758b8262491383f0ec4.gif?mw=700" alt="image" /></a></p> <pre><code class="css">#text { display: inline-block; animation: rotate-loop 1s infinite linear; } @keyframes rotate-loop { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } </code></pre> <p>linearは変化を等間隔で変化するようにする指定です。</p> <p>scaleは度(degree)で指定します。マイナスの値にすると反対に回ります。</p> <h2 id="一文字ずつずらしてアニメーションさせる"><a href="#%E4%B8%80%E6%96%87%E5%AD%97%E3%81%9A%E3%81%A4%E3%81%9A%E3%82%89%E3%81%97%E3%81%A6%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%95%E3%81%9B%E3%82%8B">一文字ずつずらしてアニメーションさせる</a></h2> <p><a href="https://crieit.now.sh/upload_images/cf0f3ca9180595c73cd744d4cbeac62b6249140575b6a.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cf0f3ca9180595c73cd744d4cbeac62b6249140575b6a.gif?mw=700" alt="image" /></a></p> <p>最後に文字列を一文字ずつずらしてアニメーションさせてみます。</p> <p>まずはCSSはこんな感じです。</p> <pre><code class="css">#text { /*今回は無しです*/ } #text span { display: inline-block; animation: scale-loop 1s infinite linear; } #text span:nth-child(2) { animation-delay: 0.1s; } #text span:nth-child(3) { animation-delay: 0.2s; } #text span:nth-child(4) { animation-delay: 0.3s; } #text span:nth-child(5) { animation-delay: 0.4s; } </code></pre> <p>span:nth-child(n)は文字の数だけ用意しておきます。今回は5文字なので5までしか作っていません(1は遅らせる必要が無いのでありません)。</p> <p>animation-delayはアニメーションを遅らせたい時間です。</p> <p>次にjavascript。</p> <pre><code class="javascript">window.addEventListener("load", function(){ textAnimation(); }); function textAnimation(){ var elm = document.getElementById("text"); var text = elm.innerHTML; for(let i = 0; i < text.length; i++){ html += "<span>" + text[i] + "</span>" } elm.innerHTML = html; } </code></pre> <p>id=textの文字を取得して文字を分割してspanタグで挟んでいます。</p> <p>これで一文字ずつ指定した時間分遅れてアニメーションします。</p> <h3 id="javascriptだけでやってみた"><a href="#javascript%E3%81%A0%E3%81%91%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F">javascriptだけでやってみた</a></h3> <p>上のサンプルのjavascriptを改造してcssを減らして楽にできるようにしてみました。</p> <pre><code class="javascript">window.addEventListener("load", function(){ textAnimation("text", 0.1); }); function textAnimation(id, delayTime){ var elm = document.getElementById(id); if(!elm)return; var text = elm.innerHTML; elm.innerHTML = ""; for(let i = 0; i < text.length; i++){ const span = document.createElement('span'); const node = document.createTextNode(text[i]); span.appendChild(node); span.style.animationDelay = delayTime * i + 's'; elm.appendChild(span); } } </code></pre> <p>これならCSSの「span:nth-child(n)」の部分をわざわざ記述する必要が無くなってとても楽ちんです。</p> <p>引数でidと時間の間隔も指定できるようにしたので使い勝手もかなり良くなりました。</p> <h3 id="もうちょっと派手にしてみた"><a href="#%E3%82%82%E3%81%86%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E6%B4%BE%E6%89%8B%E3%81%AB%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F">もうちょっと派手にしてみた</a></h3> <p>最後に色も追加して派手に目立つようにしました。</p> <p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="xxpPYpG" data-user="inwan78" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;"> <span>See the Pen <a target="_blank" rel="nofollow noopener" href="https://codepen.io/inwan78/pen/xxpPYpG"> 文字アニメーション</a> by いんわん (<a target="_blank" rel="nofollow noopener" href="https://codepen.io/inwan78">@inwan78</a>) on <a target="_blank" rel="nofollow noopener" href="https://codepen.io">CodePen</a>.</span> </p> いんわん tag:crieit.net,2005:PublicArticle/18135 2022-03-05T23:05:27+09:00 2022-03-05T23:05:27+09:00 https://crieit.net/posts/stylelint-adjust-rgb-and-scss-20220305 stylelint 周りのアップデート (Scss対応、 rgb 指定) <p>久々にパッケージガーデニングしたら stylelint から Scss 関連や <code>rgb</code> の指定で怒られるようになってしまったので対処。</p> <h2 id="現象"><a href="#%E7%8F%BE%E8%B1%A1">現象</a></h2> <pre><code class="bash">$ stylelint ./src/scss/**/*.scss src/scss/global/_scssVariables.scss 19:19 ✖ Unexpected unknown function "color.scale" function-no-unknown 21:19 ✖ Unexpected unknown function "color.adjust" function-no-unknown 22:17 ✖ Unexpected unknown function "color.adjust" function-no-unknown 23:19 ✖ Unexpected unknown function "color.scale" function-no-unknown 24:20 ✖ Unexpected unknown function "color.scale" function-no-unknown src/scss/object/component/_c-button.scss 19:31 ✖ Expected modern color-function notation color-function-notation src/scss/_plugins/articlesns/_articlesns.scss 40:16 ✖ Unexpected unknown function "color.scale" function-no-unknown 53:31 ✖ Unexpected unknown function "map.get" function-no-unknown 57:35 ✖ Unexpected unknown function "color.scale" function-no-unknown 57:47 ✖ Unexpected unknown function "map.get" function-no-unknown 57:81 ✖ Unexpected unknown function "map.get" function-no-unknown </code></pre> <p>npmパッケージをアップデートした際に stylelint やそれに関連するパッケージ等をアップデートしたところ、いくつかの項目で怒られるようになってしまいました。</p> <p>この中で特に気になったのが <code>Expected modern color-function notation color-function-notation</code> のエラー。</p> <p><a target="_blank" rel="nofollow noopener" href="https://twitter.com/kaji2/status/1451433868863553536">かじさんはTwitterを使っています 「stylelint-config-standard の 23.0.0 アップデートで、 color-function-notation が 'modern' で追加された。 従来のコンマ区切りだったrgb()、rgba()をスペース区切りに揃えるもの。ついでにrgbaをrgbに揃えている。 https:\/\/t.co\/yHFngFOS8J」 \/ Twitter</a></p> <p>検索したところ、このツイートがヒット。</p> <p><code>stylelint-config-standard</code> のアップデートで色指定が引っかかるようになったようです。これは css level 4 の構文に対応したもののようです。</p> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://triple-underscore.github.io/css-color-ja.html#rgb-functions">CSS Color Module Level 4 (日本語訳)</a></li> </ul> <p>構文としては次のように変更になります。</p> <pre><code class="css">/* 旧来 */ .hoge { background-color: rgba(48, 48, 48, 0.5); } /* 新 */ .hoge { background-color: rgb(48 48 48 / 50%); } </code></pre> <ul> <li><code>rgb()</code> と <code>rgba()</code> から <code>rgb()</code> へ統一</li> <li>RGB値はカンマ区切りからスペース区切りへ</li> <li>RGB値とアルファ値の区切りはカンマからスラッシュへ</li> </ul> <p>一方、 Scss でも独自に <code>rgb()</code> が存在しています。このおかげで、 Scss で次のように色の指定でRGB値ではなく16進数や変数を使用しても問題が発生しないわけですね。</p> <pre><code class="scss">$black: #333; .hoge { background-color: rgba($black, 0.5); } </code></pre> <p>ただ、 Scss 側ではまだカンマ区切りしか対応していなさそうです。そのため、仮に css level 4 の構文を使用して Scss のトランスパイルを走らせると、次のようにエラーになってしまいます。</p> <pre><code class="bash">[hh:ii:ss] gulp-notify: [sass] Error: src\scss\object\component\_c-newscards.scss Error: Missing element $blue. ╷ 128 │ box-shadow: inset 2px 2px 5px 0 rgb(g.$us-main-color 0.5); │ ^^^^^^^^^^^^^^^^^^^^^^^^^ ╵ src\scss\object\component\_c-newscards.scss 128:37 @use src\scss\contents.scss 36:1 root stylesheet 19:31 ✖ Expected modern color-function notation color-function-notation </code></pre> <p>Scss の構文にすると stylelint でコケて、 stylelint のデオフォルトに従って css level 4 の構文にすると Scss のトランスパイルが通らない、と。</p> <h2 id="対処"><a href="#%E5%AF%BE%E5%87%A6">対処</a></h2> <p>仕方ないので、上述引用のツイートと同様に <code>color-function-notation</code> のパラメータを <code>legacy</code> にすることで回避することにしました。</p> <h3 id=".stylelint.json"><a href="#.stylelint.json">.stylelint.json</a></h3> <pre><code class="json"> "rules": { // 略 "color-function-notation": "legacy", // 略 } </code></pre> <h2 id="余談"><a href="#%E4%BD%99%E8%AB%87">余談</a></h2> <p>上述対処の前に他の回避方法がないか試す中で、一通りパッケージをアップデートしたりしましたがかえって Scss の関数等のエラーが出てしまったのは冒頭の通り。</p> <p>そこでそれらへの対応として次のようにしました。</p> <h3 id="package.json"><a href="#package.json">package.json</a></h3> <pre><code class="json"> "devDependencies": { // 略 "stylelint-config-standard-scss": "3.0.0", // 追加 // 略 } </code></pre> <h3 id=".stylelint.json"><a href="#.stylelint.json">.stylelint.json</a></h3> <pre><code class="json"> "extends": [ "stylelint-config-standard", "stylelint-config-standard-scss", // 追加 "stylelint-config-recommended-scss", "stylelint-config-prettier" ], </code></pre> <p>まず <code>stylelint-config-standard-scss</code> を追加。</p> <h3 id=".stylelint.json"><a href="#.stylelint.json">.stylelint.json</a></h3> <pre><code class="json"> "rules": { // 略 "at-rule-no-unknown": null, // Scss関数は stylelint-config-standard-scss に任せるようにしたため独自で追加していた設定は削除 "function-no-unknown": [ true, // map.get や color.scale 等 Dart Sass の関数は引っかかってしまうのでルールを追加 { "ignoreFunctions": [ "/^map\\..+/", "/^color\\..+/" ] } ], "scss/at-rule-no-unknown": true, // Scssのデフォルト関数以外は引っかかるようにする "scss/dollar-variable-pattern": "^(([a-z][a-zA-Z0-9_]+)|([a-z][a-z0-9]*)(-[a-zA-Z0-9_]+)*)$", // 互換性のためケバブケース強制は除去 "scss/at-mixin-pattern": "^(([a-z][a-zA-Z0-9_]+)|([a-z][a-z0-9]*)(-[a-zA-Z0-9_]+)*)$", // 互換性のためケバブケース強制は除去 "scss/at-mixin-argumentless-call-parentheses": "always" // 互換性のため引数なしのmixin呼び出しの際は括弧強制 "stylelint-config-standard-scss": "3.0.0", // 追加 // 略 } </code></pre> <p>その上で <code>.stylelint.json</code> のルールをいくつか変更しました。</p> <p>これで stylelint を走らせてエラーが出なくなったことを確認。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <h3 id="color-function-notation"><a href="#color-function-notation">color-function-notation</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://stylelint.io/user-guide/rules/list/color-function-notation/">color-function-notation | Stylelint</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://twitter.com/kaji2/status/1451433868863553536">かじさんはTwitterを使っています 「stylelint-config-standard の 23.0.0 アップデートで、 color-function-notation が 'modern' で追加された。 従来のコンマ区切りだったrgb()、rgba()をスペース区切りに揃えるもの。ついでにrgbaをrgbに揃えている。 https:\/\/t.co\/yHFngFOS8J」 \/ Twitter</a></li> </ul> <h3 id="css level 4"><a href="#css+level+4">css level 4</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://triple-underscore.github.io/css-color-ja.html#rgb-functions">CSS Color Module Level 4 (日本語訳)</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/66825515/getting-error-in-css-with-rgb0-0-0-15">Getting error in CSS with <code>rgb\(0 0 0 \/ 15%\)</code> - Stack Overflow</a> <ul> <li>似たようなケース</li> </ul></li> </ul> <h3 id="Scss 周りへの対応"><a href="#Scss+%E5%91%A8%E3%82%8A%E3%81%B8%E3%81%AE%E5%AF%BE%E5%BF%9C">Scss 周りへの対応</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/taqumo/items/2ed2cd7e35301d4aed8e">Stylelint 14.0.0 で Sass ファイルを lint させる方法 - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/stylelint-scss/stylelint-config-standard-scss">GitHub - stylelint-scss\/stylelint-config-standard-scss: The standard shareable SCSS config for Stylelint.</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://stylelint.io/user-guide/rules/list/at-rule-no-unknown/">at-rule-no-unknown | Stylelint</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://stylelint.io/user-guide/rules/list/function-no-unknown/">function-no-unknown | Stylelint</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/stylelint-scss/stylelint-scss/blob/master/src/rules/at-mixin-pattern/README.md">stylelint-scss\/README.md at master · stylelint-scss\/stylelint-scss · GitHub</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/shigemaruu/items/2e64fe0a425946a2e4a1">stylelint-config-sass-guidelinesの内容をメモする - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/stylelint-scss/stylelint-scss/blob/master/src/rules/at-mixin-argumentless-call-parentheses/README.md">stylelint-scss\/README.md at master · stylelint-scss\/stylelint-scss · GitHub</a></li> </ul> <h3 id="marked"><a href="#marked">marked</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://marked.js.org/">Marked Documentation</a></li> </ul> <p>パースする関数が <code>marked</code> から <code>marked.parse</code> メソッドに変更になっていた。</p> arm-band tag:crieit.net,2005:PublicArticle/17599 2021-08-14T13:55:16+09:00 2021-08-14T13:55:16+09:00 https://crieit.net/posts/how-to-restore-colors-of-web-twitter WEB版Twitterの色を元に戻すぞ <p>Twitterの仕様がまた変更されました。個人的には頻繁に仕様を変えて色々とっかえひっかえ試していき、より良いものを追求するという姿勢自体には賛成ですが、今回の仕様変更はちょっと困るなあ、という感じです。</p> <p>今回の仕様変更は配色の変更です。これはとても困ります。特に白と黒逆やろ!と思います。絶対間違えて誤フォローや誤フォロー解除が発生しまくるでしょう。なので、私の環境ではWEB版だけでも戻します。内容としては<a target="_blank" rel="nofollow noopener" href="https://boyi.sh/2021/04/18/hide-trends-and-topics-on-web-twitter/">WEB版Twitterのトレンドとかトピックを非表示にする</a>と同じようなことをします。</p> <p>使うのは<a target="_blank" rel="nofollow noopener" href="https://chrome.google.com/webstore/detail/stylebot/oiaejidbmkiecgbjeifoejpgmdaleoha?hl=ja">Stylebot</a>という拡張機能。分かる人向けに書くと、サイトごとに独自のCSSを記述して上書きして見た目を好きなように変更したり、見たくない要素を非表示にしたりできるというものです。</p> <p>Chromeの拡張機能ですが、対応するブラウザで使えます。私の場合はBraveというブラウザでも問題なく使用できています。Braveに関して興味があれば<a target="_blank" rel="nofollow noopener" href="https://boyi.sh/2021/06/02/changed-my-main-browser-from-chrome-to-brave/">メインブラウザをChromeからBraveに変えた話</a>をご覧ください。</p> <p>Stylebotで以下のコードを貼り付けてください。色は好みに合わせて自由にカスタマイズできます。詳しくはHTMLカラーコードなどでググってください。</p> <pre><code class="css">/* フォロー中の背景色 */ div.css-18t94o4.css-1dbjc4n.r-1niwhzg.r-1ccsd61.r-sdzlij.r-1phboty.r-rs99b7.r-15ysp7h.r-4wgw6l.r-1ny4l3l.r-ymttw5.r-o7ynqc.r-6416eg.r-lrvibr { background-color: #09f; } /* 保存の背景色 */ div.css-18t94o4.css-1dbjc4n.r-14lw9ot.r-42olwf.r-sdzlij.r-1phboty.r-rs99b7.r-16y2uox.r-6gpygo.r-1b7u577.r-peo1c.r-1ps3wis.r-1ny4l3l.r-1udh08x.r-1guathk.r-1udbk01.r-o7ynqc.r-6416eg.r-lrvibr.r-3s2u2q.r-1glkqn6 { background-color: #09f; } /* 保存の文字色 */ div.css-18t94o4.css-1dbjc4n.r-14lw9ot.r-42olwf.r-sdzlij.r-1phboty.r-rs99b7.r-16y2uox.r-6gpygo.r-1b7u577.r-peo1c.r-1ps3wis.r-1ny4l3l.r-1udh08x.r-1guathk.r-1udbk01.r-o7ynqc.r-6416eg.r-lrvibr.r-3s2u2q.r-1glkqn6 div { color: white } /* 未フォローの背景色 */ div.css-18t94o4.css-1dbjc4n.r-14lw9ot.r-42olwf.r-sdzlij.r-1phboty.r-rs99b7.r-15ysp7h.r-4wgw6l.r-1ny4l3l.r-ymttw5.r-o7ynqc.r-6416eg.r-lrvibr { background-color: transparent; border: solid 2px white; } /* 未フォローの文字色 */ div.css-18t94o4.css-1dbjc4n.r-14lw9ot.r-42olwf.r-sdzlij.r-1phboty.r-rs99b7.r-15ysp7h.r-4wgw6l.r-1ny4l3l.r-ymttw5.r-o7ynqc.r-6416eg.r-lrvibr div{ color: white; } </code></pre> <p>今回行ったのは、開発者モードで該当の要素を見つけ出してStylebotで設定の付与です。Stylebotでも要素選択は可能なのですが、開発者モードで行った方が小回りがきいてやりやすいです。</p> <p>本来は共通クラスのみ抜き出して少ない記述でやりたかったのですが、あまりにも面倒くさくてベタ書きしました。</p> <p>上記コードはTwiterの仕様変更で無効になる可能性がありますが、その時はまた同じことをすればいいです。</p> <p>それでは素敵なTwitterライフを!</p> あぱしょに tag:crieit.net,2005:PublicArticle/17421 2021-06-21T12:46:26+09:00 2021-06-21T12:46:26+09:00 https://crieit.net/posts/8bb4207027a3de2e506dd914483a2821 マウスについてくる動くボタン <p>今回はJavaScriptとCSSを使ってマウスについてきてクリックするとウインドウを閉じるボタンを作りたいと思います<br /> <a href="https://crieit.now.sh/upload_images/6749df862c4bf3dcd585f751a54a5c1c60c986131793f.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6749df862c4bf3dcd585f751a54a5c1c60c986131793f.jpg?mw=700" alt="イメージ図.jpg" /></a></p> <h3 id="コード"><a href="#%E3%82%B3%E3%83%BC%E3%83%89">コード</a></h3> <pre><code><!doctype html> <html> <head> <meta charset="UTF-8"> <title>sub</title> <script src="http://code.jquery.com/jquery-3.3.1.min.js" defer></script> </head> <!-- 背景を灰色に変更 --> <body style="background:#D0D7D0;"> <!-- ボタンの設定 --> <input id="move" onclick="window.close()" type="button" style="position: fixed;width:70px; height:70px; border-radius:100%; left:100px; top:100px;" /> <script> //現在のボタンのXY座標 var mX; var mY; //ボタンが移動した後の座標 var bmX = 0; var bmY = 0; //動く速度 var speed =10; //マウスを動かすとイベントが動く window.onmousemove = handleMouseMove; function handleMouseMove(event){ //マウスの座標を取得 mX = event.clientX -35; mY = event.clientY -35; //ボタンの移動の計算 bmX = (mX-bmX)/(Math.abs(mY-bmY)+Math.abs(mX-bmX))*speed+bmX; bmY = (mY-bmY)/(Math.abs(mY-bmY)+Math.abs(mX-bmX))*speed+bmY; //座標の更新 $("#move").css('left',bmX); $("#move").css('top',bmY); } </script> </body> </html> </code></pre> <h3 id="コードの説明"><a href="#%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E8%AA%AC%E6%98%8E">コードの説明</a></h3> <pre><code> <input id="move" onclick="window.close()" type="button" style="position: fixed;width:70px; height:70px; border-radius:100%; left:100px; top:100px;" /> </code></pre> <p>onclick="window.close()でこのボタンをクリックしたらウインドウを閉じる<br /> position: fixed;でボタンの配置の設定<br /> width:70px; height:70px;でボタンの大きさ<br /> border-radius:100%; でボタンの形を〇に変える<br /> left:100px; top:100px;でボタンの初期座標</p> <pre><code> id="move" </code></pre> <p>後で座標を変更するために名前を付ける</p> <pre><code>window.onmousemove = handleMouseMove; function handleMouseMove(event){ //中身 } </code></pre> <p>マウスが動いたときに中身のコードが動く</p> <pre><code>mX = event.clientX -35; mY = event.clientY -35; </code></pre> <p>ボタンの中心とマウスが重なるようにしたいのでボタンの大きさの半分を引いている</p> <pre><code>bmX = (mX-bmX)/(Math.abs(mY-bmY)+Math.abs(mX-bmX))*speed+bmX; bmY = (mY-bmY)/(Math.abs(mY-bmY)+Math.abs(mX-bmX))*speed+bmY; </code></pre> <p>移動の計算</p> <pre><code>$("#move").css('left',bmX); $("#move").css('top',bmY); </code></pre> <p>idがmoveの座標を変更</p> <h3 id="動作"><a href="#%E5%8B%95%E4%BD%9C">動作</a></h3> <p><a href="https://crieit.now.sh/upload_images/1bcb28a22408c5b7bddafb71cf9f7af760cfe97f33809.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1bcb28a22408c5b7bddafb71cf9f7af760cfe97f33809.gif?mw=700" alt="1624238423093.gif" /></a></p> <h3 id="参考サイト"><a href="#%E5%8F%82%E8%80%83%E3%82%B5%E3%82%A4%E3%83%88">参考サイト</a></h3> <p>マウスポインタの位置、座標を取得する - JavaScript プログラミング<br /> <a target="_blank" rel="nofollow noopener" href="https://www.ipentec.com/document/javascript-get-pointer-position">https://www.ipentec.com/document/javascript-get-pointer-position</a></p> fizz198 tag:crieit.net,2005:PublicArticle/17380 2021-06-09T23:40:35+09:00 2021-06-09T23:54:06+09:00 https://crieit.net/posts/CSS-60c0d2e3d02be CSSの基礎勉強 <h2 id="CSSの基礎文法"><a href="#CSS%E3%81%AE%E5%9F%BA%E7%A4%8E%E6%96%87%E6%B3%95">CSSの基礎文法</a></h2> <ul> <li>HTMLにstyleタグを記述する</li> </ul> <pre><code class="HTML"><style> h1 { color: red; } </style> </code></pre> <ul> <li>HTMLのタグの中にstyle属性を記述する</li> </ul> <pre><code class="HTML"> <p style="color: green;">あいうえお</p> </code></pre> <ul> <li>styleの継承:HTMLタグの親要素を指定してスタイルを記述した場合、子要素にもそのスタイルが受け継がれる。</li> </ul> <pre><code class="HTML"> <body> <h1>あいうえお</h1> <p>aiueo</p> </body> </code></pre> <pre><code class="CSS"> body {color:green; font-size:20px;} </code></pre> <p>bodyのスタイルが、その子要素(h1, p)に継承される。</p> <pre><code>あいうえお <p style="color: green; font-size:20px;">aiueo</p> </code></pre> <ul> <li>デフォルトでは、継承されないスタイルを継承されるようにするには、子要素のスタイルにinheritを指定する。</li> </ul> <pre><code class="CSS"> h1 { border: inherit; } </code></pre> <ul> <li>class属性を使ったスタイリング。CSSのセレクターで、.class名とする。</li> </ul> <pre><code class="HTML"> <p class="hoge"> こんにちは</p> </code></pre> <pre><code class="CSS"> .hoge { color:green; } </code></pre> <h3 id="ボックスモデル"><a href="#%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%83%A2%E3%83%87%E3%83%AB">ボックスモデル</a></h3> <p>HTMLの要素は全て<strong>ボックス</strong>という四角い領域を生成する。ボックスは大きくわけて、<strong>インライン</strong>と<strong>ブロック</strong>に分けられる。</p> <ul> <li><p><strong>インラインボックス</strong>:span,a,em,strong,imgといったタグで指定した要素は、インラインボックスを生成する。要素は、上下に並んでいく。インラインボックスでは、<code>width</code>や<code>height</code>を指定できない(置換要素と呼ばれるimg,input,textareaは指定できる)、上下の<code>margin</code>を指定できないという特徴がある。</p></li> <li><p><strong>ブロックボックス</strong>:table,h1,p,div,ul,liなどのタグで指定した要素はブロックボックスを生成する。要素は左に詰めて並んでいく。ブロックボックスでは、<code>width</code>や<code>height</code>を指定できる。また、<code>margin</code>や<code>padding</code>を指定できる。<strong>display</strong>プロパティを<strong>inline-block</strong>に変更することで、サイズの変更が可能となる。</p></li> </ul> <p>CSSでは、ボックスモデルという概念を理解する必要がある。これは、4つの領域で構成され、外側から順に、<strong>margin</strong>,<strong>border</strong>,<strong>padding</strong>,<strong>content</strong>となる。ボックスのサイズはこの4つの領域のサイズを足し合わせて算出される。</p> <p><a href="https://crieit.now.sh/upload_images/54fbca013a0511b1f854dacc392b359d60c0d42c48c5b.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/54fbca013a0511b1f854dacc392b359d60c0d42c48c5b.jpg?mw=700" alt="image" /></a></p> <ul> <li><strong>margin</strong>:ボックスの一番外側にある余白。<code>margin</code>でサイズを指定できる。垂直方向のmarginは相殺が起こる。<br /> <a href="https://crieit.now.sh/upload_images/54fbca013a0511b1f854dacc392b359d60c0d3e1b2a03.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/54fbca013a0511b1f854dacc392b359d60c0d3e1b2a03.jpg?mw=700" alt="image" /></a></li> <li><p><strong>border</strong>:marginの内側にある枠線。<code>border-width</code>でサイズを指定できる。</p></li> <li><p><strong>padding</strong>:contentとborderの間にある余白。枠線とコンテンツの余白となる。<code>padding</code>でサイズを指定できる。</p></li> <li><p><strong>content</strong>:要素そのものの内容が表示される領域。<code>width</code>と<code>height</code>でサイズを指定できる。</p></li> </ul> <h3 id="よく使うスタイル集"><a href="#%E3%82%88%E3%81%8F%E4%BD%BF%E3%81%86%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E9%9B%86">よく使うスタイル集</a></h3> <ul> <li><code>color</code>:色を変更する</li> </ul> <pre><code class="CSS"> h1{color: green;} </code></pre> <ul> <li><code>font-size</code>:フォントの大きさを変更する</li> </ul> <pre><code class="CSS"> h1{font-size:12px;} </code></pre> <ul> <li><code>font-weight</code>:フォントの太さを変更する</li> </ul> <pre><code class="CSS"> h1{font-weight:bold;} </code></pre> <ul> <li><code>text-align</code>:ブロック要素の位置を変更する</li> </ul> <pre><code class="CSS"> h1{text-align:center;} </code></pre> <ul> <li><code>text-decoration</code>:テキストに装飾線を表示する</li> </ul> <pre><code class="CSS"> h1{text-decoration:underline;} </code></pre> <ul> <li><code>font-family</code>:フォントを変更する。左から順に適用される。ユーザーのブラウザに指定したフォントが存在しない場合、一つ右のフォントを適用する。</li> </ul> <pre><code class="CSS"> h1{font-family:Verdana, 'Arial Black', メイリオ, sans-serif;} </code></pre> <ul> <li><code>line-height</code>:行ボックスの高さを指定する。指定の単位を<strong>em</strong>とした場合、font-sizeを係数倍した高さになる。また、単位を指定した場合は、子要素にも親要素で計算した高さが継承されるが、単位を指定しなかった場合は、子要素で高さは再計算される。</li> </ul> <pre><code class="CSS"> h1{line-height: 2em;} </code></pre> <ul> <li><code>vertical-align</code>: 行ボックス内のベースラインを基準に、テキストと同じボックス内の画像の上下位置を変更する。数値を指定した場合は、ベースラインから数値分離れた位置となる。</li> </ul> <pre><code class="CSS"> .img_a {vertical-align: top;} </code></pre> <ul> <li>リストのスタイル指定。<code>list-style-type</code>でリストの点を変更する。<code>list-style-position</code>でリストの点の位置を変更する。<code>list-style-image</code>でリストの点に画像を使用することができる。</li> </ul> <pre><code class="CSS"> ul { list-style-type: circle; list-style-position: inside; list-style-image: url(./img/icon.png); } </code></pre> <ul> <li><code>list-style</code>:リストのスタイルを一括指定する。imageとtypeの両方が指定された場合は、画像が優先される。list-styleの前に個別の指定をしていた場合、list-styleのデフォルトで上書きされる。</li> </ul> <pre><code class="CSS"> ul{list-style: circle inside url(../img/icon.png);} </code></pre> <ul> <li>ボックスを中央揃えにする。</li> </ul> <pre><code class="CSS"> .box { margin-left: auto; margin-right: auto; } </code></pre> <p>* <code>display</code>:ブロックの切り替えや、非表示化。</p> <pre><code class="CSS"> .box {display:none;} /*非表示*/ .box {display:inline-block;} /*インラインブロック化*/ </code></pre> <ul> <li><code>z-index</code>:要素の重なり順を制御。</li> </ul> <pre><code class="CSS"> .box {z-index: 1;} .box2 {z-index: 2;} </code></pre> <ul> <li><code>box-sizing</code>:width,heightの指定範囲を拡大する。</li> </ul> <pre><code class="CSS"> .box { box-sizing: border-box; /*borderを含む*/ width: 100px; height: 100px; } </code></pre> <ul> <li><code>calc()</code>:サイズの計算を行う。</li> </ul> <pre><code class="CSS"> .box{width: calc((100% - 20px) / 5);} </code></pre> k-s-p tag:crieit.net,2005:PublicArticle/17041 2021-04-30T14:10:13+09:00 2021-04-30T14:10:13+09:00 https://crieit.net/posts/f7bdabfbfedccccc4376c1e4a593ad8f 続・コードを書いてステータス画面を表示する <h1 id="続・コードを書いてステータス画面を表示する"><a href="#%E7%B6%9A%E3%83%BB%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%84%E3%81%A6%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E7%94%BB%E9%9D%A2%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B">続・コードを書いてステータス画面を表示する</a></h1> <p>※この内容は、2021年5月1日・2日の二日間、Maker Faire Kyoto 2021に併せてオンライン開催される「<a target="_blank" rel="nofollow noopener" href="https://makezine.jp/blog/2021/04/kidsprogramingpark.html">子どもプログラミングパーク</a>」の展示作品の一つとして書かれました。</p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3d4dByDutes1oinJ9l-X0PCXCdWFkOQIpi8dXojJzUyH-Aql_SlRjX_eb763AqprsXeozc2xQ-8LX0CPeXRwuPHIecWDyxna470CkUE2qRsXBzZvuAy443D0XVQRxtaExo0puazG56j746v7Kj6UBy75w=w1247-h627-no?authuser=0" alt="完成図" /></p> <h2 id="総説"><a href="#%E7%B7%8F%E8%AA%AC">総説</a></h2> <p>これは、Webブラウザに表示されたステータス画面の値を操作する、小さなサンプルコードです。<br /> このガイドテキストに沿ってコードを書き進めていくことで、ステータス画面を作成し、コンフィグ画面でステータスの値を操作することが出来るようになります。</p> <p><strong>サンプルコード:</strong><a target="_blank" rel="nofollow noopener" href="https://codesandbox.io/s/objective-volhard-ktrfs?file=/App.svelte">objective-volhard-ktrfs - CodeSandbox</a></p> <p>このガイドテキストを全て終えたプログラムは下記のようになります。</p> <p><strong>サンプルプログラム:</strong><a target="_blank" rel="nofollow noopener" href="https://svelte.dev/repl/2ad1f0ae67b7406e8beee9a2efbceda3?version=3.37.0">IamStronger • REPL • Svelte</a></p> <h2 id="ガイドテキスト"><a href="#%E3%82%AC%E3%82%A4%E3%83%89%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88">ガイドテキスト</a></h2> <p>このガイドテキストは次の3つのステップの順でコードを書き進めていきます。<br /> - Step.1 ステータス画面を作る<br /> - Step.2 スタイルシートを書く<br /> - Step.3 コンフィグ画面を作る</p> <p>各ステップごとのサンプルコードは、コピーして貼り付けても構いません。コードの内容をよく観察して、それぞれの関係について考えてみてください。</p> <h3 id="準備"><a href="#%E6%BA%96%E5%82%99">準備</a></h3> <p>サンプルコードを開いて、App.svelteファイルが表示されていることを確認します。</p> <p><strong>サンプルコード:</strong><a target="_blank" rel="nofollow noopener" href="https://codesandbox.io/s/objective-volhard-ktrfs?file=/App.svelte">objective-volhard-ktrfs - CodeSandbox</a></p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3eMPk7dFEqofdBKktGcLdBM0TjU0IAOG6F0EroSWh7mj14dOwT6iQTrTrsRvTybFs20gt4Oj84hizsSJGn-5uemIY3td8aKGyJfIC3_K9VW-Kh45jhKVRsC0ySI0WW1UtXDpx0thm3lUF8jJC-AoqNrPA=w1587-h484-no?authuser=0" alt="サンプルコードを開いた様子" /></p> <p>今回はこのApp.svelteファイルの25行目から下に書かれている内容を編集します。</p> <pre><code class="html"><!-- Step.1 ここにステータス画面を作ります --> <div class="status-view"> Step.1 ここにステータス画面を作ります </div> <!-- Step.3 スタイルシートを書いたら、ここにコンフィグ画面を作ります --> <div class="status-config"> Step.3 スタイルシートを書いたら、ここにコンフィグ画面を作ります </div> <!-- Step.2 ステータス画面を作ったら、ここにスタイルシートを書きます --> Step.2 ステータス画面を作ったら、ここにスタイルシートを書きます </code></pre> <p><strong>編集したファイルを保存するには、コントロールキーを押しながらSキーを押す【Ctrl+S】か、メニューバーから【File】を選択して【Save】をクリックします。</strong></p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3d12KVt26TRFGZAfX6CLsv1hQ6uTXtoSo3hfLTflbRf4y5x-VHu31pqSe8-MnxrTBRPUZq3j5L-C8y03R9bAI7CNCBQRGi2Dsxwj4WdkOSU6rzxN4kqsnxwyIRaXv_-1eZHXhX0bgmA4VnDKbeZliYTuw=w455-h152-no?authuser=0" alt="File Save" /></p> <p><strong>このサンプルコードは自由に編集しても大丈夫です。ページを再読込すると、元の内容に戻ります。</strong></p> <h3 id="Step.1 ステータス画面を作る"><a href="#Step.1+%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E7%94%BB%E9%9D%A2%E3%82%92%E4%BD%9C%E3%82%8B">Step.1 ステータス画面を作る</a></h3> <p>今回の目標はステータス画面を表示して、値を操作することです。</p> <p>まずは、ステータス画面に表示される内容を、HTMLで書きます。</p> <pre><code class="html"><!-- Step.1 ここにステータス画面を作ります --> <div class="status-view"> <div class="status-image"> {name}<br> <img src="/alienYellow.png" alt="character" /> </div> <div class="status-data"> Lv: {lv}<br> HP: {hp}/ {max_hp}<br> MP: {mp}/ {max_mp}<br> <br> AGI: {agi} STR: {str}<br> TEC: {tec} LUC: {luc} </div> <div class="status-text"> {text} </div> </div> </code></pre> <p>もし、ホームページを作ったことがあるなら、このコードを書きながら少し奇妙におもうかもしれません。bodyタグもhtmlタグも無いところに、突然divタグが始まっています。<br /> でも心配はありません。今回はWebアプリケーションを作っています。そして、ここではこういった書き方ができます。</p> <p>サンプルコードを書き終えると、このような画面になります。</p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3eKQjVuaUlGV9OP9RKP9Lg-d4BFmRsAn8xCVjRrM4GINKUWitlpD84zU6EpRCftwtDUxAyxxURcHNmQaDAkktCLwBX0Js0qMILyEV0d58mmVUd3DjhabemQKIoqL20REmwTudx9ow5uP2cLaU_tLArBTQ=w815-h440-no?authuser=0" alt="Step.1の確認" /></p> <h3 id="Step.2 スタイルシートを書く"><a href="#Step.2+%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%B7%E3%83%BC%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F">Step.2 スタイルシートを書く</a></h3> <p>今回の目標はステータス画面を表示して、値を操作することです。</p> <p>ステータス画面が、ステータス画面として見やすくなるように、スタイルシートで見た目を整える事ができます。</p> <p>次のコードを、ファイルの一番下に書きます。</p> <pre><code class="css"><!-- Step.2 ステータス画面を作ったら、ここにスタイルシートを書きます --> <style> .status-view { width: 320px; height: 240px; margin: 2em auto; padding: 1em; background-color: blue; color: white; display: flex; flex-wrap: wrap; text-shadow: 1px 1px black; font-family: monospace; font-size: 16px; } .status-image { width: 128px; } .status-data { flex-grow: 1; padding-left: 1em; } .status-text { width: 100%; padding: 0.5em; border: 2px ridge white; overflow: hidden; } img { display: block; margin: auto; } .status-config { width: 320px; margin: 1em auto 2em; padding: 1em; border: 1px solid black; line-height: 2em; } </style> </code></pre> <p>もし、ホームページを作ったことがあるなら、このコードを書きながら少し奇妙におもうかもしれません。ファイルの一番下に突然スタイルシートを書き始めて、cssファイルも読み込みません。</p> <p>でも心配はありません。今回はWebアプリケーションを作っています。そして、ここではこういった書き方ができます。</p> <p>サンプルコードを書き終えると、このような画面になります。</p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3eoR1XuNMbhWKQ2VqmRc9SDAUwNkgACF1e5aAvelgtTwfD6Q1s7WCInLFy-6E6RnNwak5uiXB7PDl4UPC6TWefO5gYM5E3LkchmC8nAv-oYuYWgY2ie1dilhsVSRtqpezh7s2QCWqUFT3jHO0bzwwTWRQ=w1100-h440-no?authuser=0" alt="Step.2の確認" /></p> <h3 id="Step.3 コンフィグ画面を作る"><a href="#Step.3+%E3%82%B3%E3%83%B3%E3%83%95%E3%82%A3%E3%82%B0%E7%94%BB%E9%9D%A2%E3%82%92%E4%BD%9C%E3%82%8B">Step.3 コンフィグ画面を作る</a></h3> <p>今回の目標はステータス画面を表示して、値を操作することです。</p> <p>作成したステータス画面の値を操作するために、コンフィグ画面を作ります。</p> <pre><code class="html"><!-- Step.3 スタイルシートを書いたら、ここにコンフィグ画面を作ります --> <div class="status-config"> config<br> name : <input type="text" maxlength="16" bind:value="{name}" /> <br> Lv : <input type="number" min="1" max="99" bind:value="{lv}" /> <br> hp: <input type="number" min="0" max="{max_hp}" bind:value={hp} /> mp: <input type="number" min="0" max="{max_mp}" bind:value={mp} /> <br> AGI: <input type="number" min="1" max="99" bind:value={agi} /> STR: <input type="number" min="1" max="99" bind:value={str} /> <br> TEC: <input type="number" min="1" max="99" bind:value={tec} /> LUC: <input type="number" min="1" max="99" bind:value={luc} /> <br> text : <br> <textarea bind:value="{text}"></textarea> </div> </code></pre> <p>もし、ホームページを作ったことがあるなら、このコードを書きながら少し奇妙におもうかもしれません。formタグもbuttonタグも無いし、valueの内容と画面に表示されている内容もぜんぜん違います。</p> <p>でも心配はありません。今回はWebアプリケーションを作っています。そして、ここではこういった書き方ができます。</p> <p>サンプルコードを書き終えると、このような画面になります。</p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3euAKSF1AWjs9Y6JtzQ8-8a0g7nwpUY6KIce6UP7hGjMJFsqWHDGTXl-irup3qiw5TJZIwOJ5CNEU_z3Rxu2HyHNfjEuu6rmarBx28D2XH-uDFy-4R-YARzp65ULouny3zGScoSgD1QYnPPmj7kHzP8CA=w1100-h451-no?authuser=0" alt="Step.3の確認" /></p> <h3 id="レッツプレイ 観察タイム"><a href="#%E3%83%AC%E3%83%83%E3%83%84%E3%83%97%E3%83%AC%E3%82%A4+%E8%A6%B3%E5%AF%9F%E3%82%BF%E3%82%A4%E3%83%A0">レッツプレイ 観察タイム</a></h3> <p>今回の目標はステータス画面を表示して、値を操作することです。</p> <p>そして、これまでの3つのステップで、この目標は達成されました。</p> <p>コンフィグ画面の値を操作して、ステータス画面の変化を確認してみてください。</p> <h3 id="ドキドキ 改造タイム"><a href="#%E3%83%89%E3%82%AD%E3%83%89%E3%82%AD+%E6%94%B9%E9%80%A0%E3%82%BF%E3%82%A4%E3%83%A0">ドキドキ 改造タイム</a></h3> <p>今回書いたコードをおさらいします。</p> <pre><code class="html"><!-- Step.1 ここにステータス画面を作ります --> <div class="status-view"> <div class="status-image"> {name}<br> <img src="/alienYellow.png" alt="character" /> </div> <div class="status-data"> Lv: {lv}<br> HP: {hp}/ {max_hp}<br> MP: {mp}/ {max_mp}<br> <br> AGI: {agi} STR: {str}<br> TEC: {tec} LUC: {luc} </div> <div class="status-text"> {text} </div> </div> <!-- Step.3 スタイルシートを書いたら、ここにコンフィグ画面を作ります --> <div class="status-config"> config<br> name : <input type="text" maxlength="16" bind:value="{name}" /> <br> Lv : <input type="number" min="1" max="99" bind:value="{lv}" /> <br> hp: <input type="number" min="0" max="{max_hp}" bind:value={hp} /> mp: <input type="number" min="0" max="{max_mp}" bind:value={mp} /> <br> AGI: <input type="number" min="1" max="99" bind:value={agi} /> STR: <input type="number" min="1" max="99" bind:value={str} /> <br> TEC: <input type="number" min="1" max="99" bind:value={tec} /> LUC: <input type="number" min="1" max="99" bind:value={luc} /> <br> text : <br> <textarea bind:value="{text}"></textarea> </div> <!-- Step.2 ステータス画面を作ったら、ここにスタイルシートを書きます --> <style> .status-view { width: 320px; height: 240px; margin: 2em auto; padding: 1em; background-color: blue; color: white; display: flex; flex-wrap: wrap; text-shadow: 1px 1px black; font-family: monospace; font-size: 16px; } .status-image { width: 128px; } .status-data { flex-grow: 1; padding-left: 1em; } .status-text { width: 100%; padding: 0.5em; border: 2px ridge white; overflow: hidden; } img { display: block; margin: auto; } .status-config { width: 320px; margin: 1em auto 2em; padding: 1em; border: 1px solid black; line-height: 2em; } </style> </code></pre> <p>思いつく限り、自由に改造してみてください。</p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3cmelku4N_7I29oP7zHRqHVEvKU11H0ZY-TAcx_gueIzuQf3fiGDUe-Lb6Wp8TzBDo6aBhzyBUpDAgQB8e5XjWV1p0O8OyZr_10JvrDlnvRcggRj-BNKUJiWNfpOlXsjbDgbnu1VEG5aQ2vBjlbcF0TzA=w412-h660-no?authuser=0" alt="完成図" /></p> <h2 id="解説 Webアプリケーション フレームワーク"><a href="#%E8%A7%A3%E8%AA%AC+Web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF">解説 Webアプリケーション フレームワーク</a></h2> <p>このサンプルコードはHTMLとCSSで書かれていますが、プログラム全体ではWebアプリケーションフレームワーク「Svelte」を使用しています。</p> <p>App.svelteファイルの構成は、上から順に、JavaScript、HTML、CSSとなっており、一つのファイルの中に必要な機能と要素そしてスタイルをまとめて書くことが出来ます。</p> <p>今回使用したSvelteには、実際に入力した内容を確かめながら学ぶことができるチュートリアルが用意されています。説明は英語ですが、短文で簡潔にまとめられているのでGoogle翻訳などで読んでも理解しやすい内容になっています。<br /> このサンプルプログラムで興味をもったら、ぜひ試してみて下さい。</p> <p>Hello world から始まります。</p> <p><a target="_blank" rel="nofollow noopener" href="https://svelte.dev/tutorial/basics">Introduction / Basics • Svelte Tutorial</a></p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3dyxjVh-Mt7ctmOAcQSv8CUTp31Fi-UkyfKzez43eCdm-VPHxMQsvZg4ffNQghE4fglG0cYYxuFC4DZLzLCnBeoeu0_xCrjmE6lH6L8TFkRXzSHNdJ3e-TPJYmKy12wINkNYiXE-fJ-sKpe5ZJJLIHbXg=w1231-h604-no?authuser=0" alt="Svelte Tutorial" /></p> <p>今回使用したSvelteの他にも、世界では様々なWebアプリケーションフレームワークが日々改良を重ねています。</p> <p>いますぐ自由に使えるものもいくつかありますので、実際に触って試してみて、自分にあったWebアプリケーションフレームワークを見つけてみてください。</p> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://svelte.dev/">Svelte • Cybernetically enhanced web apps</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://ja.reactjs.org/">React – ユーザインターフェース構築のための JavaScript ライブラリ</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://v3.ja.vuejs.org/">Vue.js</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://angular.jp/">Angular 日本語ドキュメンテーション</a></li> </ul> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3eQgVossbbmqlIJh0rqXIiiiQJan15IMIu2qv2x3LtCSRyIjIbYK6iAHtzXkxeXPqDNMT0gWt-KBRppybfCGyg5EYXCEku6TAEhRCr3gBDcBOlb5IQwysfCfjEKvpi3U4OfqPpkWeJX95CwRLVeZ-vj8Q=w1260-h685-no?authuser=0" alt="Svelte Web site" /></p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3djcsyBB1wYWzQL1wIi2ZtJYrC0Dz_BcvFGSXFWgdR5euxoI7tJSwhdS4BrU2tIQeHCl1b5bECB8Zn0jcJ_p_xPiKyvMlLMdJ41jT_nSZ7qXge6vejsqkA-CE_U84aALjXUkoYNGJgNEHuvPRWjBDjH-w=w1260-h685-no?authuser=0" alt="React Web site" /></p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3eaKq3uLZ1w7Id0_EbtmcdzpT9SKHCmg6i38oKY4z7ooq74zC5MMyzkiJJfuGg3T3sbfAiPYTwGByDbmJk7CXj55-PQUMtojmWC6suHVMoIHxQjUpw6PFys3SLoqLjBWPZlYrqtOwRj7gDmmr8C91N98Q=w1260-h685-no?authuser=0" alt="Vue.js Web site" /></p> <p><img src="https://lh3.googleusercontent.com/pw/ACtC-3da_cge23AaD0w54ecV-Y45UAWFAPBNuCOXOxBsVNkpZjVdyOxLCQQhcMdfsb6GiIWMZF9ESbB36gWm1xPLWs67aD1kKBiPABY1KGT6dXSD-TIxOA-frjVrjebO-QNm1suIRKEdDKijrylWuSGZAC3NMg=w1260-h685-no?authuser=0" alt="Angular Web site" /></p> fkuMnk tag:crieit.net,2005:PublicArticle/16860 2021-04-18T21:20:18+09:00 2021-04-18T21:20:18+09:00 https://crieit.net/posts/hide-trends-and-topics-on-web-twitter WEB版Twitterのトレンドとかトピックを非表示にする <p>TwitterのWEB版では、右側に「<strong>いまどうしてる?</strong>」(トレンド)や「<strong>おすすめユーザー</strong>」「<strong>おすすめトピック</strong>」などが表示されています。</p> <p><a href="https://crieit.now.sh/upload_images/65effe08f1a79b8612a3b12b55d32f4d607c236e54886.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/65effe08f1a79b8612a3b12b55d32f4d607c236e54886.jpg?mw=700" alt="001" /></a></p> <p>トレンドはともかく、トピックに関しては全然使っていないのでハッキリいって邪魔なんですよね。そもそも機能として不要と思うのですが、それに加えてフォローしていないトピックも突然TLに出てきて本当に邪魔です。不必要な情報が視界に入るとイライラするので消してしまいます。</p> <p>今回はGoogle Chromeで拡張機能を使用しますが、Microsoft EdgeやFirefoxなどもChromeの拡張機能を使用できるので、同じ方法で対応できます。</p> <p>使用する拡張機能は「Stylebot」という拡張機能です。</p> <p>手順は次の通りです。</p> <ol> <li>拡張機能「Stylebot」をインストール</li> <li>非表示にしたい部分を選択して非表示設定</li> </ol> <p>簡単ですね。</p> <p>まずは、<a target="_blank" rel="nofollow noopener" href="https://chrome.google.com/webstore/detail/stylebot/oiaejidbmkiecgbjeifoejpgmdaleoha?hl=ja">こちら</a>からアクセスし、「Chromeに追加」をクリックして有効化してください。</p> <p><a href="https://crieit.now.sh/upload_images/cd98267a2f4eaad828b5094c23951f48607c23831136c.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cd98267a2f4eaad828b5094c23951f48607c23831136c.jpg?mw=700" alt="002" /></a></p> <p>次に、Twitterを開いて、拡張機能より「Stylebot」を開きます。</p> <p><a href="https://crieit.now.sh/upload_images/363a77cfcbdd967c9a726185ca7380c6607c2398049a2.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/363a77cfcbdd967c9a726185ca7380c6607c2398049a2.jpg?mw=700" alt="003" /></a></p> <p><a href="https://crieit.now.sh/upload_images/176a09eea04e0c7b6a7f69a5f8eb16f5607c23a6b42d0.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/176a09eea04e0c7b6a7f69a5f8eb16f5607c23a6b42d0.jpg?mw=700" alt="004" /></a></p> <p>すると、次のような画面が開きます。</p> <p><a href="https://crieit.now.sh/upload_images/b88cad9daa78e0e5db8aaca4192ee206607c23c0ed61a.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b88cad9daa78e0e5db8aaca4192ee206607c23c0ed61a.jpg?mw=700" alt="005" /></a></p> <p>非表示にしたい項目を選択して、「レイアウト」の「隠す」を選択します。</p> <p><a href="https://crieit.now.sh/upload_images/196fd4c4281c826ce76ebfd172f11217607c23ce5bd48.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/196fd4c4281c826ce76ebfd172f11217607c23ce5bd48.jpg?mw=700" alt="006" /></a><br /> <a href="https://crieit.now.sh/upload_images/e5901628e902ce86a1c4dde554e40e23607c23d812d45.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e5901628e902ce86a1c4dde554e40e23607c23d812d45.jpg?mw=700" alt="007" /></a></p> <p>選択した「<strong>いまどうしてる?</strong>」が非表示になりました。</p> <p><a href="https://crieit.now.sh/upload_images/f4c4eee5776e9e0de0e5957a8bcad0ce607c23e427211.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f4c4eee5776e9e0de0e5957a8bcad0ce607c23e427211.jpg?mw=700" alt="008" /></a></p> <p>同様に他の項目を選択すると、スッキリしました。</p> <p><a href="https://crieit.now.sh/upload_images/a30e5e8f27015c7c3c311d898a99c7fb607c23f209ae8.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a30e5e8f27015c7c3c311d898a99c7fb607c23f209ae8.jpg?mw=700" alt="009" /></a></p> <p>この「Stylebot」は他にも文字の色などもカスタマイズすることができます。自分好みのTwitter環境にして、素敵なツイ廃ライフをどうぞ!</p> <p>ちなみに、手っ取り早く「<strong>いまどうしてる?</strong>」「<strong>おすすめユーザー</strong>」「<strong>おすすめトピック</strong>」を非表示にする場合、「Stylebot」の下の<code><> コード</code>のところに以下をコピペしてください。</p> <p>なお、Twitterの仕様などにより無効になったりレイアウトが崩れたりする可能性があります。</p> <pre><code class="css">.css-1dbjc4n.r-1ysxnx4.r-k0dy70.r-1867qdf.r-1phboty.r-rs99b7.r-1ifxtd0.r-1udh08x { display: none; } </code></pre> あぱしょに tag:crieit.net,2005:PublicArticle/16786 2021-03-28T18:20:44+09:00 2021-08-08T16:13:11+09:00 https://crieit.net/posts/VSCode-Web 【VSCode】拡張機能一覧(主にWeb系システム開発用) <p>個人用メモ。<br /> 主にPHPを使用して開発する環境で使用している拡張機能一覧。<br /> (他のも混じっているけど)<br /> (後で追加・変更・削除するかも)</p> <h1 id="VSCode"><a href="#VSCode">VSCode</a></h1> <ul> <li><p>Bookmarks<br />  あらかじめソースコード中にブックマークを設定しておくと、他の場所からブックマークまで一瞬で移動することが出来る。</p></li> <li><p>indent-rainbow<br />  インデントを色付きで表示してくれる。</p></li> <li><p>Japanese Language Pack for Visual Studio Code<br />  VSCodeの日本語化。</p></li> </ul> <h1 id="HTML"><a href="#HTML">HTML</a></h1> <ul> <li><p>Auto Close Tag<br />  自動的に閉じタグを追記してくれる。</p></li> <li><p>Auto Rename Tag<br />  タグを変更すると、対応する閉じタグを自動的に変更してくれる。</p></li> <li><p>HTML Snippets<br />  HTMLの予測変換を表示してくれる。</p></li> <li><p>HTMLHint<br />  HTMLの文法チェックをしてくれる。</p></li> </ul> <h1 id="PHP(Laravel)"><a href="#PHP%28Laravel%29">PHP(Laravel)</a></h1> <ul> <li><p>Bracket Pair Colorizer 2<br />  メソッドやArrayなどで、対となるカッコを色付きで表示してくれる。</p></li> <li><p>php cs fixer<br />  PHPソースを自動整形してくれる。<br />  ※別途、「php-cf-fixer.phar」のインストールが必要。</p></li> <li><p>PHP Debug<br />  PHPをステップ実行してデバッグできるようになる。</p></li> <li><p>PHP IntelliSense<br />  PHPの予測変換を表示してくれる。</p></li> </ul> <p>【2021.8.8 追加】<br /> * Laravel Blade Snippets<br />  Laravelのbladeファイル内のタグやディレクティブを色付きで表示してくれる。</p> <ul> <li>Laravel Blade formatter<br />  Laravelのbladeファイル用のフォーマッタ。<br />  blade独自のディレクティブもインデントしてくれる(これ重要)。</li> </ul> <h1 id="JavaScript(Node.js,Vue.js)"><a href="#JavaScript%28Node.js%2CVue.js%29">JavaScript(Node.js,Vue.js)</a></h1> <ul> <li><p>ESLint<br />  JavaScriptの構文チェックをリアルタイムで実行してくれる。<br />  ※Vue.jsで使用するには設定が必要。</p></li> <li><p>JavaScript (ES6) code snippets<br />  JavaScriptの予測変換を表示してくれる。</p></li> <li><p>Vetur<br />  Vue.jsコードのシンタックスハイライトやコード補完、リント、フォーマットを行ってくれる。</p></li> </ul> <h1 id="CSS(Sass,SCSS)"><a href="#CSS%28Sass%2CSCSS%29">CSS(Sass,SCSS)</a></h1> <ul> <li><p>IntelliSense for CSS class names in HTML<br />  CSSクラス名を入力するときに、入力補完してくれる。</p></li> <li><p>SCSS Formatter<br />  SCSSコードを自動整形してくれる。</p></li> </ul> <h1 id="その他"><a href="#%E3%81%9D%E3%81%AE%E4%BB%96">その他</a></h1> <ul> <li><p>Log File Highlighter<br />  ログファイルの内容を色付きで表示してくれる。</p></li> <li><p>MySQL<br />  VSCodeでMySQLを使用可能にする。</p></li> <li><p>Rainbow CSV<br />  CSVファイルをカラムごとに色分けして表示してくれる。</p></li> <li><p>Regex Previewer<br />  正規表現の実行結果をプレビュー表示してくれる。</p></li> <li><p>SFTP<br />  サーバへ自動的にソースファイルをアップロードしてくれる。</p></li> </ul> <h1 id="【参考】"><a href="#%E3%80%90%E5%8F%82%E8%80%83%E3%80%91">【参考】</a></h1> <p>「Visual Studio Code」をインストールしてPHPコードのデバッグ環境を設定する方法<br /> <a target="_blank" rel="nofollow noopener" href="https://incloop.com/visualstudiocodeのデバッグ設定/">https://incloop.com/visualstudiocodeのデバッグ設定/</a></p> <p>Visual Studio Codeで作るPHP開発環境のおすすめ拡張機能17選<br /> <a target="_blank" rel="nofollow noopener" href="https://wonwon-eater.com/vscode-php-plugin/">https://wonwon-eater.com/vscode-php-plugin/</a></p> <p>VScodeの日本語化ができない 変わらない時の対処法[Visual Studio Code]<br /> <a target="_blank" rel="nofollow noopener" href="https://rabotiku-sato.com/vscode-japanese-setting">https://rabotiku-sato.com/vscode-japanese-setting</a></p> <p>vscodeでVue.jsを書くときに使っているプラグインとか<br /> <a target="_blank" rel="nofollow noopener" href="https://qiita.com/dayoshix/items/c61a75a971331418c348">https://qiita.com/dayoshix/items/c61a75a971331418c348</a></p> <p>【HTML編】Visual Studio Code おすすめプラグイン紹介 #02<br /> <a target="_blank" rel="nofollow noopener" href="https://so-da.tech/tech/vscode/vscd3/">https://so-da.tech/tech/vscode/vscd3/</a></p> <p>VSCodeのAuto Rename Tagで閉じタグも自動変更<br /> <a target="_blank" rel="nofollow noopener" href="https://tech.pjin.jp/blog/2020/04/27/vscode_extension_auto_rename_tag/">https://tech.pjin.jp/blog/2020/04/27/vscode_extension_auto_rename_tag/</a></p> <p>VSCode で HTML の文法チェックを行う拡張機能 HTMLHint<br /> <a target="_blank" rel="nofollow noopener" href="https://loumo.jp/archives/26229">https://loumo.jp/archives/26229</a></p> <p>VSCode拡張機能『indent-rainbow』でインデントを虹色にする方法<br /> <a target="_blank" rel="nofollow noopener" href="https://onedarling.site/programming/tool/vscode-indent-rainbow/">https://onedarling.site/programming/tool/vscode-indent-rainbow/</a></p> <p>【2020年版】VSCodeでhtml/css/jsの拡張機能おすすめ<br /> <a target="_blank" rel="nofollow noopener" href="https://uetani33.net/vscode-web-extensions/#toc_id_3_2">https://uetani33.net/vscode-web-extensions/#toc_id_3_2</a></p> <p>VSCode使い必見!?使って便利な Visual Studio Code 拡張機能10選<br /> <a target="_blank" rel="nofollow noopener" href="https://www.geekfeed.co.jp/geekblog/vscode_extension">https://www.geekfeed.co.jp/geekblog/vscode_extension</a></p> <p>【超便利】VSCodeでMySQLを利用する方法<br /> <a target="_blank" rel="nofollow noopener" href="https://newmtube07.com/vscode-mysql/">https://newmtube07.com/vscode-mysql/</a></p> <p>[Visual Studio Code] PHPのコードを整形する「php cs fixer」の設定<br /> <a target="_blank" rel="nofollow noopener" href="https://www.searchlight8.com/visual-studio-code-php/">https://www.searchlight8.com/visual-studio-code-php/</a></p> <p>VSCode(Visual Studio Code)でSFTP・FTP経由でファイルを自動アップロードや同期できる拡張機能「SFTP」が超便利<br /> <a target="_blank" rel="nofollow noopener" href="https://www.karelie.net/vscode-sftp/">https://www.karelie.net/vscode-sftp/</a></p> <p>Windows10でVisual Studio Code + vue-cliの開発環境構築メモ<br /> <a target="_blank" rel="nofollow noopener" href="https://belhb.hateblo.jp/entry/2020/08/08/142540">https://belhb.hateblo.jp/entry/2020/08/08/142540</a></p> <p>【2021.8.8 追加】<br /> LaravelでVisual Studio Codeを使う時に入れておきたい拡張機能3選<br /> <a target="_blank" rel="nofollow noopener" href="https://biz.addisteria.com/laravel-vscode/">https://biz.addisteria.com/laravel-vscode/</a></p> <p>Laravel blade formatter VSCode Extensionを作った<br /> <a target="_blank" rel="nofollow noopener" href="https://shufo.dev/2020/10/03/published-vscode-blade-formatter/">https://shufo.dev/2020/10/03/published-vscode-blade-formatter/</a></p> <p>VSCodeでBladeテンプレートを整形する<br /> <a target="_blank" rel="nofollow noopener" href="https://blog.nplpl.com/310">https://blog.nplpl.com/310</a></p> acmz tag:crieit.net,2005:PublicArticle/16571 2021-01-09T12:23:32+09:00 2021-05-10T04:20:58+09:00 https://crieit.net/posts/Crieit-5ff921b4cf458 Crieit用ユーザスタイルシート <p><a target="_blank" rel="nofollow noopener" href="https://addons.mozilla.org/ja/firefox/addon/styl-us/">Stylus</a> でスタイル当ててみました。コード部分は等幅になっているのが好きなので……。</p> <pre><code class="css">pre, code { font-family: monospace !important; } p > code, li > code { color: #824 !important; } /* プレビューで hr が見えるように色を調整 */ .tui-editor-contents hr { border-top: 1px solid #ddd; } .hljs-comment { color: #99a; font-style: normal; } </code></pre> <hr /> <p>以下は見栄え確認用のサンプル。</p> <ul> <li>fdsa <code>fdsa</code> fdsa</li> </ul> <hr /> <p>fdsa <code>fdsa</code> fdsa</p> <p><a href="https://crieit.net/posts/Crieit-5ff921b4cf458">https://crieit.net/posts/Crieit-5ff921b4cf458</a></p> <pre><code class="ruby"># コメント </code></pre> sonota486 tag:crieit.net,2005:PublicArticle/16417 2020-12-24T00:53:23+09:00 2020-12-24T00:53:23+09:00 https://crieit.net/posts/HTML-CSS-JS-DOM ライブラリを使わず、HTML,CSS,JSのDOM操作でブロック崩しゲームを作る <p>・アドベントカレンダー<a href="https://crieit.net/advent-calendars/2020/crieit">なんでも</a> 12/24に投稿します。<br /> 記事内容は自分のブログに書いたのでこちらをご覧ください。<br /> (このアドベントカレンダー、crieitでしか記事公開できないと思わなかったので自分のブログに書いてしまいました!すみません!)</p> <p><strong><a target="_blank" rel="nofollow noopener" href="https://hothukurou.com/blog/?p=2286">ライブラリを使わず、HTML,CSS,JSのDOM操作でブロック崩しゲームを作る</a></strong></p> ほっとフクロウ(作っちゃうおじさん) tag:crieit.net,2005:PublicArticle/16171 2020-10-25T10:42:27+09:00 2020-10-25T10:58:23+09:00 https://crieit.net/posts/feature ポートフォリオのテンプレートのfeature部分 <h1 id="テキストが下に表示されてしまう"><a href="#%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%8C%E4%B8%8B%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86">テキストが下に表示されてしまう</a></h1> <p><a href="https://crieit.now.sh/upload_images/c6e8bbfab42a5ea14894897287ae96bf5f94dae11802f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c6e8bbfab42a5ea14894897287ae96bf5f94dae11802f.png?mw=700" alt="image" /></a></p> <h1 id="index.html"><a href="#index.html">index.html</a></h1> <pre><code class="html"> <!-- FEATUREセクション --> <section id="feature-section"> <div class="inner"> <div class="section-heading"> <h2 class="heading-primary">FEATURE</h2> </div> <div class="section-lead"> <p>1サイトの解説</p> </div> <div class="feature-item"> <div class="feature-img-wrapper"> <a href="https://www.yahoo.co.jp" target="_blank"> <img src="img/feature/feature.jpg" alt=""> </a> </div> <div class="feature-body"> <p><span class="text-bold">サイト名:</span> <br>サイト名が入る<br> <a href="#" target="_blank">https://●●●.com</a> </p> <p><span class="text-bold">担当:</span><br>Design / Coding (Responsive) / WordPress / Writing</p> <p><span class="text-bold">コメント:</span><br>テキストテキストテキストテキストテキストテキストテキストテキストテキスト<br>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト </p> <p> テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p> <p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p> <div class="clearfix"></div> </div><!-- ./feature-body --> </div><!-- ./feature-item --> </div><!-- ./inner --> </section> </code></pre> <h1 id="CSS"><a href="#CSS">CSS</a></h1> <p>floatを使ったパターンです。</p> <pre><code class="css">@charset "utf-8"; /* リセットCSS ----------------------------- */ html,body,h1,h2,ul,li{ margin: 0; padding: 0; line-height: 1; } img{ max-width: 100%; height: auto; vertical-align: bottom; border-style: none; } ul,li{ list-style: none; } a{ text-decoration: none; color: #1ca9e3; } /* body ----------------------------- */ body{ font-family: "Quicksand","Hiragino Kaku Gothic Pro","Meiryo",sans-serif; font-size: 15px; line-height: 1.8; letter-spacing: .8px; word-break: break-all; color: #333333; } /* 文字 ----------------------------- */ .heading-primary{ font-family: 'Josefin Sans',sans-serif; font-size: 40px; letter-spacing: .05em; } .section-heading{ text-align: center; margin-bottom: 20px; } .section-lead{ margin-bottom: 30px; text-align: center; } /* レイアウト ----------------------------- */ .inner{ max-width: 1380px; margin: 0 auto; padding: 0 40px; } /* header ----------------------------- */ header{ display: flex; align-items: center; justify-content: center; height: 86vh; } .logo{ position: relative; margin-bottom: 30px; padding: 0 20px; text-align: center; } .logo-title{ font-family: 'Nunito',sans-serif; font-size: 76px; letter-spacing: .1em; } .logo-subtitle{ font-size: 22px; margin-top: 5px; text-align: center; letter-spacing: .2em; } /* グローバルナビ ----------------------------- */ .gnav{ position: fixed; top: 0; left: 0; z-index: 100; width: 100%; background: #ffffff; -webkit-box-shadow: 0 3px 3px -3px rgba(0, 0, 0, .2); -moz-box-shadow: 0 3px 3px -3px rgba(0, 0, 0, .2); box-shadow: 0 3px 3px -3px rgba(0, 0, 0, .2); } .gnav-list{ display: flex; flex-wrap: wrap; justify-content: center; } .gnav-item{ font-family: 'Josefin Sans',sans-serif; font-size: 16px; padding: 0 24px; letter-spacing: .05em; } .gnav-link{ position: relative; display: inline-block; padding: 20px 0; /* -webkit-transition: .3s; transition: .3s; */ color: #333333; } .gnav-link:hover{ opacity: .5; } /* WORKSセクション ----------------------------- */ .works-list{ display: flex; flex-wrap: wrap; margin-bottom: 80px; } .works-item{ flex-basis: 32.31552%; margin: 0 auto 40px; text-align: center; } .works-body{ text-align: center; } .works-title{ font-size: 12px; font-weight: bold; margin-top: 8px; } .works-text, .works-url{ font-size: 10px; } /* FEATUREセクション ----------------------------- */ .feature-item{ /* display: flex; */ flex-wrap: wrap; } .feature-img-wrapper{ /* flex-basis: 45%; */ width: 45%; margin-right: 40px; float: left; } .feature-body{ flex-grow: 1; } .clearfix::after{ content: ""; display: block; clear: both; } </code></pre> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://webdesigner-go.com/template/portfolio-02/#comment-799">ポートフォリオHTMLテンプレート(ベーシック)</a></p> manabu aratani tag:crieit.net,2005:PublicArticle/16153 2020-10-19T18:10:44+09:00 2020-10-19T18:10:44+09:00 https://crieit.net/posts/ios-5f8d581420de5 iosだけ画像が縦に伸びる時 <p>「display:flex;」を指定している箇所に、「align-items: flex-start;」を追記するだけ!!</p> <p><a target="_blank" rel="nofollow noopener" href="https://nichiyogogo.com/image-looks-stretched/">https://nichiyogogo.com/image-looks-stretched/</a></p> みみみみみ tag:crieit.net,2005:PublicArticle/15875 2020-04-27T21:53:23+09:00 2020-04-27T21:53:23+09:00 https://crieit.net/posts/slack-ver3 slack流量計ver3をリリースしました。 <h1 id="slack流量計とは"><a href="#slack%E6%B5%81%E9%87%8F%E8%A8%88%E3%81%A8%E3%81%AF">slack流量計とは</a></h1> <p>サービス運営者コミュニティ「<a target="_blank" rel="nofollow noopener" href="https://qiita.com/organizations/admin-guild?page=1">運営者ギルド</a>」のslackの統計情報を可視化するアプリケーションです。</p> <ul> <li><a href="https://crieit.net/posts/slack">ver2リリース記事</a></li> </ul> <p><a href="https://crieit.now.sh/upload_images/c757f121bd19245f1a30d36c3424b0625ea6c755c0971.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c757f121bd19245f1a30d36c3424b0625ea6c755c0971.jpg?mw=700" alt="" /></a></p> <h2 id="ver3で何が変わったの?"><a href="#ver3%E3%81%A7%E4%BD%95%E3%81%8C%E5%A4%89%E3%82%8F%E3%81%A3%E3%81%9F%E3%81%AE%EF%BC%9F">ver3で何が変わったの?</a></h2> <h3 id="VPSに移設"><a href="#VPS%E3%81%AB%E7%A7%BB%E8%A8%AD">VPSに移設</a></h3> <p>これまでslackに統計情報を集計するbotアプリケーションとして運用していましたが、サーバをVPSに移設しました。</p> <h3 id="WEBアプリケーション化"><a href="#WEB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%8C%96">WEBアプリケーション化</a></h3> <p>貴重なslackのリソースを消費せずにWEBで閲覧できるようになりました。(要slackサインイン)</p> <h3 id="puppeteerでのスクリーンショットは廃止"><a href="#puppeteer%E3%81%A7%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%81%AF%E5%BB%83%E6%AD%A2">puppeteerでのスクリーンショットは廃止</a></h3> <h2 id="使っている技術"><a href="#%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E6%8A%80%E8%A1%93">使っている技術</a></h2> <ul> <li>ReactJS</li> <li>NodeJS/Express/TypeScript</li> <li>passport</li> <li>node-cron</li> <li>chart.js</li> <li>slack/client</li> </ul> <h1 id="技術的な話"><a href="#%E6%8A%80%E8%A1%93%E7%9A%84%E3%81%AA%E8%A9%B1">技術的な話</a></h1> <h2 id="react-bootstrap-table2をbootstrap CSSを適用せずに作る"><a href="#react-bootstrap-table2%E3%82%92bootstrap+CSS%E3%82%92%E9%81%A9%E7%94%A8%E3%81%9B%E3%81%9A%E3%81%AB%E4%BD%9C%E3%82%8B">react-bootstrap-table2をbootstrap CSSを適用せずに作る</a></h2> <p>分析機能を作ることが多いので、表を多用するのですが、<a target="_blank" rel="nofollow noopener" href="https://react-bootstrap-table.github.io/react-bootstrap-table2/docs/getting-started.html">react-bootstrap-table2</a>というコンポーネントを結構使っています。</p> <p>これまではbootstrap CSSを適用した後にこれでもかというぐらいCSSを上書きしていたのですが、今回は自力でキャレットを実装できました。<br /> ページネーションも<code>list-style-type: none;</code>に気づいてサクサク実装。<br /> CSSいじるの楽しい!</p> <pre><code class="scss">th{ font-size: 12px; .dropdown>.caret{ &::after{ font-family: "Font Awesome 5 Free"; content: "\f0d7"; } } .dropup>.caret{ &::after{ font-family: "Font Awesome 5 Free"; content: "\f0d8"; } } .caret{ &::after{ font-family: "Font Awesome 5 Free"; content: "\f0d7"; } } } ul.pagination{ display: flex; list-style-type: none; text-align: center; li.page-item{ >a.page-link{ text-decoration: none; background-color: #555555; padding: 3px; margin-right: 3px; color: white; } &.active > a.page-link{ text-decoration: none; background-color: #bfbfbf; padding: 3px; margin-right: 3px; color: #555555; } } } </code></pre> <h2 id="passportを使ったslackサインインの実装"><a href="#passport%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9Fslack%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%81%AE%E5%AE%9F%E8%A3%85">passportを使ったslackサインインの実装</a></h2> <p>これは前回<a href="https://crieit.net/posts/React-NodeJS-Passport-twitter">twitterサインインの実装をした</a>のが役に立ちました。</p> <p>以下ソース抜粋</p> <pre><code class="javascript">import passportConfig from './passportConfig'; import * as session from 'express-session'; const MySQLStore = require('express-mysql-session')(session); passportConfig(); const passport = require('passport'); app.use(passport.initialize()); app.use(passport.session()); app.use( session({ secret: '******', resave: false, store: new MySQLStore(dbConfig), saveUninitialized: false, cookie:{ httpOnly: false, secure: false, maxage: 1000 * 60 } }) ); </code></pre> <p>passport-slackはシリアライズ/デシリアライズを使っていないようなので、<br /> 実装個所は変わりますが、認証が成功した際にセッションに情報を格納するといけました。</p> <pre><code class="javascript">(req: Request, res) => { req.session.user = req.account; res.redirect(BACKEND); } </code></pre> ckoshien tag:crieit.net,2005:PublicArticle/15862 2020-04-23T00:32:48+09:00 2020-04-23T00:32:48+09:00 https://crieit.net/posts/b54c153b71a3e506c51b61480e03c38c 自分だけのオリジナル紙面を作れる「スポーツ新聞メーカー」をリリースしました。 <h1 id="サービスURL"><a href="#%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9URL">サービスURL</a></h1> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://sports-news-maker.netlify.app">https://sports-news-maker.netlify.app</a></li> </ul> <h1 id="何ができるか"><a href="#%E4%BD%95%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%8B">何ができるか</a></h1> <p><a href="https://crieit.now.sh/upload_images/668008c5ca92ae17eb989010b49994385ea05f1a6faea.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/668008c5ca92ae17eb989010b49994385ea05f1a6faea.jpg?mw=700" alt="" /></a></p> <ul> <li>新聞名</li> <li>見出し</li> <li>試合のスコア(3-10イニングまで)</li> <li>画像</li> <li>縦見出し</li> <li>写真のキャプション</li> </ul> <p>を編集してこのようなオリジナル紙面を作れます。</p> <h1 id="特徴"><a href="#%E7%89%B9%E5%BE%B4">特徴</a></h1> <h2 id="入力フォームの隠蔽"><a href="#%E5%85%A5%E5%8A%9B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E9%9A%A0%E8%94%BD">入力フォームの隠蔽</a></h2> <p><a href="https://crieit.net/posts/1bbf25a7cba4095f0fd1afe817b553dd">パワプロ風画面ジェネレータ</a>で作ったコンポーネントを流用しています。<br /> クリックするまで入力フォームが出ない仕様です。</p> <h2 id="縦書きの見出し"><a href="#%E7%B8%A6%E6%9B%B8%E3%81%8D%E3%81%AE%E8%A6%8B%E5%87%BA%E3%81%97">縦書きの見出し</a></h2> <p>縦書きをCSSでデザインしています。<br /> writing-modeというプロパティだけでは、英文字が横になってしまうので、text-orientationというプロパティで英文字対応を行っています。</p> <pre><code class="javascript">style=<span>{</span><span>{</span> writingMode:'vertical-rl', textOrientation:'upright', fontSize:`calc(6vw - ${store.getState().newsTitle.length/2}px )`, margin:5, width:'1em', whiteSpace:'nowrap', fontWeight:'bold' <span>}</span><span>}</span> </code></pre> <h2 id="レスポンシブ"><a href="#%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96">レスポンシブ</a></h2> <p>フォントサイズや画像の大きさ、マージンなどを画面の幅によって変わるようCSSで実装しています。</p> <h2 id="可変イニング数"><a href="#%E5%8F%AF%E5%A4%89%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B0%E6%95%B0">可変イニング数</a></h2> <p>3~10回までイニング数を変えることができるようになっています。</p> <h2 id="セピアフィルター"><a href="#%E3%82%BB%E3%83%94%E3%82%A2%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC">セピアフィルター</a></h2> <p>画像に新聞らしくセピアフィルターをかけています。<br /> へぇ、CSSってこんなこともできるんだ!という新しい発見がありますね。</p> <pre><code class="html"><img style=<span>{</span><span>{</span> maxWidth:'85vw', objectFit:'cover', filter:'sepia(30%)', <span>}</span><span>}</span> src={this.state.image_src}/> </code></pre> <h1 id="振り返り"><a href="#%E6%8C%AF%E3%82%8A%E8%BF%94%E3%82%8A">振り返り</a></h1> <p>今回はほぼ一日で作ったので、またフロントで完結しています。<br /> 時間があればOGPでシェア機能つけたら面白いかもしれません。<br /> あとは試合スコアのチーム名を長くすると表示が乱れるのは課題です。<br /> 幅を固定してフォントサイズを文字長で反比例させればいいですかね。</p> ckoshien tag:crieit.net,2005:PublicArticle/15419 2019-09-24T04:49:33+09:00 2019-09-24T04:52:06+09:00 https://crieit.net/posts/3196986630826e80e694cf840dd8f493 意外と簡単!自分のサイトをダークモード対応してみた【技術編】 <p><a href="https://crieit.now.sh/upload_images/ab7fe98314e669b78bed589d5154e4b05d89099d3d9f8.PNG" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ab7fe98314e669b78bed589d5154e4b05d89099d3d9f8.PNG?mw=700" alt="IMG_8789.PNG" /></a></p> <p>スプランプ(<a target="_blank" rel="nofollow noopener" href="https://splamp.info">splamp.info</a>)というサイトの管理人をしているウラルです。</p> <p>来ましたよ、ダークモードの時代が。2019年はダークモード元年です。</p> <h1 id="ダークモードの時代が来た"><a href="#%E3%83%80%E3%83%BC%E3%82%AF%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AE%E6%99%82%E4%BB%A3%E3%81%8C%E6%9D%A5%E3%81%9F">ダークモードの時代が来た</a></h1> <p>何を言っているかお分かりでしょうか。<br /> 実は、2019年はWindows・iOS・Androidという三大OSがダークモード対応をするという、大きな時代の節目なのです。</p> <h2 id="OSの更新日とダークモード設定方法"><a href="#OS%E3%81%AE%E6%9B%B4%E6%96%B0%E6%97%A5%E3%81%A8%E3%83%80%E3%83%BC%E3%82%AF%E3%83%A2%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95">OSの更新日とダークモード設定方法</a></h2> <p><strong>2019年5月22日</strong><br /> Windows 10 May 2019 Update配信開始。「個人用設定 > 色」から「既定のアプリモード」を「黒」にする。</p> <p><strong>2019年9月4日</strong><br /> Android10配信開始。「設定 > ディスプレイ」から「ダークテーマ」をオンにする。</p> <p><strong>2019年9月20日</strong><br /> iOS13配信開始。「設定 > 画面表示と明るさ」から「外観モード」を「ダーク」にする。</p> <h1 id="Webが対応しないでどうする"><a href="#Web%E3%81%8C%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%AA%E3%81%84%E3%81%A7%E3%81%A9%E3%81%86%E3%81%99%E3%82%8B">Webが対応しないでどうする</a></h1> <p>個人的な所感ですが、開発者の中でダークモード対応は興味としては薄いように感じます。</p> <p>しかし、Webこそダークモードの流れに乗るべきなのです。なぜなら、ほとんどのWebサイトの背景は真っ白じゃないですか!目が眩むし、夜眠れなくなりそうです。</p> <p>私は、以前からWebサイトでダークモードの対応をしたかったのですが、OSレベルでのダークモード対応が普及していなかったため、ずっと待っていました。サイト内にダークモードボタンを設置しても、ブラウザが真っ白では意味がありませんからね。</p> <p>三大OSが対応した今、もう何も遮るものはありません。</p> <h1 id="CSSだけで実装できる"><a href="#CSS%E3%81%A0%E3%81%91%E3%81%A7%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%8D%E3%82%8B">CSSだけで実装できる</a></h1> <p>ダークモード対応は、難しい技術が必要なのでしょうか。いいえ、CSSだけでいいんです。</p> <p>CSSのメディアクエリの1つである、<code>prefers-color-scheme</code>を使います。</p> <blockquote> <p><code>prefers-color-scheme</code> は CSS のメディア特性で、ユーザーがシステムに要求したカラーテーマが明色か暗色かを検出するために使用します。<br /> <a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Web/CSS/@media/prefers-color-scheme">prefers-color-scheme - CSS: カスケーディングスタイルシート | MDN</a></p> </blockquote> <p>構文によると、ダークモードがオンになると<code>prefers-color-scheme</code>が<code>dark</code>になり、オフだと<code>light</code>、そもそも機能を持ち合わせていない場合は<code>no-preference</code>という値になります。</p> <p>実際に利用する場合はどう使うのでしょうか。<br /> おすすめは、CSS変数との併用です。既存の構造を崩さずに、ダークモード用の色彩設定を追加することができます。</p> <p><em>例</em></p> <pre><code class="css">:root { --header-bg: white; --body-bg: white; --body-color: black; } @media (prefers-color-scheme: dark) { :root { --header-bg: hsl(212, 38%, 12%); --wrapper-bg: hsl(212, 40%, 17%); --body-color: #e4e4e4; } } header { background: var(--header-bg); } body { background: var(--body-bg); color: var(--body-color); } </code></pre> <p>CSS変数を参照させることで、ダークモードに切り替わると一斉に色が変わります。</p> <p><img src="https://splamp.info/shed/assets/IMG_8788.GIF" alt="gif" /></p> <p>imgタグの画像の切り替えは若干面倒ですが、私はライト用とダーク用の2つを連続で並べて、CSSで<code>display: none</code>と<code>display: inline</code>を入れ替えるようにしました。</p> <h1 id="大変だけど"><a href="#%E5%A4%A7%E5%A4%89%E3%81%A0%E3%81%91%E3%81%A9">大変だけど</a></h1> <p>これまで白ベースで作ってきたサイトにとっては、ダークモードの対応は破壊的な修正にあたります。角丸で四隅が白い画像だとか、色でごまかしていた要素の境目などを、見直さなければいけません。</p> <p>しかし、それはデメリットばかりではありません。それは、負の遺産になりかけていたCSSを直すチャンスかもしれません。(少なくともうちのサイトは構造から改善しました)</p> <p>三大OSがダークモードに対応した今、時代の流れはダークモード対応です。<br /> 実装自体は簡単ではあるものの、色使いの検討や構造の見直しに割と時間がかかるので、早め早めに手を付けたいものです。<br /> アクセシビリティとか言って、やがて対応に迫られてくるのは間違いありません。</p> <p>次回は【デザイン編】として、ダークモードデザインについて記事にしようと思います。</p> ウラル tag:crieit.net,2005:PublicArticle/15418 2019-09-24T00:05:17+09:00 2019-09-24T00:20:41+09:00 https://crieit.net/posts/Chrome-placeholder-757575 Chromeのplaceholderの色は#757575 <p>HTMLの<code><input></code>や<code><textarea></code>に使われる<code>placeholder</code>属性の文字色は、CSSでは疑似要素<code>::placeholder</code>の中で設定できますが、デフォルトの色が分からなかったので調べました。</p> <p><a href="https://crieit.now.sh/upload_images/f37dd84b36bcbac2749ed7d9d5d7127f5d88e29c1b118.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f37dd84b36bcbac2749ed7d9d5d7127f5d88e29c1b118.png?mw=700" alt="image.png" /></a><br /> ▲これのことね</p> <h1 id="結果"><a href="#%E7%B5%90%E6%9E%9C">結果</a></h1> <p>Chromeでスポイトで色を取って確認したところ、<code><input></code>も<code><textarea></code>も<code>#757575</code>=<code>rgb(117, 117, 117)</code>=<code>hsl(0, 0%, 46%)</code>でした。</p> <h1 id="感想"><a href="#%E6%84%9F%E6%83%B3">感想</a></h1> <p>デフォルトがCSSでは定義されておらず開発者ツールではわからないので、スポイト使うしかありませんでした(´・ω・`)</p> <p><a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Web/CSS/::placeholder">https://developer.mozilla.org/ja/docs/Web/CSS/::placeholder</a></p> ウラル tag:crieit.net,2005:PublicArticle/15384 2019-09-09T22:37:51+09:00 2019-09-09T22:37:51+09:00 https://crieit.net/posts/CSS CSSアニメーションでトランザム! <h1 id="トランザムシステムってなに?"><a href="#%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%83%A0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%A3%E3%81%A6%E3%81%AA%E3%81%AB%EF%BC%9F">トランザムシステムってなに?</a></h1> <p>アニメ「機動戦士ガンダムOO」に登場する、機体の性能を向上させ、<strong>一定時間</strong>スペックの3倍以上に相当する出力を得ることができる仕組みのこと。</p> <p>その際にコクピットに出る表示が印象的だったのですが、<br /> CSSアニメーションを使ったローディング表示やスピナーを見て、<br /> 「実はCSSアニメーションだけで表現できるのでは...」と思い始めて3か月ぐらい経ちました。</p> <p><a href="https://crieit.now.sh/upload_images/b08b548caec5795ad40e35af9c85f4c95d764f1a11e8a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b08b548caec5795ad40e35af9c85f4c95d764f1a11e8a.png?mw=700" alt="" /></a></p> <h1 id="キーになる技術"><a href="#%E3%82%AD%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B%E6%8A%80%E8%A1%93">キーになる技術</a></h1> <h2 id="2つのプログレスバーを制御する"><a href="#%EF%BC%92%E3%81%A4%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%AC%E3%82%B9%E3%83%90%E3%83%BC%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B">2つのプログレスバーを制御する</a></h2> <p>参考として挙げたQiita記事ではプログレスバーの作り方としてソースだけではなく考え方が書かれており、この処理を上下左右反転させればよいことがわかりました。</p> <h2 id="グラデーションを効果的に使う"><a href="#%E3%82%B0%E3%83%A9%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%8A%B9%E6%9E%9C%E7%9A%84%E3%81%AB%E4%BD%BF%E3%81%86">グラデーションを効果的に使う</a></h2> <p>今回は<strong>禍々しい</strong>グラフィックに特徴があるので、できるだけ真似るために</p> <ul> <li>プログレスバー</li> <li>内円の中心</li> <li>円の外側</li> </ul> <p>にグラデーションを使用しています。</p> <h2 id="点滅(opacityの変更)を使う"><a href="#%E7%82%B9%E6%BB%85%28opacity%E3%81%AE%E5%A4%89%E6%9B%B4%29%E3%82%92%E4%BD%BF%E3%81%86">点滅(opacityの変更)を使う</a></h2> <p>時間制限の限界が近づいたことを知らせるために赤と通常色で交互に色を変えたり、opactiy(不透明度)を変えたりしています。</p> <h1 id="デモ"><a href="#%E3%83%87%E3%83%A2">デモ</a></h1> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://ckoshien.github.io/css-trans-am/">GitHub Pages</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://github.com/ckoshien/css-trans-am">ソース</a></li> </ul> <h1 id="今後の展望"><a href="#%E4%BB%8A%E5%BE%8C%E3%81%AE%E5%B1%95%E6%9C%9B">今後の展望</a></h1> <ul> <li>今回は小さいサイズで作成してしまったので全体的にサイズ調整する</li> <li>粒子チャージに対応する <ul> <li>一旦粒子を使い切ってしまった場合、再チャージの描写を入れる <ul> <li>これはたぶんjsなしでは無理だと思います。</li> </ul></li> </ul></li> </ul> <h1 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h1> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/Keita_I/items/72f302b6470a2ccdd9f4">CSSアニメーションで円形プログレスバーを作る方法</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://1-notes.com/flash-animation/#toc_id_4">色々なパターンの点滅するCSSアニメーションサンプル</a></li> </ul> ckoshien tag:crieit.net,2005:PublicArticle/15377 2019-09-04T18:29:26+09:00 2019-09-04T18:29:26+09:00 https://crieit.net/posts/Nuxt-js-Web-marked-highlightjs-Markdown Nuxt.js製のWebサービスにmarked+highlightjsでMarkdownで書いた読書メモを表示できるようにしてみた <p>先日、開発中の<a target="_blank" rel="nofollow noopener" href="https://tsundoku.site">積読用の書籍管理アプリ</a>の新機能として、<br /> Markdownで書ける読書メモを追加したので、その時の備忘録。</p> <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">✅読書中のメモが残せる読書メモ機能✨読書メモを残せる機能を追加しました‼️マークダウンで書けて、全メモをクリップボードにコピーできちゃいます😊はてなブログなどマークダウンが使えるなら、コピペで記事も書くことも😍(続く <a target="_blank" rel="nofollow noopener" href="https://t.co/K3pjr4noVo">pic.twitter.com/K3pjr4noVo</a></p>— めもらば@公式 (@MemoryLoverz) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/MemoryLoverz/status/1168227417950806016?ref_src=twsrc%5Etfw">September 1, 2019</a></blockquote> <h3 id="全体の流れ"><a href="#%E5%85%A8%E4%BD%93%E3%81%AE%E6%B5%81%E3%82%8C">全体の流れ</a></h3> <p>やりかたとしては、こんな感じ<br /> 1. Markdownの文字列を<a target="_blank" rel="nofollow noopener" href="https://github.com/markedjs/marked">marked</a>を使ってHTML化<br /> 2. <code><pre></code>の部分は、markedで<a target="_blank" rel="nofollow noopener" href="https://github.com/highlightjs/highlight.js/">highlightjs</a>を使うように設定<br /> 3. Markdown用のCSSを追加して見た目を調整</p> <h3 id="VueのSFCで書くとこんな感じ"><a href="#Vue%E3%81%AESFC%E3%81%A7%E6%9B%B8%E3%81%8F%E3%81%A8%E3%81%93%E3%82%93%E3%81%AA%E6%84%9F%E3%81%98">VueのSFCで書くとこんな感じ</a></h3> <pre><code class="html"><template> <div class="marked" v-html="markedHtml"></div> </template> <script lang="ts"> import { Component, Vue, Prop } from "nuxt-property-decorator"; import marked from "marked"; import hljs from "highlightjs"; @Component({ components: {} }) export default class NoteItem extends Vue { // マークダウンで書かれたテキスト @Prop({ required: true }) memo!: string; created() { // markedでhighlightjsを利用するように設定 marked.setOptions({ langPrefix: "", highlight: function(code, lang) { return hljs.highlightAuto(code, [lang]).value; } }); } private get markedHtml() { // markedを実行した結果を返す return marked(this.memo); } } </script> </code></pre> <p>ポイントとしてはこんな感じ。</p> <ol> <li><code>created()</code>内でmarkedの設定。ハイライト処理にhighlightjsを使うように。</li> <li>computedの<code>markedHtml()</code>内でmarkedを実行</li> <li><code><div v-html="markedHtml"></code>でHTMLを表示</li> </ol> <h3 id="マークダウン用のCSSを追加する"><a href="#%E3%83%9E%E3%83%BC%E3%82%AF%E3%83%80%E3%82%A6%E3%83%B3%E7%94%A8%E3%81%AECSS%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B">マークダウン用のCSSを追加する</a></h3> <p>上記のままだと、Webサイトに適用しているCSSがそのまま適用されてしまうので、<br /> こんなになってしまい、あまりよい感じではない...</p> <p><img width="500" alt="スクリーンショット 2019-09-03 23.08.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/7489db5b-e4cb-ae85-0db5-621a247e1287.png"></p> <p>なので、<code>.marked</code>というクラスは以下の要素にマークダウン用のCSSを設定して調整する。</p> <p>0から作ると大変なので、<a target="_blank" rel="nofollow noopener" href="https://qiita.com/skkzsh/items/99e30bbbfe69f379b583">@skkzshさんのQiita記事</a>に書いてある、<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/simonlc/Markdown-CSS">simonlc/Markdown-CSS</a>や<a target="_blank" rel="nofollow noopener" href="https://github.com/kottkrig/Markdown-CSS">kottkrig/Markdown-CSS</a>を参考に設定していく。</p> <p>できたのがこんな感じ。<br /> あとはサイトのデザインと合わせて、少しずつ調整〜</p> <pre><code class="scss">// **************************** // * Marked // **************************** .marked { p { margin: 1em 0; } img { max-width: 100%; } h1, h2, h3, h4, h5, h6 { font-weight: normal; line-height: 1em; } h4, h5, h6 { font-weight: bold; } h1 { font-size: 2.5em; } h2 { font-size: 2em; } h3 { font-size: 1.5em; } h4 { font-size: 1.2em; } h5 { font-size: 1em; } h6 { font-size: 0.9em; } ol { margin: 1em 0; padding: 0 0 0 2em; } ul { margin: 1em 0; padding: 0 0 0 2em; list-style: disc; } dd { margin: 0 0 0 2em; } table { margin: 10px 0 15px 0; border-collapse: collapse; } td, th { border: 2px solid #ccb8a3; padding: 3px 10px; } th { padding: 5px 10px; } blockquote { padding-left: 1em; margin: 0; color: #666666; border-left: 0.3em #f6f0e5 solid; } } </code></pre> <p>このCSSを適用するとこんな感じに!!<br /> いい感じになった(<em>´ω`</em>)</p> <p><img width="500" alt="スクリーンショット 2019-09-03 23.14.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/8a3f19a2-3524-f864-4504-ff174683c8cf.png"></p> <p>いろいろ便利なライブラリがあるのでサクッとできてステキ♪</p> <h2 id="こんなのつくってます!!"><a href="#%E3%81%93%E3%82%93%E3%81%AA%E3%81%AE%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%BE%E3%81%99%EF%BC%81%EF%BC%81">こんなのつくってます!!</a></h2> <p>上記の読書メモ機能を追加した、積読用の読書管理アプリ「積読ハウマッチ」!<br /> <a target="_blank" rel="nofollow noopener" href="https://tsundoku.site">積読ハウマッチ</a>は、Nuxt.js+Firebaseで開発してます!</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/572d4947-f40b-e4dc-1c9c-bc584cd2a66c.png" width="25%"/></p> <p>もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ</p> <p>要望・感想・アドバイスなどあれば、<br /> 公式アカウント(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/MemoryLoverz">@MemoryLoverz</a>)や開発者(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/kira_puka">@kira_puka</a>)まで♪</p> <h1 id="参考にしたサイト"><a href="#%E5%8F%82%E8%80%83%E3%81%AB%E3%81%97%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88">参考にしたサイト</a></h1> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://mizchi.hatenablog.com/entry/2018/10/23/221446">大量のテキストを食っても速い Markdown Editor 作った - mizchi's blog</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/bmf_san/items/fe2b4b4591dd17ee7103">React+marked+highlight.jsでマークダウンエディタをつくる - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/tadnakam/items/1323d03743fc0101aa50">コードのハイライト表示 JS ライブラリ 3種 - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="http://kannokanno.hatenablog.com/entry/2013/06/19/132042">JavaScript - Markdownパーサーのshowdown.js、markdown-js、markedを簡単比較 - ぼっち勉強会</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/skkzsh/items/99e30bbbfe69f379b583">Markdownでスタイルシート - Qiita</a></li> </ul> きらぷか@積読ハウマッチ/SSSAPIなど