Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all 8767 articles
Browse latest View live

【CSS】background-image: urlは本番環境では画像が映らない

$
0
0

これローカルでは映っていたけど、いざ本番環境で見てみると何も映っていない...って方絶対いると思うのでその方と備忘録として

何故本番環境では映らない?

これには海より深く山より高い...わけでもなく色々あってファイル名が変わっているからなんです。

何故ファイル名が変わるのか

RailsではデフォルトでAsset Pipelineのdigestと言う機能があるんですけど普段はいい奴なんです。調べてもらえればわかります。ただいい奴すぎてファイルを更新するごとにファイル名が変わっちゃうんです。
で、ファイル名が変わると言うことはurlの後ろに書いてた画像のパスが違ってくるんです。
簡単に言うとa.pngがa1.pngになっちゃう感じ。
これじゃあ指定してた画像持って来れねぇわ。

回避方法

もちろん回避方法は用意されていて結論から言うと

background-image: image-url(同じディレクトリなら画像のファイル名または画像のパス);
background: image-url(同じディレクトリなら画像のファイル名または画像のパス);

このどちらかで本番環境でも表示されるようになります。

もう一つ回避方法があってこちらは検証してないですが参考までに
もしかしたらMacだけかも

違う回避方法

$vim config/environments/production.rb
config/environments/production.rb
config.public_file_server.enabled=#beforeconfig.public_file_server.enabled=true#after

これでいけるみたいです。

ではこれにて


初心者によるプログラミング学習ログ 286日目

$
0
0

100日チャレンジの286日目

twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。
100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。
286日目は、

[Rails]Bootstrapの導入方法

$
0
0

開発環境

・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

1.gemを導入

Gemfile
gem'bootstrap-sass'gem'jquery-rails'
ターミナル
$bundle

2.「application.css」ファイルをscss形式に変更

ターミナル
$mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss

3.「application.scss」ファイルを編集

application.scss
/* 追記 */@import"bootstrap-sprockets";@import"bootstrap";

3.「application.js」ファイルを編集

application.js
/* 変更前 *///= require rails-ujs//= require turbolinks//= require_tree ./* 変更後 *///= require rails-ujs//= require turbolinks//= require jquery//= require bootstrap-sprockets//= require_tree .

CSSで縦組み・プロポーショナルメトリクス

float(css)についてまとめる。

$
0
0

floatについて

floatは浮かせて、左や、右によせる。
よって、浮いているので、特に指定のない限り、要素が上に詰めて配置されてしまう。
そこで浮かせた後の要素に以下の要素を追加する必要がある。

html

<div id="under"></div>

css

#under{
/* float: leftされた要素を解除 */
clear: left;
}

これだと、 floatを使うたびに要素を追加し、cssにも追加が必要。
よって一般的には以下のコードを使う。(親要素にclass="clearfix"を追加しとく)

css

clearfix:after {
content: "";
display: block;
clear: both;
}

Chromeでtext-decoration-thicknessが使えるようになるまでの身代わりコードを考えた

$
0
0

解決フロー

  1. Chromeではtext-decoration-thicknessがまだ対応できない
  2. border-bottomとか似たようなことができる他のコードを試す
  3. border-bottomだとテキストの箇所だけではなく、h1要素全てに下線が引かれてしまう
  4. 3の状態になるのはh1タグがブロックレベル要素だから
  5. h1タグをインライン要素にして、border-bottomを使用してみる
  6. 解決

発生した問題

h1タグに太さを調整できる下線を引きたいのに、text-decoration-thicknessChromeでは対応していなかった

style.css
h1{text-decoration:underline;text-decoration-color:red;text-decoration-thickness:4px;<-chrome未対応(2020/04/10時点)}

NoneTextdecorationthickness.png

試したこと

調べてみたら、CSSには他にも下線を引けるコードがあると判明。
border-bottomとか。
「これで良いじゃん!」と思って試してみたらこれで良くなかった。

NoneTextdecorationthickness1.png

style.css
h1{border-bottom:4pxsolidred;}

h1要素全体に下線が引かれてしまっているのが問題。
テキスト部だけで良いのに。

border-bottomでの問題

テキスト部以外にも下線が引かれてしまう理由は、h1タグはページ構成の中で一つの塊として扱われるブロックレベル要素だから。
だから、border-bottomは「h1タグのテキスト」ではなく、「h1タグ」を対象として動いている。
border-bottomを使って、テキスト部だけに下線を引きたいならその対象を「h1タグのテキスト」にしてあげればいい。

解決法

h1タグにdisplay: inline-blockを与えて、インライン要素にしてborder-bottomを使用する。

style.css
h1{display:inline-block;border-bottom:4pxsolidred;}

NoneTextdecorationthickness2.png

解決!!

感想

正直、text-decoration系よりもborder-bottom系の方がサポートというか色々な属性?があるからそっちを使った方が良いのでは?
まぁ今回はborder-bottomを使うときはdisplay: inline-blockを使うと、より多様な使い方ができると分かったということで。

参考資料

text-decoration-thickness
ブロックレベル要素とインライン要素
HTMLやCSSで【アンダーライン】を引くベストな方法ってどれ?比較してみました。

[初心者向け]herokuをデプロイしよう

$
0
0

herokuとは

開発したWEBアプリケーションを10分程度で全世界に公開することができ、そのままサービスを本格的に運用することも可能なホスティングサービスの事を指します。

実行と流れ

まず前提としてデプロイしたいアプリが作成済み、GitHubにアカウント登録済み、GitHubにリポジトリを作成済みという前提でお話しして行きます。今回はrailsで作成したアプリをデプロイしていきます。
流れとしては以下になります。

