- 投稿日:2020-10-27T21:14:37+09:00
Rubyの条件分岐(case,while,無限ループ,break)
Rubyの条件分岐
case文
条件分岐を表現するための文法。複数の条件を指定する時に、if文のelsifを重ねるよりもシンプルにコードを書くことができる
samplecase 対象のオブジェクトや式 when 値1 # 値1に一致する場合に実行する処理 when 値2 # 値2に一致する場合に実行する処理 when 値3 # 値3に一致する場合に実行する処理 else # どれにも一致しない場合に実行する処理 endwhile文
繰り返し処理を行うためのRubyの構文。指定した条件が真である間、処理を繰り返す
samplenumber = 0 while number <= 10 puts number number += 1 end # ターミナル出力結果 # 0 # 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10無限ループ
処理が永遠に繰り返されること
samplenumber = 0 while true puts number number += 1 end # ターミナル出力結果 # 0 # 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # . # . # .上記のコードは条件式の部分にはじめからtrueと書くことによって意図的に無限ループを発生させている
break
eachメソッドやwhile文などのループから脱出するために使われる
samplenumber = 0 while number <= 10 if number == 5 break end puts number number += 1 end # ターミナル出力結果 # 0 # 1 # 2 # 3 # 4このようにif文などの条件分岐とbreakを使うと、特定の条件のときにループを脱出することができる
現場からは以上です!
- 投稿日:2020-10-27T21:11:22+09:00
【初心者向け】aタグの効果を無効化させる時によく使う系のCSSまとめ
どうも7noteです。aタグのカーソルやイベントを無効にする系のCSSまとめ記事です。
aタグは基本的にはどこか他のページにリンクさせるために使いますが、都合上aタグの標準の効果が邪魔だったり無効化させたい時ってあると思います。
主にクリックイベントを無効化させたり、カーソルを別の物に変えたりすることができるのですが、
私自身もいつも書き方を忘れて調べてはコピペしてるので、よく使うものをまとめました。目次
・ 下線を消す
・マウスカーソルを指(?)以外の形にする
・クリックイベントを無効にする(ページリンクを無効化)
・おまけ:タブ移動でフォーカスが当たるのを無効にするaタグの効果を無効化させるのによく使うCSS
下線を消す
a { text-decoration: none; /* 下線を無効化 */ }無効化した下線を出すときは
underline
を書きましょう。a { text-decoration: none; /* 下線を無効化 */ } a:hover { text-decoration: underline; /* マウスホバー時だけ下線を出す */ }マウスカーソルを指(?)以外の形にする
a:hover { cursor: default; /* マウスホバー時、通常時の矢印(➚)の形にする */ }ブラウザのデフォルトに合わせるなら
auto
。
逆に指の形にする時は、pointer
を指定します。他のカーソルの形は以下のサイトを参考にしてください。
https://developer.mozilla.org/ja/docs/Web/CSS/cursor※次で説明する
pointer-events: none;
を指定しても、指(?)の形ではなくすることができます。クリックイベントを無効にする(ページリンクを無効化)
a { pointer-events: none; /* 押してもリンクさせない */ }たとえば特定のチェックボックスにチェックが入っていなければ、次のページには行けないようにしたり、
aタグにjavascriptの処理を入れてしまっていて、ページリンクさせたくない時などに使えます。標準に戻すときは、
auto
を指定してください。おまけ:タブ移動でフォーカスが当たるのを無効にする
<a tabindex="-1">リンク</a>参考:http://freeladay.com/?p=2273
まとめ
大きめの開発の際に、たまに出てくるか出てこないかくらいで忘れがちな事が多いので自分の備忘録的な役割も込めて記事にまとめました。
下線の無効化などは、colorの指定と一緒にreset.css(全ページ共通のCSS)などで予め定義されている場合が多いので大丈夫ですが、pointer-eventsやcursorはたまにしか出てこないのでスペルミスで余計な時間を使うくらいであれば、どこかにストックかお気に入りしておいてすぐにコピペで使えると効率アップに繋がるかもしれませんね。おそまつ!
~ Qiitaで毎日投稿中!! ~
【初心者向け】HTML・CSSのちょいテク詰め合わせ
- 投稿日:2020-10-27T20:12:01+09:00
クリックイベントでMouseかEnterキーかを判定する
動機
button
要素はクリックした時にfocusがあたった状態になるので、
デザインの再現の際に、不都合があることがあります。button:focus { outline: none; }上記のようにfocus時のスタイルを消してしまえば、いったんは良いのですが、
キーボードでアクセスした時に、そのbutton
がfocusされているのか視覚的に分からないため、アクセシビリティ的には良くありません。ですので、マウスでクリックした時はfocus時のスタイルを消し、キーボードアクセスでfocusされた時は、スタイルを残せるようにJavaScriptで判定したいと思います。
実装例
const button = document.querySelector('button'); const onClickButton = (event) => { if (event.detail !== 0) { event.currentTarget.style.outline = 'none'; } } const onFocusButton = (event) => { event.currentTarget.style.outline = ''; } button.addEventListener('click', onClickButton, false); button.addEventListener('focus', onFocusButton, false);解説
onClickButton
の箇所clickイベントの時、引数eventにはMouseEventオブジェクトが入ります。
MouseEventには(自分が確認した限り)、keydown時のevent.key
のように押下されたキーを判定できるプロパティが無かったため、event.detail !== 0
で、マウスのクリックなのか、Enterキーなのかを判定しました。
event.detail
が何かと言うと、クリック数を読み取り専用で返してくれるプロパティのようです。UIEvent.detail - Web API | MDN
ですので、今回はクリック数がゼロかどうかで、MouseかEnterかを判定しています。
つまり、
event.detail !== 0
は、クリック数が0以外の時なので、
Mouseでクリックされた時の挙動を記述します。Mouseでクリックされた時は
event.currentTarget.style.outline = 'none';
でfocus時のスタイルを消します。もっと詳細にスタイルを指定したい場合は、classList.add('className')
でクラス制御でスタイルを変更しても良いかもしれません。
onFocusButton
の箇所
onFocusButton
では、focusが当たった時に、onClickButton
で消したスタイルを元に戻す記述をしています。
event.currentTarget.style.outline = '';
で空文字を代入しているのは、既存のスタイル(ブラウザのデフォルトスタイルや、CSSで指定したスタイル)が再度適用できるようにです。まとめ
以上、clickイベント時にMouseかEnterキーかを判定して、
focus時のスタイルをコントロールする方法を紹介しました。
より良い方法がありましたら、是非コメントを頂けたら幸いです。
- 投稿日:2020-10-27T13:00:06+09:00
【Chrome】z-indexを考慮した立体的なページレイヤーをChromeの開発者ツールで確認する。
- 投稿日:2020-10-27T04:58:34+09:00
Js/CSSのキャッシュをコントロール
js/cssをブラウザでキャッシュさせない方法
Cahche Bustingって言うらしい。。。
その方法は、以下の通り
対策前のコード↓
sample.html<!-- CSS --> <link href="style.css" rel="stylesheet" type="text/css"> <!-- JavaScript --> <script src="script.js" type="text/javascript" ></script> <!-- 画像 --> <img src="sample.jpg" alt="Sample">対策後コード↓
sample.html<!-- CSS --> <link href="style.css?ver=1.0.0" rel="stylesheet" type="text/css"> <!-- JavaScript --> <script src="script.js?ver=1.0.0" type="text/javascript" ></script> <!-- 画像 --> <img src="sample.jpg?ver=1.0.0" alt="Sample">「?」の後に任意の文字列を付与すると、ブラウザは対策前のURLとは違うものだと認識する。
(これをクエリ文字列という)クエリ文字列はほかにも
・更新日時 (例:src=”style.css?date=20201027053000″)
・バージョン (例:src=”style.css?ver=1.2.3″)
・ランダム数jsやcss側での加工はと言うと、必要ない。
これでjs/cssを更新しても、ブラウザでキャッシュされなくなる。
しかし、htmlがキャッシュされたら元も子もないので、htmlには以下のmetaを記述する。sample.html<head> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0">3つともキャッシュしちゃダメよ!ということらしい。
以上。
- 投稿日:2020-10-27T00:07:01+09:00
Herokuへデプロイする手順
Herokuへデプロイする手順
ターミナルbrew tap heroku/brew && brew install herokuターミナルheroku --versionターミナル# Herokuへログインするためのコマンド % heroku login --interactive => Enter your Heroku credentials. # メールアドレスを入力し、エンターキーを押す => Email: # パスワードを入力して、エンターキーを押す => Password:Gemfile# ファイルの一番下の行に追記する group :production do gem 'rails_12factor' endターミナル# Gemをインストール % bundle installターミナル% git add . % git commit -m "gem rails_12factorの追加"ターミナル% heroku create アプリケーション名ターミナル% git config --list | grep herokuターミナル% heroku addons:add cleardb Creating cleardb on ⬢ アプリケーション名... free Created cleardb-vertical-00000 as CLEARDB_DATABASE_URL Use heroku addons:docs cleardb to view documentationターミナル% heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`ターミナル% heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5} # 以下、コマンドの実行結果 Setting DATABASE_URL and restarting ⬢ アプリケーション名... done, v◯◯ DATABASE_URL: mysql2://000000000000:0aa0000@us-cdbr-east-02.cleardb.com/heroku_aaa00000000?reconnect=trueターミナル% EDITOR="vi" bin/rails credentials:editターミナル% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`ターミナル% heroku configターミナル% git push heroku masterターミナル% heroku run rails db:migrate公開を確認
ターミナル% heroku apps:info ===ajax-app-123456 Addons: cleardb:ignite Auto Cert Mgmt: false Dynos: web: 1 Git URL: https://git.heroku.com/アプリケーション名.git Owner: sample@sample.com Region: us Repo Size: 165 KB Slug Size: 56 MB Stack: heroku-18 Web URL: https:/アプリケーション名.herokuapp.com/現場からは以上です!