herokuアカウント作成→Heroku Toolbelt (CLI)のインストール→デプロイ

1.アカウント作成

herokuに登録してアカウントを作成
(1)herokuの公式サイトにアクセス
sign upボタンを押す

a.png

(2)下記の赤枠の部分を入力
a.png

(3)下記のページが出れば成功
a.png

その後メールが届くと思うので、メールからリンクをクリックしてアクセス。

(4)リンク先でパスワードを決定する。下記の画像の通り入力

a.png

(5)下の画像のページに遷移するので、画像の通りクリック。
a.png

下記のページに遷移する。
a.png

以上で、会員登録は終了。

2 Heroku Toolbelt (CLI)のインストール

(1)下記のボタンを押し、ソフトをダウンロード
以下のリンクにアクセス
https://devcenter.heroku.com/articles/heroku-cli
a.png
mac版をインストールして解凍する

(2)下記の指示通りに、インストールを完了させる
a.png
(3)下記の画像が出てきたら、続けるを押す
a.png
以下も同様に続けるを押す
a.png
(4)インストールを押す
スクリーンショット 2020-04-10 20.03.03.png
(5)PCのパスワードを入力する
a.png
(6)下記の画像が出たら、インストールは終了
a.png

3 Heorkuにターミナルからログインしてサーバーを設定しよう

#デプロイしたいアプリのディレクトリパスに移動

$ cd [移動したいディレクトリのパス]

#herokuにログイン。

$ heroku login 

注意点として事前にローカルでデプロイしたいアプリは全てコミットしてプッシュしておく必要がある。

git add .
git commit -m "コミット"
git push origin master  //masterを更新

そのあとheroku create サーバーの名前 という構成でターミナルにタイプすれば
サーバーの構築をすることができる。

#サーバー名は例

$ heroku create ○○

上記サーバーの名前がHerokuのトップ画面より確認できたら、
それではいよいよデプロイする!

デプロイとリリース後の確認

#herokuのサーバに、アップロードするためのコマンド

$ git push heroku master

#今回はPostgresqlを使ったアプリを本番リリース。DB設定

$ heroku run rake db:migrate

もし以下のエラーが出たならば

remote:  !
remote:  !     Precompiling assets failed.
remote:  !


アセットのプリコンパイルの設定でエラーが起こっていることを疑ってみて下さい。

プリコンパイルとは

アセットを事前に
1.コンパイル
2.統合
3.圧縮
4.ダイジェスト付与
する行為のことを指します。コンパイルというのはSASSやVue.js、Reactなどで書かれたコードを素のCSSやJavaScriptに変換する処理です。
Rails Ver.5だとアセットコンプラインという機能がプリコンパイルをやっていて、sporockets-railsというgemで実装されています。

エラー解消法

config/environments/production.rbの

config.assets.js_compressor = :uglifier
をコメントアウトする。

その後、
$ git push heroku master
を実行するとエラーが解消されると思います。

ターミナル上で以下のような記述があると思うので「(例)https://○○.herokuapp.com」がデプロイ後のURLになります。
remote:        https://○○.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/○○.git

エラー解消後は$ heroku run rake db:migrateを忘れずに実行
```!!!

【CSS】ブロック要素の周りに隙間があるならリセットCSS

$
0
0

経緯

色々作って来たのはいいけど解決してなかったことが解決したので備忘録に

サイト作りの最初はどこにどう配置するかデザインはどうするか悩んで決まらなかったら勢いで作るんですけどタイトル通りの事が起こりました
2枚目.png
分かりやすく背景色を付けてます。

何故こんな事が起こるのか

微妙に隙間が出来ていてなんで出来るのか考えてすぐ答えが出ました。
ブラウザにはそれぞれデフォルトでcssが用意されていて何もしていなければそのcssが適用されちゃうのでこんな事が起こっちゃうんです。なのでリセットcssというのを用意してあげてそっちを読み込んであげれば直ります。
リセットcss自体は色んな所に転がっているので調べてみてください。
4枚目.png

結論

最初からリセットcssを用意してあげましょう。


初心者によるプログラミング学習ログ 287日目

$
0
0

100日チャレンジの287日目

twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。
100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。
287日目は、

CSSで華やかなサイトにしたい②~文字や文章の装飾、Webフォントの使い方~

$
0
0

文字や文章の装飾をしよう

今回はCSSで文字や文章の装飾をしていきます:relaxed:
文字は情報を伝えるだけでなく、ユーザーに様々な印象を与えるデザイン要素なので、Webサイト上で美しく表示できるようにしていきましょう:bangbang:

今回の記事:arrow_down:

  • VSCを使ってCSSの簡単プロパティ指定
  • 文字の大きさを変える「font-sizeプロパティ」
    • 適切な文字サイズは?
    • 見出しとジャンプ率
  • 文字の太さを変える「font-weightプロパティ」
    • 長文に太文字は使わないほうが良い?
  • フォントの種類を変える「font-familyプロパティ」
  • Webフォントを使ってみよう
  • 行の高さを変える「line-heightプロパティ」
  • 文章をそろえよう「text-alignプロパティ」
    • 中央揃えは短文にしよう
  • 文字に色を付けてみよう「colorプロパティ」

CSSの基礎文法はから確認したい人はこの記事へ:point_down_tone2:
CSSで華やかなサイトにしたい①~CSS適用方法と基礎文法~

VSCを使ってCSSの簡単プロパティ指定

今回は、VisualStudio Code(以下VSC)を使用して、CSSを書いていきます。

インストールからプロジェクトの作成まで:point_down_tone2:
Visual Studio Codeの導入と使い方

フォルダとファイル作成手順:point_down_tone2:
HTML/CSS/JSデモ-cssで見た目の調整をしよう

VSCではプロパティを指定すると候補を出してくれるので、便利です。
GIF 2020-04-11 7-11-21.gif

文字の大きさを変える「font-sizeプロパティ」

まずは、文字の大きさを変えていきましょう:wink:
font-sizeプロパティで指定します。大きさは主に「px」や「rem」、「%」を使います。

主な値

指定方法説明
数値数値に「px」や「rem」、「%」などの単位を付ける
キーワードxx-small,x-small,small,medium,large,x-large,xx-largeの7段階で指定できる。mediumが標準サイズ

ページ基準となる<html>タグに「font-size:100%」を指定すると、ブラウザーのデフォルト文字サイズ、またはユーザーがブラウザーの環境設定により調整したサイズを基準に相対値を設定できます。それに対し、「px」で指定したサイズは、基準サイズと関係なく絶対値として設定されます。

HTML
<h1>猫の好きな事</h1><h2>毛づくろいをすることが好き</h2><p>毛づくろいの目的はいくつかありますが、舌にある無数の突起をブラシ代わりにして、体を清潔にすることが大半。
    猫は、起きている時間の30〜50%を毛づくろいに費やすほどキレイ好きなんです。</p>
フォントサイズ例:CSS
html{font-size:100%;}h1{font-size:2em;}h2{font-size:20px;}

image.png

※<h1>タグのテキスト「猫の好きな事」は「2em」が設定されているので、基準サイズである文章の2倍サイズになっています。

適切な文字サイズは?

適切な文字サイズ14px~18px程度に設定するのが一般的です:thumbsup_tone2:
また、デザインに統一感を持たせるため、文字サイズのバリエーションは2~5種類程度にとどめておきましょう。

見出しとジャンプ率

文章の見出しをデザインする時は、文字のジャンプ率についても考える必要があります。
ジャンプ率とは…??:thinking:
:bulb:見出しと本文の文字サイズの比率のことです。
文字のサイズの大きさの違いが大きいと「ジャンプ率が高い」、小さいと「ジャンプ率が低い」と表現されます。ジャンプ率が高いと、躍動的で楽しい雰囲気になり、逆に低くなると上品で落ち着いた雰囲気になります。
ジャンプ.png

文字の太さを変える「font-weightプロパティ」

font-weightプロパティでフォントの太さを指定します。
1~1000の任意の数値で指定する指定することおできますが通常は「normal」「bold」などのキーボードで指定するほうが一般的です。

主な値

指定方法説明
キーワードnormal(標準),bold(太字),lighter(一段階細く),bolder(一段階太く)
数値1~1000の任意の数値
HTML
<p>通常の太さのテキスト</p><pclass="bold">太字にしたテキスト</p>
文字の太さ例:CSS
.bold{font-weight:bold;}

コメント 2020-04-10 082148.png
強調したい文字は太字にすると目立たせることができます。

長文に太文字は使わないほうが良い?

太いフォントで長い文章書くと、画面が黒々として、非常に読みづらくなってしまいます。長文の場合はすべて太字にするのは避けましょう。
太字は、見出しやキーワードに使うとメリハリが出てバランスが整います。
amicafe.png

フォントの種類を変える「font-familyプロパティ」

font-familyプロパティを使ってフォントの種類を指定します。CSSの設定では、複数のフォントを指定でき、「,(カンマ)」で区切って先に指定したものから順に適応されます。ブラウザーによっては日本語のフォント名を識別できないため、英語表記のフォント名も同時に指定しましょう。

主な値

指定方法説明
フォント名フォントの名前を記述。日本語名やフォント名にスペースが含まれる場合は、フォント名をシングルクォーテーション「'」かダブルクォーテーション「"」で囲って指定する。
キーワードsans-serif(ゴシック体)、serif(明朝体)、cursive(筆記体)、fantasy(装飾体)、monospace(等幅)から指定する

以下はフォント適応例です。今回はわかりやすくh1タグにそれぞれのクラスを適応させます。(本来のh1タグの使い方としては正しくありません。)

HTML
<h1class="serif">猫の好きな事</h1><h1class="gothic">猫の好きな事</h1><h1class="maru__gothic">猫の好きな事</h1>
フォント例:CSS
.serif{font-family:serif;}.gothic{font-family:'游ゴシック体','Yu Gothic',YuGothic,sans-serif;}.maru__gothic{font-family:'ヒラギノ丸ゴ pro W4','Hiragino Maru Gothic Pro',sans-serif;}

コメント 2020-04-09 082102.png

Webフォントを使ってみよう

以前のWebページでは、ユーザーのデバイスにインストールされているフォントのみ表示することが可能でしたが、最近では、Webサーバー上にある「Webフォント」を使うことで、デバイスにフォントがなくても表示できるようになりました。
そんな便利なWebフォント導入の仕方を見ていきましょう:heart_eyes:

ここでは、Googleが無料で提供しているGoogle Fontを導入します。
手順:arrow_down:

  • ①Google FontsのWebサイトにアクセス
  • ②フォントを選択する
  • ③HTMLファイルに読み込む
  • ④CSSファイルにスタイルを指定

①Google FontsのWebサイトにアクセス
Google FontのWebサイト:point_down_tone2:
Google Fonts

②フォントを選択する
使いたいフォントを選択します。
日本語のフォントも選ぶことができます。
コメント 2020-04-11 073537.png

選びたいフォントの右上の+ボタンを押すと場面下に黒い帯が表示されるので、クリックします。
GIF 2020-04-11 7-44-00.gif

③HTMLファイルに読み込む
「Embed Font」部分に書かれたコードをコピーします。
コメント 2020-04-11 073946.png

HTMLファイルの<head>内に記述します。
コメント 2020-04-11 074830.png

④CSSファイルにスタイルを指定
「Specify in CSS」に書かれたコードをコピーし、フォントを適応させたい要素に指定します。

HTML
<divclass="web_font"><h1>猫の好きな事ってなんだろう…?</h1><h2>①毛づくろいをすることが好き</h2></div>  <h1>猫の好きな事ってなんだろう…?</h1>  <h2>①毛づくろいをすることが好き</h2>
Webフォント例:CSS
.web_font{font-family:'M PLUS Rounded 1c',sans-serif;}

コメント 2020-04-11 080002.png

上がWebフォントを適応したものです。

うまく出来ましたか:question:
自分好みのWebフォントを探してみましょう:thumbsup_tone2:

行の高さを変える「line-heightプロパティ」

行の高さ(行間)を指定するときは、line-heightプロパティを使います。行の高さが文字サイズより小さい場合は行が異なるので注意が必要です。

主な値

指定方法説明
normalブラウザーが判断した行の高さで表示
数値(単位なし)フォントサイズとの比率で指定
数値(単位あり)「px」,「em」,「%」等の単位で数値を指定 

きれいに見えるおすすめの行間数値は、1.5~1.9の間です。フォントや全体のデザインによって調整するのが良いでしょう。

おすすめの行間:CSS
p{line-height:1.7;}

違う行間のものを見比べてみると…
コメント 2020-04-10 084912.png
やはり、1.7くらいがちょうどいいのではないでしょうか:point_up_tone2:

文章をそろえよう「text-alignプロパティ」

text-alignプロパティで、テキストをそろえる位置を指定します。日本語の場合、デフォルトで左揃えになっています。

主な値

指定方法説明
left左揃え
right右揃え
center中央揃え 
justify両端揃え 

「left」と「justify」を比べてみると…
「left」だと文章の右側がガタガタ不揃いですが、「justify」だと両端がきちっとなります。
コメント 2020-04-11 064914.png

中央揃えは短文にしよう

デザインの中で中央揃えしたい場面が多々あると思いますが、中央揃えだと行のスタート位置がバラバラになってしまいます:disappointed_relieved:
それにより、段落や文章を認識しづらくしてしまいます。
2~3行より長くなる場合は左揃えや両端揃えにしたほうが読みやすいでしょう。

文字に色を付けてみよう「colorプロパティ」

文字に色を付けるには、colorプロパティを使います。ここで注意が必要なのは、色の指定方法です。

CSSで指定する方法は3通りあります:point_down_tone2:

  • カラーコードで指定する
  • RGB値で指定する
  • 色の名前で指定する

わかりやすい方法としては、Googleの「カラーピッカー」を使うとよいかと思います。Googleで「カラーピッカー」と検索してみましょう:relaxed:
コメント 2020-04-10 085510.png

上記のHEXと書いてある「#」からははじまる6桁の英数字を合わせたものがカラーコードです。
RGBは赤(Red)、緑(Green)、青(Blue)の数値の組み合わせからできています。

主な値

指定方法説明
カラーコード「#(ハッシュ)」で始まる3桁もしくは6桁のカラーコード指定
色の名前「red」「blue」などの決められた色の指定
RGB値「rgb」から書き始め、赤、緑、青の値を「,(カンマ)」で区切って指定。透明度も含める場合は「rgba」から書き始め、赤、緑、青、透明度の値を「,(カンマ)」で区切って指定。透明度は0~1の間で記録する。 
フォントカラー例:CSS
h1{color:#0bd;}h2{color:navy;}p{color:rgba(30,30,221,0.842)}

image.png

文字の色が変わるだけで印象が変わりましたね:clap_tone2:

参考文献

Mana著、「1冊ですべて身につくHTML&CSSとWebデザイン入門講座」、SBクリエイティブ株式会社、2019年

1行追加するだけで画像がトリミング表示される方法

$
0
0

画像の比率が違くて画像が潰れてしまう

縦長や横長の画像を表示させようとして画像が潰れてしまったことはありませんか?

item.css
img{width:300px;height:300px;}

スクリーンショット 2020-04-11 14.03.38.png

一番左の画像が比率の関係で横につぶされしまっていますね。

1行追加するだけで中央でトリミングされた表示にできる

object-fit: cover;を追加するだけでいい感じに表示を変えてくれる

item.css
img{width:300px;height:300px;object-fit:cover;}

スクリーンショット 2020-04-11 14.07.00.png

1行追加しただけなのにちゃんと潰れないように表示してくれるようになりましたね。

参考

1行追加でOK!CSSだけで画像をトリミングできる「object-fit」プロパティー

cssサイズ指定 メモ

$
0
0

サイズ指定のpx,%,em,remについて

サイズ指定には絶対値相対値があります。
-絶対値 px
-相対値 %、em、rem

絶対値とは他の値に左右されない値のことを言います。
相対値とは他の値を参考に数値が決まる値のことを言います。

%とemについて

%とemは親要素を元に値を決めます。
%は

HTML
<divclass = "container"><divclass = "hello">Hello World</div></div>
css
.container{font-size:10px;}.hello{font-size:200%;}

とすると親要素の10pxの200%なので2倍となります。

emは
1em = 100%なので

HTML
<divclass = "container"><divclass = "hello">Hello World</div></div>
css
.container{font-size:10px;}.hello{font-size:2em;}

とすると同じく2倍になります。

remについて

remは%、emと少し違い、親要素は一緒でもルート要素を元にします。
ルート要素とはhtmlセレクタを指します。

css
.html{font-size:20px;}.hello{font-size:1rem;}

この場合ルート要素の20pxに1remなので1倍となり、20pxの大きさになります。

IE11でバグるCSS対策法

$
0
0

IE11で利かないCSS

自分が把握しているもので以下になります。
(他もありましたらご報告お願いします)

  • × vmax(vminはいけるのに。。。)

  • × background-blend-mode
    (background-imageが表示されません。
     Edgeは、background-imageは表示されますが、
     効いていないです)

  • × object-fit(写真の比率が変になります)

  • transition
    (一律には言えませんが、スライドなどに仕込んだ時うまくいかない場合があります。)

IE11だけにCSSを適応させる方法

1.適応するcssを重ねて書く。

padding: 1% 0 6%; //vmaxが効かないIE用
padding: 1px 0 6vmax; //vmaxが効く他のブラウザ用

2.適応できるcssとhtmlで偽装する

写真を加工する方が一番手っ取り早いですが、どうしても!という場合の方法。

  • 写真の上に、position:absolute;で上から乗せる。
    乗算の場合は、透明度を高くした黒背景を。
    スクリーンの場合は、透明度を高くした白背景を。

  • 写真の下に、background-colorで色指定。
    写真の透明度を上げて、乗算・スクリーンっぽく見せる。

3.jsライブラリを使用

object-fit対策は、jsライブラリの使用が有効です。
「fitie」を使う方法もありますが、
自分はうまくいかなかったので、
「object-fit-images」を使用しました。
使い方はこちらのサイト様に詳しく載っています。
https://www.webcreatorbox.com/tech/object-fit

4.CSSハックを使う

こちらのサイト様をご参考にしていますm(_ _)m
https://chaika.hatenablog.com/entry/2018/04/06/120000

@media all and (-ms-high-contrast:none) {//IE対策
  transition:none;
}

文字数に応じて背景色の横幅が可変するCSS設定方法

$
0
0

文字数に応じて可変する背景色の設定方法についてメモします。

カード型のレイアウトに「カテゴリ名」などのワッペンをつける際に
文字数に応じて可変するには、classに
「display:inline-block」を設定することで解決できます。

以上です。ご機嫌よう。

Sassについてまとめ

$
0
0

本格的にポートフォリオ作りを始めたので復習の意味を含めてSassの復習をします。

1.入れ子構造

同じセレクタを何度も書かなくて良い

.main {
  margin: 20px;
  padding: 20px;
  border-radius: 5px;
  background-color: #f567ae;
 h1{
    color:#f8f8f8;
    font-size:34px;
  }
 p{
   color:#efefef;
   font-size:16px;
 }
}
mainクラスのh1・pタグを一箇所にまとめられる。

2.&記号(hoverとactive)

入れ子構造を使うことによって、「セレクタ:hover」を「&:hover」というように書き換え、一箇所にまとめることができる。この「&」はhoverだけでなく、activeなどにも使うことができる。

.main {
  margin: 20px;
  text-align: center;

  h3 {
    margin-bottom: 15px;
    color: #555;
  }
  .button {
  ・
  ・
   &:hover{
      opacity: 1;
          }
   &:active{
      position: relative;
      top: 7px;
      box-shadow: none;
           }
  }
}

3.特定のタグに適用させる

クラスの中の特定のタグにのみcssを適用させたい場合「要素・クラス名」とすることで指定ができるこれも&を用いることでまとめることができる。

.main {
  margin: 20px;

  .title {
    margin-bottom: 10px;
    padding-bottom: 3px;
    border-bottom: 1px solid #888;
    color: #555;
  }

  li {
    list-style: decimal;
    margin-left: 22px;
    color: #b5afaf;
    line-height: 26px;

    &.current-page{
      color:#f74c90;
     } 
  }
}

4.変数の定義

変数を定義し、クラスに代入する事もできる。
「$変数:css設定;」これにより変更も簡単になる。
※変数は利用する箇所より前で定義しないと使えない。
スコープの範囲についても他の言語の変数と同様。

$wanko-color: #7579a3;

.main {
  margin: 20px;
  border-radius: 5px;

  .title {
    font-size: 32px;
    margin-bottom: 5px;
    color: $wanko-color;
  }

  .button {
    background-color: $wanko-color;
    display: inline-block;
    color: #ffffff;
    padding: 8px 16px;
    border-radius: 5px;
    cursor: pointer;
  }
}

5.mixin

mixinとは、いくつかのコードを1つにまとめて、複数箇所で簡単に呼び出すことができる機能である。これにより、同じコードを何度も書く必要がなくなり、無駄なコードを省略することができる。
@mixin mixin名 { コード }」と記載。
呼び出すには
@include mixin名」

@mixin circle {
  display: inline-block;
  border-radius: 50%;
  margin-left: 10px;
  text-align: center;
  background-color: #888888;
  }
.main {
  margin: 20px 10px;
  color: #ffffff;

  .small {
    @include circle;

    width: 34px;
    height: 34px;
  }
  .medium {
    @include circle;
    width: 62px;
    height: 62px;
  }
  .large {
    @include circle;
    width: 90px;
    height: 90px;
  }
}

6.引数を渡す

mixinも引数としてincludeから値を渡すことができる。

@mixin circle($color) {
  display: inline-block;
  border-radius: 50%;
  margin-left: 10px;
  text-align: center;
  background-color:$color;
}

.main {
  margin: 20px 10px;
  color: #ffffff;

  .small {
    @include circle(#20efae);
    width: 34px;
    height: 34px;
  }

  .medium {
    @include circle(#61cbff);
    width: 62px;
    height: 62px;
  }

  .large {
    @include circle(#a070f7);
    width: 90px;
    height: 90px;
  }
}

7.関数を使用する

sassでは関数も使用することができる。
(特定の色を50%薄くするなど)

$blue: #0ac4ff;
$pink: #fd6eb6;
.main {
  margin: 10px;
  li {
    list-style: none;
    float: left;
    height: 100px;
    width: 33%;
    margin-bottom: 10px;
  }
  .blue1 {
    background-color: $blue;
  }
  .blue2 {
   background-color:darken($blue,10%); 
  } 
  .blue3 {
    background-color:darken($blue,20%);   
  }

  .pink1 {
    background-color: $pink;
  } 
  .pink2 {
    background-color:lighten($pink,10%)  
  } 
  .pink3 {
     background-color:lighten($pink,20%) 
  }
}

8.import

外部先からファイルを読み込む事ができる。
読み込み先のファイル名の先頭には「(アンダーバー)」を付ける必要がある。また、ファイルを読み込むためには右の図のように「@import "ファイル名"」とする。
import時に指定するファイル名は、右の図のように「
(アンダーバー)」と拡張子(.scss)を省略できる。
変数をまとめたファイルを作成し、使いたいファイル内で読み込むことでコードの整理ができる。

_variables.scss.

$twitter:#1dcaff;
$facebook:#405f9e;
↑
こちらのファイルで変数を定義する。
-----------------------------------------
@import "variables.scss";
.main {
  margin: 20px;
  text-align: center;

  .title {
    color: #455b6d;
    margin-bottom: 10px;
  }

  .button {
    display: inline-block;
    border-radius: 50%;
    margin: 10px;
    text-align: center;
    height: 64px;
    width: 64px;
    color: #ffffff;
    font-size: 32px;
    box-shadow: 1px 2px 6px rgba(106, 137, 152, 0.3)
  }

  .twitter {
    background-color:$twitter;
  }

  .facebook {
    background-color:$facebook;
  }
  .fa {
    line-height: 64px;
  }
}


CSSではじめ数秒点滅させ、後は通常表示させたいです。

$
0
0

お世話になります。

下記コードのように点滅させようとしているのですが、点滅した後にすぐ消えてしまいます。
この点滅設定の後に表示させるようにするにはどのように処理をしたら良いでしょうか?

<divclass="light_box"></div>
//widthheightは別途つけてあります.light_box{opacity:0;animation:flash0.2s3linear;}@keyframesflash{50%{opacity:1;}}

点滅後の処理について、調べても見つからずご教示頂けると幸いです。
お手数ですがよろしくお願いいたします。

svgアイコンが動く「useAnimations」の実装方法

$
0
0

実装手順

1.公式サイトからダウンロードする

useAnimations
ここには、ハンバーガーメニューやSNSアイコンなど、
あらゆるアイコンが無料で使用できます。

気になるアイコンにマウスオーバーすると、
Downloadボタンが出てきますので、それをクリックしてください。

2.ダウンロードしたzipから必要なファイルを抜き取る

zipの中には、

  • svg

  • json

の2種類が入っています。
静止しているアイコンが欲しい場合は、
svgをimgタグに普通に設置してください。

hoverやclickで動くようにするには、
svgは使わず、
jsonの方を使用します。

3.その他に必要なファイルを用意する

javascripで必要なもの

  • jQuery
    公式は、jquery-3.3.1.min.jsを使用しています。

  • lottie-player.js
    これ、どこから落としてくるのか分からなかったのですが、
    公式のjavascriptを調べると、URLがこれになっていました。
    https://d33wubrfki0l68.cloudfront.net/js/6b61e0a7f8d311b0d8e7594ed9df369497d4dc9d/js/lottie-player.js
    ダウンロードし、自分のサーバーに入れて使用されるのが良いかと思います。
    (正規ルートからダウンロードする方法があれば、
     教えていただけると有難いです。)

4.実装する

  • Social media Instagram Facebookアイコン

  • Navigation Menu V3(ハンバーガーメニュー)

の実装例です。

html

アイコンを入れたいタグの直ぐ上の親に、
クラス(anim-〇〇)を設定してください。

<!--インスタグラム、facebookアイコン(hover時)--><ul><liclass="sociallink"><aclass="anim-icon-instagram"href="インスタグラムへのリンク"target="_blank"rel=”noopener”></a></li><liclass="sociallink"><aclass="anim-icon-facebook"href="フェイスブックへのリンク"target="_blank"rel=”noopener”></a></li></ul><!--ハンバーガーメニュ(クリック時)ー--><buttonclass='header-burger-btn anim-icon-menu-003'></button>

javascriptライブラリ

body締めタグの直ぐ上に入れても動作します。

<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="crossorigin="anonymous"></script><script src="js/lottie-player.js"type="text/javascript"></script>

CSS

/*アイコンの大きさ変えたい時に入れてください-----------------*/.sociallinka{height:29px;width:29px;display:block;}.sociallinksvg{/*どちらかを100%,autoにする*/height:100%;width:auto;}/*アイコンの色を変えたい時に入れてください-----------------*/.header-burgersvg*{stroke:#fff;}

javascript

javascriptライブラリの後に入れてください。

//=========================//  svg animation//=========================//絶対パス取得//サイトに実装する際、相対パスだとページによってURLが変わる場合があるので、トップページURLを入れるvarhomeUrl='サイトのトップページURLを入れる';$(window).on('load',function(){//facebook(on hover)variconFacebook=this.document.querySelector('.anim-icon-facebook');varanimationFacebook=bodymovin.loadAnimation({container:iconFacebook,renderer:'svg',loop:true,autoplay:false,path:homeUrl+"js/svg-animation/facebook.json"});animationFacebook.setSpeed(1);vardirectionFacebook=1;iconFacebook.addEventListener('mouseenter',(e)=>{animationFacebook.setDirection(directionFacebook);animationFacebook.play();});iconFacebook.addEventListener('mouseleave',(e)=>{animationFacebook.stop();});//instagram(on hover)variconInstagram=document.querySelector('.anim-icon-instagram');varanimationInstagram=bodymovin.loadAnimation({container:iconInstagram,renderer:'svg',loop:false,autoplay:false,path:homeUrl+"js/svg-animation/instagram.json"});animationInstagram.setSpeed(1);vardirectionInstagram=1;iconInstagram.addEventListener('mouseenter',(e)=>{animationInstagram.setDirection(directionInstagram);animationInstagram.play();});iconInstagram.addEventListener('mouseleave',(e)=>{animationInstagram.setDirection(-directionInstagram);animationInstagram.play();});//hamberger-buttonvaricon6=document.querySelector('.anim-icon-menu-003');varanimation6=bodymovin.loadAnimation({container:icon6,renderer:'svg',loop:false,autoplay:false,path:homeUrl+"js/svg-animation/menu-003.json"});animation6.setSpeed(1);vardirection6=1;icon6.addEventListener('click',(e)=>{animation6.setDirection(direction6);animation6.play();direction6=-direction6;});});

補足

1ページで複数箇所に設置したい場合

1ページに表示する数の分、javascriptの記述も増やす必要があります。
例えば、facebookアイコンを2つ表示させたい場合は
以下のようにします。

//1つ目の記述//上と同じ内容です//facebook(on hover)variconFacebook=this.document.querySelector('.anim-icon-facebook');varanimationFacebook=bodymovin.loadAnimation({container:iconFacebook,renderer:'svg',loop:true,autoplay:false,path:homeUrl+"js/svg-animation/facebook.json"});animationFacebook.setSpeed(1);vardirectionFacebook=1;iconFacebook.addEventListener('mouseenter',(e)=>{animationFacebook.setDirection(directionFacebook);animationFacebook.play();});iconFacebook.addEventListener('mouseleave',(e)=>{animationFacebook.stop();});//2つ目の記述//1つ目の記述と関数・クラスが被らないように名前を変更してください。//facebook(on hover) footervariconFacebook2=this.document.querySelector('.anim-icon-facebook--footer');varanimationFacebook2=bodymovin.loadAnimation({container:iconFacebook2,renderer:'svg',loop:true,autoplay:false,path:homeUrl+"js/svg-animation/facebook.json"});animationFacebook2.setSpeed(1);vardirectionFacebook2=1;iconFacebook2.addEventListener('mouseenter',(e)=>{animationFacebook2.setDirection(directionFacebook2);animationFacebook2.play();});iconFacebook2.addEventListener('mouseleave',(e)=>{animationFacebook2.stop();});

上記以外の「useAnimations」アイコンを使いたい場合

上では、Instagram、Facebook、ハンバーガーメニューの実装方法をご紹介しました。
これ以外のアイコンを実装したい場合、
javascriptの部分を、
公式の以下のファイルから、該当部分をコピペし、改造してください。
https://d33wubrfki0l68.cloudfront.net/js/e09b5e0935c0a09877e0cea70a5360d1dd4ce169/js/lottie-settings.js

IE11では動作しないよ

IE11では、

-- addEventListener('mouseenter', (e)

-- addEventListener('mouseleave', (e)

-- addEventListener('click', (e)

でエラーが出て、アイコンそのものが消えました!!!
ほんとやめてくれ。。。。

回避策として、
IE11では、静止SVGを入れるように条件分岐する方が早いと思います。。
回避策は、
IE11でエラーが出るjavascriptを条件分岐で読み込まなくする方法
をご参照ください!

【jQuery】ログイン画面をフェードインさせたい

$
0
0

前回のjquery導入が完了し、
最初のログイン画面をフェードインさせたかったので
簡潔にご紹介。

アクセスして少ししてから表示させたい

Image from Gyazo

jsファイルに記述

sample.js
$('head').append('<style>body{display:none;}');$(window).on("load",function(){$('body').delay(450).fadeIn(1200);});

deleyとfadeinの()の中身は任意で。
ミリ秒で書いています。


※私はapplication.jsで、jsファイルをまとめて読み込んでいるので
作業していませんが、そうでない方は
html側でjsファイルを読み込む必要があります。

Dialog を Modal で使うための最小のコード

$
0
0

この記事は dialog を使ってるので Chrome でみてください。

最小のコード

HTML で Modal Dialog を使う最小のコードはこんな感じ。

<dialogid=Dialog>
    Hello<br><inputid=DialogCanceltype=buttonvalue=Cancel></dialog><inputid=OpenDialogtype=buttonvalue=Open><br>
Result: <spanid=Result></span>
constI=$=>document.getElementById($)constdialog=I('Dialog')I('DialogCancel').onclick=ev=>dialog.close('Cancel')I('OpenDialog').onclick=ev=>{dialog.showModal()dialog.oncancel=ev=>dialog.close('Escape')dialog.onclose=ev=>I('Result').textContent=dialog.returnValue}

こうすると以下の2つの場合にダイアログは終了する。

  • ボタンが押された時
  • エスケープキーが押された時

ボタンの onclick でダイアログをクローズしてやって、その時に引数に渡したものが dialog の onclose 時に returnValue に入ってくるのでそれで何ボタンが押されたか判断すればいい。

エスケープキーが押された場合のために、dialog の oncancel で close に何か(ここでは Escape という文字列)を渡す。

See the Pen GRpgwwQ by Satachito (@satachito) on CodePen.

バックドロップのクリックで閉じたい場合

バックドロップ(モーダルダイアログが出てる時のページの輝度の下がっている部分)でクリックされた時も閉じたい場合はちょっと工夫がいる。以下輝度の下がっていない部分は「本体」

<dialogid=Dialog><div>
    Hello<br><inputid=DialogCanceltype=buttonvalue=Cancel></div></dialog><inputid=OpenDialogtype=buttonvalue=Open><br>
Result: <spanid=Result></span>
dialog{;padding:0}
constI=$=>document.getElementById($)constdialog=I('Dialog')I('DialogCancel').onclick=ev=>dialog.close('Cancel')dialog.onclick=ev=>ev.target==dialog?dialog.close('Backdrop'):void0I('OpenDialog').onclick=ev=>{dialog.showModal()dialog.oncancel=ev=>dialog.close('Escape')dialog.onclose=ev=>I('Result').textContent=dialog.returnValue}
  • dialog の onclick で ev.target に実際にクリックされたエレメントが入ってくる。
  • バックドロップも dialog の一部なので、クリックされた場合 ev.target は dialog になる。
  • dialog の本体がクリックされた場合、直下の div が本体全体を覆っているので ev.target は直下の div になる。
  • なので dialog の onclick で、ev.target が dialog であればバックドロップでクリックされている。

ここで注意点は以下の2つ

  • dialog の直下に div を置く
  • dialog の padding を 0 にする

これをやらないと本体の余白の部分でクリックした時も close してしまう。

See the Pen LYpEXPY by Satachito (@satachito) on CodePen.

Railsのsample_appを少しだけモダンにしてみた

$
0
0

Railsチュートリアルでsample_appを作れるようになったものの、bootstrap感満載の見た目なので、別のCSSフレームワークに変えてみた。

CSSフレームワークは以下が候補だったが、使うのが簡単そうで人気も高いらしいBulmaをなんとなく選んでみた。

  • UIkit
  • Materialize
  • Foundation
  • Semantic UI
  • Bulma

導入手順

Gemfileに以下を追記

gem "bulma-rails", "~> 0.8.0"

app/assets/stylesheets/custom.scssを以下のように修正

// @import "bootstrap";@import"bulma";

サーバーを立ち上げて画面を確認。
image.png

$gray-lightが定義されていないらしい
元々bootstrapのLESS変数だったので参照できなくなった模様
(詳しくは第5章の5.2.2参照)

bulmaのcolorsページを参考に$gray-lightに書き換える

同様の手順で$gray,$gray-darker,$gray-lighter,$state-danger-text$grey,$grey-darker,$grey-lighter,$dangerに書き換える

image.png

次はhas-errorクラスが見つからないと怒られる。
.has-errorはbootstrapのCSSクラスなのでこれをBulmaのis-dangerに差し替える

画面を確認
image.png

エラーがなくなったが、見た目がおかしなことになっている。一つずつ直す。

まず、ヘッダー
app/views/layouts/_header.html.erb

https://bulma.io/documentation/components/navbar/

<headerclass="navbar is-dark is-fixed-top"role="navigation"aria-label="main navigation"><divclass="container"><divclass="navbar-brand"><%=link_to"sample app",root_path,id: "logo",class: "navbar-item"%></div><divid="navbarBasicExample"class="navbar-menu"><divclass="navbar-end"><%=link_to"Home",root_path,class: "navbar-item"%><%=link_to"Help",help_path,class: "navbar-item"%><%iflogged_in?%><%=link_to"Users",users_path,class: "navbar-item"%><divclass="navbar-item has-dropdown is-hoverable"><aclass="navbar-link">
              Account
            </a><divclass="navbar-dropdown"><%=link_to"Profile",current_user,class: "navbar-item"%><%=link_to"Settings",edit_user_path(current_user),class: "navbar-item"%><hrclass="navbar-divider"><%=link_to"Log out",logout_path,method: :delete,class: "navbar-item"%></div></div><%else%><divclass="buttons"><%=link_to"Log in",login_path,class: "button is-primary"%></div><%end%></div></div></div></header>

image.png

次に中央部分
app/views/static_pages/home.html.erb

<%iflogged_in?%><divclass="row"><asideclass="col-md-4"><sectionclass="user_info"><%=render'shared/user_info'%></section><sectionclass="stats"><%=render'shared/stats'%></section><sectionclass="micropost_form"><%=render'shared/micropost_form'%></section></aside><divclass="col-md-8"><h3>Micropost Feed</h3><%=render'shared/feed'%></div></div><%else%><sectionclass="hero is-light is-fullheight-with-navbar is-bold"><divclass="hero-body"><divclass="container"><h1class="title is-1">
        Welcome to the Sample App
      </h1><h2class="subtitle">
        This is the home page for the
        <ahref="https://railstutorial.jp/">Ruby on Rails Tutorial</a>
        sample application.
      </h2><pclass="has-text-centered"><%=link_to"Sign up now!",signup_path,class: "button is-primary is-large"%></p></div></div></section><%=link_toimage_tag("rails.png",alt: "Rails logo"),'http://rubyonrails.org/'%><%end%>

image.png

見た目が復旧した。
ここからは割愛するが、他の画面も地道に直していきました。

bulmaは公式サイトがわかりやすく、
bootstrap同様、クラス指定だけでいろいろなパーツを装飾できるので、いろいろ試していきたい。

Viewing all 8767 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>