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

rails 開発日記1 トップページの実装

$
0
0

 トップページの実装

*この記事は技術や知識の共有目的ではなく、完全に自己満足のアウトプット用です。

<開発環境>
1. ruby 2.6.3
2. Rails 5.1.6
3. AWS Cloud9
4. GitHub
5. Heroku(予定)

SNSのコピーサイトの開発にあたり、トップページを実装をした。
スクリーンショット 2020-04-14 16.14.22.png
                 1、トップページの完成系

自分なりに工夫した点

1.パーシャルの使用
パーシャルは開発時にHTMLの中身を整理する為のものである。
Railsチュートリアルを参考に、headerとIE用のHTML shimをまとめてみた。

<!DOCTYPE html>
<html>
  <head>
    <title>JiroApp</title>
    <%= csrf_meta_tags %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
    <%= render 'layouts/shim' %>
  </head>

  <body>
    <%= render 'layouts/header' %>
    <%= yield %>
  </body>
</html>

これによって、headerのHTMLを <_header.html.erb> に移行することができました。

HTML CSSはあまり得意ではないのでこだわるつもりはないです。。。

次はユーザー登録機能の実装をしていきます。


HTML、CSSで忘れそうだけど押さえておきたいこと

$
0
0

CSS

HTMLと別のファイルで書くのが基本。

大きさの単位

絶対的な大きさとしてpxが主流。しかしスマホの普及により、rem(html要素のフォントを1とした時の相対的な単位)を使用される

色は#FFFFFFやrgb(255,255,255)などの方法で表される。
カラーコードでぐぐるとわかる

idとclass

idは一度しか定義できず、CSSで読みだすときは#をつける。
classは複数回定義できるが、CSSで読みだすときは.をつける。またclassは複数所属可能なので、class = aaa bbbとしてやるとaaaとbbbに所属できる。

優先度

親要素でCSSの内容を記述し、子要素でもCSSの内容を記述したとき子要素の内容が優先される
同じ要素のidのCSSの内容とclassのCSSの内容ならば、idのCSSの内容が優先される

詳しくはCSSセレクタの優先度に関してググると良い

ボックスモデル

HTMLの要素はpadding border marginで囲まれている。
HTMLの要素自体の幅、高さをwidth、heightで表す

要素.jpg

またその要素に
box-sizing: border-box;
と指定すると、widthやheightをmarignまで含んだ時の大きさに設定することになる

インラインとブロック

ブロック要素

ブロックは画面の横幅全体を使い、次の要素は改行された状態になる。
例 h1~h6 p form table ul ol dl li div

text-alignやmarginをいじるやインラインブロックへの変更をすることでブロック要素は配置設定に使用できる(インライン要素は配置設定をしないのは基本。)

インライン要素

インラインは画面の横幅全体を使わず、次の要素は隣にくるようになる。
例 br a img input select textarea strong span

上述したがインライン要素は配置設定をしない。

そもそも下記なので配置設定できない。
・大きさ制限できない(width,height)
・marginできない(ホントは左右はできる)
・text-alignできない
・floatできない

またインライン要素の配置を変えたいならば、その要素に親要素を作り、そいつのtext-alignやmarginをいじるやインラインブロックへの変更をすることで配置設定をする。そのためインライン要素から別の要素への変換(display)をする機会はない。

インラインブロック要素

インラインブロックは基本的にブロック要素的な面が強いが、次の要素は隣にくるようになる。ブロック要素だけでは配置設定のバラエティーがなくなるので、ブロック要素からインラインブロック要素に変更することがある。ブロック→インラインブロックのパターンしかない。

重要

以上のことからわかることは
配置変更をしたければ、ブロック要素をいじることで行う。例えば、text-alignやmargin変更、インラインブロックへの変更で横に大きいの並べるとか

text-alignとmargin

私はtext-alignとmargin 0 autoが同じだと思っていた。でも違うのだ。

text-alignはその要素の幅の範囲内(width内)での文字の位置を指定している。つまり文字の位置を指定しているのである。

marginはその要素のmargin(余白)の部分を変更しているので、要素の幅(width)や高さ(height)の範囲には影響を与えない。

要するにtext-alignは要素の中での指定、marginは要素の外側での指定。

marginのあれこれ

同じ方面でmarginがかぶると、marginの相殺(margin同士の足し算ではなく、marginの大きい方を採用する)。marginの相殺と呼ぶ
margin 0 autoで中央ぞろえ
margin-left autoでベタッリ右

要素の真ん中に文字をおきたければ

要素の大きさ(幅や高さ)のwidthやheightで行う。要素の大きさを変えても要素内での文字の位置は変わらない。

要素内での文字の位置を変えたければ、text-align: center;で文字を幅でも高さでも真ん中に置くのかを決める。またline-heightで文字自体の高さを決めれるので、要素のheightとline-heightを同じにすることで、完璧に要素の真ん中にもじが来るようになる。

範囲指定

範囲を指定するためだけの要素

ブロックで範囲を指定するのがdiv(text-alignやmarginでいじって、指定範囲の位置指定)

インラインで範囲をしてするのがspan(特定の文字の色変更とかに使用)

background

backgroundを使用すると背景を変えれる。backgroundでの範囲はその要素のborderまでの範囲なので、余白をつけたければ,marginを使う。またrepeatを指定すると、永遠にその背景ってことになる。

img

imgはインライン要素なので、pで囲って無理やりブロックにして、配置指定をする。

HTML

<>で囲まれている部分を要素idやnameなどは属性という。

h1やpで囲んで記事を書くが、なくても文字は表示される

imgのalt属性は画像が表示されない時に出る文字、最近はSEOに必要な要素にもなっている?

ulは箇条書き(順序なし)、olは箇条書き(順序あり)、dlは説明って感じ(dlの中にdt(用語)、ddが用語の詳細説明)

表に関して。trで行をざっくり作る、trの中にthやtdを入れて行にマスを作っていくイメージ。thは見出し、tdは左寄せ。

bodyの構造。headerとfooterを頭とお尻に。その間の空間をarticleとして、その中に複数のsection(切りの良いところで、次のセクションに次の内容を書く)を置く。最近はSEO的にも重要だとか

form_tagとform_forの違い。モデルに対して操作を行うならば、form_forを使い、そうでないならばform_tagを使用する。詳しくはrailsで学ぶサーバーサイド

またform_tagでmethodを指定するが、postは見えない状態で、paramsの中に入れて運ぶ感じ。getではURLに?でクエリ(条件)を置いて、送信する。詳しくはrailsで学ぶサーバーサイド

<a>は外部のURLにアクセスするための要素
<%= link_to %>はアプリ内部のrootingにアクセスするために作られた関数

viewでの注意

・お作法としてapplication.htmlには統一レイアウトを置き
yeildという場所を書き、そこに全てのviewの内容が反映される。

app/views/layouts/application.html.erb
<html><head><title><%=full_title(yield(:title))%></title><%=csrf_meta_tags%><%=stylesheet_link_tag'application',media: 'all','data-turbolinks-track':'reload'%><%=javascript_include_tag'application','data-turbolinks-track':'reload'%><%=render'layouts/shim'%></head><body><%=render'layouts/header'%><divclass="container"><%=yield%><%=render'layouts/footer'%></div></body></html>

同様に全てのviewは、別のviewファイルから読みだして自身のviewに反映させてもいい

<%=render'反映させたいviewの場所'%>
<%= render @microposts %>
#これをするとviewの中のmicroposts/_micropost.html.erbを追加することになる

これをパーシャルを追加するという。他にも

<%= render 'shared/error_messages', object: f.object %>
#これを行うとshared/error_messagesの方で、f.object(つまりf自身、入力内容自身)を変数objectと設定してパーシャリ川で使用できるという事

_error_messages.html.erb
<% if object.errors.any?%> #このようにして使用する
.
.
.

これも同じような意味

this.erb
<%= render partial: "list_footer", locals: {username: @username, listname: @listname} %>

この意味はlist_footerパーシャル(view)の中でthis.erbで定義した@usernameをusername、 @listnameをlistnameとして使用できるという事。しかしloacalsを使わずに、@usernameをそのまま使用することも可能。しかしlocalsを使った方がパーシャルを再利用しやすいため使用される。参考文献は部分テンプレートにlocals:を使って変数を渡す時は partial:もつけないとエラー

・erb(rubyの埋め込まれたHTML)
erbでは<% 中身 %>で中身の処理をして、<%= 中身 %>では中身の処理をして結果をHTMLに出す。

app/views/static_pages/home.html.erb
<% provide(:title, "Home")%>#ここで:titleにHomeを代入<!DOCTYPEhtml><html><head>#ここで読み出して、HTMLに出す<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
  </head>

provideもyieldも関数で、変数に値を入れる、読み出すの処理をしてくれているということ。

HTML / CSS から Nuxt.js で webアプリを開発するまでのロードマップ

$
0
0

はじめに

この記事では、HTML / CSS から学び、Nuxt.js で webアプリを開発するまでの過程を紹介します。

本記事は、以下のような方が対象です。同じ初学者を意識しています。

  1. web開発に興味がある。
  2. HTML / CSS を学んだが、そこからどうすれば良いか謎。不可思議。
  3. フレームワークとは何ぞや。フレームワークのフレームワーク?
  4. どこまでやれば、どういうものができるのか具体的に知りたい。
  5. とりあえず、web開発に興味はあるよ。

その道の方でも、「趣味で学ぼうとする人は、こういう学び方をしているんだな」と参考になるかもしれません。

筆者であるうたかたは、web開発を始めて早2ヶ月ですが、わからないことでいっぱいです。基本的に表面的な理解に終始しています。ただ「初学者でも、今あるものを使うと、こういうものができるよ」という具体例とその学習過程を紹介することで、何か少しでもお役に立てたらと思います。Qiita も利用し始めたばかりなので、何かありましたら色々とご指摘いただけると助かります。

開発中の音楽SNS「UTAKATA」の紹介・解説動画を YouTube に投稿しているので、「この記事で紹介しているもの(Vue.js・Vuetify.js・Nuxt.js・Firebase)を学ぶと、少なくともこういう webアプリを作ることができるよ」という具体例として参考にしていただければと思います。近日中にベータ版(?)を公開する予定です。

最後に、本記事は各言語・フレームワークについて詳細な解説をするものではありません。「何を学べば良いかわからない」「何を学べば、何ができるかわからない」という方に、一つの指針を提供することが目的です。

少し前置きが長くなりましたが、最後までお読みいただけると嬉しいです。

ロードマップ

これまでの学習の軌跡を振り返りつつ、web開発のロードマップを紹介します。

学習の流れは、HTML / CSS → JavaScript → Vue.js & Firebase → Vuetify.js → Nuxt.js でした。

学習期間と内容は、概ね以下の通りです。

  • 前半(1ヶ月):HTML / CSS / JavaScript の基本を学び、その後何を学べば良いか調べてた。もはや「web開発」とは何ぞや状態。そして今も。
  • 後半(1ヶ月):Vue.js → Firebase → Vuetify.js → Nuxt.js の存在を辿り、動画を見て、公式ドキュメントを見ながらコードを書いた。

主に前半は The Net Ninja さんの動画(YouTube & Udemy)、後半は公式ドキュメントを頼りにしています。

The Net Ninja さんについては、偶然見つけただけで、特に深い理由はありません。運命の出会いでした。英語ですが、とてもわかりやすいです。このわかりやすさに慣れると、少しつらいものもあります。ストリートファイターの春麗(Chun Li)が好きみたい。マリオも出てくる。ほぼ全て無料で見ることができるのには、感謝しかないです。謝謝。

「どこまでやれば、どういうものができるのか」が想像もできなかったので、一度動画を(コードを書かないで)見るだけみて、Nuxt.js に行き着いてから、公式ドキュメントを参照しつつ、コードを書き始めました。

この記事を参考にする場合も、一度最後まで読み通して見通しをつけてから、各言語・フレームワークを学習し始めると良いと思います。知らない用語が出ても、「そういうものがあるんだね」と思って進んでください。知らないことばかりですもん。

学習項目は以下の通りです。

  • HTML
  • CSS
  • JavaScript
  • Vue.js:JavaScript のフレームワーク。
  • Vuetify.js:Vue.js のデザイン担当。
  • Nuxt.js:Vue.js の開発環境・機能強化担当。
  • Firebase:ユーザー認証(登録・ログイン)やデータベースを管理。

1. HTML / CSS

自分は「Flexbox とは何ぞや」という人間だったので、以下の動画も見ました。あとで紹介する Vuetify.js で採用されている Grid システムをそのまま理解することができます。

動画が洗練されていくのを肌で感じることができるのは、複数見た人の特権です。

今回紹介している動画は有料(Udemy)2つを含みますが、それ以外はほぼ全て無料なので、ぜひ覗いてみてください。

最近では、Firebase Functions に関するシリーズ(無料)が投稿されていたようです。まだ見ていませんが、きっと参考になると思います。

2. JavaScript

フルバージョンは Udemy(有料) で公開されています。動画の説明欄にクーポン付きのリンクがあるので、そちらからご利用ください。

基本的な文法(「こうやって書くよ」)・関数(「こういうことがしたい時、こういう機能があるよ」)・概念(「こういう考え方で、コードを組み立てるよ」)を一通り学ぶことができます。

学習の指針としては、動画を見て基本的な概念を理解しつつ、文法・関数(の存在)を何となく知っておきます。実際にコードを書く段階で、その関数名やしたいことで検索して、例を見ながら書きます。「検索できるようになる」こと、そして「書かれている内容を理解できるようになる」ことが大事だと思います。全てのコードを覚えておく必要はありません。未だに何でも調べてます。

この後も基本的に、動画を見て何となく理解する → ドキュメントを参照してコードを書くという流れです。

3. Vue.js& Firebase

Udemy(有料)で公開されている動画の紹介動画です。動画の説明欄にクーポン付きのリンクがあるので、そちらからご利用ください。

web開発を学ぶのにかけた費用は、以上の動画2つ分(約2400円)です。
安いと思います。感謝しかないです。

Vuex については、以下の動画(無料)を参考にしました。

Vue については、以下のサイトも参考になりました。Vuex についての記事を載せておきます。目を通せてはいないですが、初学者にも、とてもわかりやすい解説です。謝謝。

一応、Firebase [Firestore/Storage] セキュリティルールの具体例を以下の記事で紹介しています。とても参考になったブログ・記事についても触れているので、いつの日か覗いてみてください。喜びます。

4. Vuetify.js

使用しているコンポーネント(デザインを形作るパーツ。Buttonコンポーネントなど)や使い方が古い場合もありましたが、コメント欄で有志により全て補足されていました。

コードを書くときには公式ドキュメントの例を見ながら書くので、まずは動画で雰囲気を掴めれば良いと思います。その点で、とても参考になりました。

5. Nuxt.js

存在は Vuetify.js の公式ドキュメントで知りました。

Nuxt.js については、はじめから公式ドキュメントのガイドに沿って何となく理解していきました。一応、Vue School の動画も見たと思います。

Vue.js・Vuetify.js・Nuxt.js・Firebase は、いずれも日本語の公式ドキュメントが充実しているので、動画を見て雰囲気を掴んだら、そのまま公式ドキュメントを読むと何となく理解できます。どんなにわかりやすいサイトがあっても、参照しているのは最終的に公式ドキュメントのはずなので、それを読むことで安心感を得るのです。公式ドキュメントのわかりにくいところは、検索すれば先人が知恵を貸してくれます。

おわりに

この記事では、HTML / CSS から学び、Nuxt.js で webアプリを開発するまでの過程を紹介してきました。

「何があるかわからない」「何から手をつけていいかわからない」という方の参考になれたら幸いです。

web開発を学ぶ上で、数多くのサイト・記事を参考にさせていただいています。本記事では全て列挙することはできませんが、この場を借りてお礼申し上げます。いつもありがとう。謝謝。

趣味で NCS 等の和訳を YouTube に投稿しているので、よければそちらもご覧ください。
YouTube チャンネル:うたかた / UTAKATA

少し長くなりましたが、ここまで読んでいただきありがとうございました。ではでは!

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

$
0
0

100日チャレンジの291日目

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

CSSで華やかなサイトにしたい③~背景を彩ろう(色、画像の設定)~

$
0
0

CSSで背景を彩ろう

今回は背景に色を付けたり、画像を設定したりします:relaxed:
背景が変わることで、Webサイトの印象が大きく変わります。文字の読みやすさに注意しながら、背景を選んでいきましょう:bangbang:

今回の記事:arrow_down:

  • 背景に色を付けよう「background-color」プロパティ
  • 背景に画像を設置しよう「background-image」プロパティ
    • 背景画像の繰り返し表示「background-repeat」プロパティ
    • 背景画像の大きさを指定「background-size」プロパティ
    • 背景画像の位置指定「background-position」プロパティ
    • 背景関連プロパティをまとめて指定「backgroundプロパティ」
  • 上級者編?!背景画像のカスタマイズ
    • 背景画像にブレンドモードで色を重ねる
    • 背景をグラデーションカラーにする
    • 背景画像にブレンドモードでグラデーションカラーを重ね合わせる
  • 写真素材、背景画像をダウンロードできるオススメWebサイト

背景に色を付けよう「background-color」プロパティ

背景に色を付けるには、「background-color」プロパティを使います。色の指定方法は文字に色をつけるときと同じく、カラーコードや、色の名前を書きます。

文字の色の付け方はこちらを参考にしてください:point_down_tone2:
CSSで華やかなサイトにしたい②~文字や文章の装飾、Webフォントの使い方~
文字に色を付けてみよう「colorプロパティ」

主な値

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

ページ全体の背景に色を付けるなら<body>タグに対して指定します。

HTML
<h1>猫の好きな事</h1><h2>毛づくろいをすることが好き</h2><p>毛づくろいの目的はいくつかありますが、舌にある無数の突起をブラシ代わりにして、体を清潔にすることが大半。
    猫は、起きている時間の30〜50%を毛づくろいに費やすほどキレイ好きなんです。  
   </p>
ページ全体に色付け:CSS
body{background-color:pink;}

コメント 2020-04-13 084727.png

またタグや、クラスごとに背景色を設定することもできます。

ページ全体に色付け:CSS
h1{background-color:rgb(255,183,195);}h2{background-color:#fc5ba1;}p{background-color:#ff3845;}

image.png

背景に画像を設置しよう「background-image」プロパティ

background-imageプロパティで、要素の背景に画像を設置します。画像がちゃんと読み込まれなかったときのことも考え、背景画像と同時に同じような色合いの背景色も指定すると良いでしょう。

主な値

指定方法説明
url画像ファイルの指定
none背景画像を設定しない

「url」に続いて丸かっこ()内に画像のパスを記述します。CSSファイルから見た画像の位置を書きましょう。

ファイルパスについてはこちらを参考にしてください:point_down_tone2:
HTMLの基本的な書き方をマスターしよう-ファイルパスの指定

背景画像:CSS
body{background-color:whitesmoke;background-image:url(../img/bg.png);}

ページ全体に背景が設定されます。
image.png

背景画像の繰り返し表示「background-repeat」プロパティ

CSSのデフォルトの設定では背景画像を縦と横に繰り返し表示し、画面いっぱいに画像を敷き詰めます。これをどの方向に繰り返すか、または繰り返さないかをbackground-repeatプロパティで設定できます。

主な値

指定方法説明
repeat縦・横ともに繰り返して表示
repeat-x横方向に繰り返して表示
repeat-y縦方向に繰り返して表示
no-repeat繰り返さない

例えば先ほど背景に設定した画像は以下の模様の画像を繰り返して作ることができます:point_down_tone2:
jade.jpg

「repeat-x」で横一列に画像を並べてみます。

背景横一列繰り返し:CSS
body{background-image:url(../img/jade.jpg);background-repeat:repeat-x;}

image.png

「repeat-y」で縦一列に画像を並べてみます。

背景縦一列繰り返し:CSS
body{background-image:url(../img/jade.jpg);background-repeat:repeat-y;}

image.png

repeatで設定すれば、模様を繰り返して背景画像を作ることができますね:heart_eyes:

背景画像の大きさを指定「background-size」プロパティ

background-sizeプロパティで背景サイズを指定します。元の画像の比率を維持したまま要素に当てはめたり、指定したサイズに引き延ばしたりもできます。

主な値

指定方法説明
数値数値に「px」や「rem」、「%」などの単位をつける
キーワード「cover」、「contain」で指定

「cover」を使うと、画像の縦横比を保持したまま、表示領域をうめつくすように背景画像を表示できます。表示領域より画面が大きい場合は画面が切れます。

例:こちらの画像を背景画像として設定してみます:point_down_tone2:
bg-palmtree.jpg

背景画像大きさ:CSS
body{background-image:url(../img/bg-palmtree.jpg);background-repeat:no-repeat;background-size:cover;height:100vh;}

要素サイズいっぱいに画面が広がりますが、画像の下部分が切れます。
コメント 2020-04-14 151914.png

「contain」では、画像の縦横比を保持したまま、画像すべて表示されるように表示できます。表示領域のほうが画像より大きい場合は余白ができます。

背景画像大きさ:CSS
body{background-image:url(../img/bg-palmtree.jpg);background-repeat:no-repeat;background-size:contain;height:100vh;}

image.png

画像がすべて表示されましたが、右側に余白ができました。

背景画像の位置指定「background-position」プロパティ

background-positionプロパティで背景画像を表示する開始位置を指定します。基本的に横方向、縦方向の順にスペースで区切って記述します。デフォルトでは左上(left top)が表示開始位置です。

主な値

指定方法説明
数値数値に「px」や「rem」、「%」などの単位をつける
キーワード横方向は「left(左)」、「center(中央)」、「right(右)」、縦方向は「top(上)」「center(中央)」 「bottom(下)」

表示する位置が画面の四隅なら、キーワードで指定すると良いでしょう。

背景画像の位置:CSS
body{background-image:url(../img/jade.jpg);background-repeat:no-repeat;background-position:centertop;}

画面の上部、真ん中に表示しました。
image.png

背景画像の位置:CSS
body{background-image:url(../img/jade.jpg);background-repeat:no-repeat;background-position:30px80px;}

画面の左から30px、上から80pxの位置に表示しました。
コメント 2020-04-14 155512.png

背景関連プロパティをまとめて指定「backgroundプロパティ」

backgroundプロパティを使えば、背景色や、背景画像、サイズ、繰り返し表示など、背景に関するすべての値を一括で設定できます。すべてのプロパティを指定する必要はありません。指定していないものは初期値が適応されます。

一括指定できるプロパティ

  • background-clip
  • background-origin
  • background-size
  • background-color
  • background-position
  • background-attachment
  • background-image
  • background-repeat

「background-size」の値は「background-position」の直後に「/(スラッシュ)」で区切る必要があります。

一括指定:CSS
body{background:aliceblueurl(../img/bg-palmtree.jpg)no-repeatcenterbottom/cover;height:100vh;}

上級者編?!背景画像のカスタマイズ

背景画像に少し手を加えてカスタマイズしてみましょう:grin:
色を重ねたり、グラデーションカラーなどを使って、背景画像を華やかにしていきたいと思います。

背景画像にブレンドモードで色を重ねる

複数の画像や色を様々な手法で重ね合わせ、独特の効果を生み出す機能を「描画モード(ブレインモード)」といいます。
background-blend-modeプロパティを使い、値に加えたい効果の名前を指定すれば利用できます。

主な値

ブレインモード
multiply乗算
screenスクリーン
overlayオーバーレイ
darken暗く
lighten明るく
color-dodge覆い焼きカラー
color-burn焼きこみカラー
hard-lightハードライト
soft-lightソフトライト」
difference差の絶対値
exclusion除外
hue色相
saturation彩度
colorカラー
luminosity輝度

1つ例を見てみましょう。今回はメインカラーである青を全面に、明るい色合いで表示したかったので、「hard-light」の値を使いました。

ブレインモード、ハードライト:CSS
body{background-image:url(../img/bg-palmtree.jpg);background-color:#0bd;background-position:centerbottom;background-size:cover;background-blend-mode:hard-light;height:100vh;}

image.png

爽やかな印象になりましたね:point_up_tone2:

背景をグラデーションカラーにする

テーマカラーをうまく取り入れて美しいグラデーションを実施しましょう。グラデーションはbackground-imageプロパティに「linear-gradient」の値を使い、カンマ「,」で区切って異なる色を指定します。直線上に伸びるグラデーションではなく、円形のグラデーションを実施するには、「radial-gradient」を使います。

主な値

グラデーションの形状
linear-gradient線形グラデーション
radial-gradient円形グラデーション

例:#c9ffbf(明るい黄緑)から#ffafbd(明るいピンク)へのグラデーションです。

グラデーションカラー:CSS
body{background-image:linear-gradient(#c9ffbf,#ffafbd);min-height:100vh;}

image.png

背景画像にブレンドモードでグラデーションカラーを重ね合わせる

背景画像にグラデーションカラーを重ね合わせることもできます。「background-blend-mode」でブレンドモードを指定するところは変わりませんが、background-imageプロパティで背景画像とグラデーションカラーをカンマ「,」で区切って両方指定するところがポイントです。

ブレンドモードでグラデーションカラー:CSS
body{background-image:url(../img/bg-palmtree.jpg),linear-gradient(#c9ffbf,#ffafbd);background-blend-mode:luminosity;background-position:centerbottom;background-size:cover;background-blend-mode:hard-light;height:100vh;}

image.png

写真素材、背景画像をダウンロードできるオススメWebサイト

背景画像にお勧めな画像がダウンロードできるオススメサイトです。以下のサイトは気軽に使える無料版です。

The Pattern Library:point_down_tone2:
image.png
上の例で利用した模様の画像はこちらのサイトから使いました。背景用パターンが無料でダウンロードできます。可愛らしいものからユニークなものがあります。

StockSnap.io:point_down_tone2:
image.png
上の例で使用したヤシの木の風景画像はこちらのサイトから使いました。著作権制限のない、パブリックドメインの写真を集めたWebサイトです。海外のサイトで、おしゃれなデザインが多く、クオリティが高いものが多いです。

参考文献

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

safariでtableを含んだ表示が崩れる問題の解消

$
0
0

display: flex;を使用時、chromeではうまく表示されたのにsafariで崩れてしまう問題がtableを絡めたときに発生したのでその解放をまとめる。

問題

以下のコードのviewの表示が、chromeとsafariで異なっている。
version1は両者とも予想通りの表示(外側のdivの中に、内側の3つのdivが並ぶ)だが、
viesion2のように、内側のdivの1つがtableに置き換わると、safariでtableが外側のdivを超えてしまう。

demo.html
<!--version 1 --><divclass="d-flex w-50"><divclass="bg-danger"style="width: 100px; height: 50px;">
    100px
  </div><divclass="bg-primary"style="width: 150px; height: 50px;">
    150px
  </div><divclass="bg-warning"style="width: 100%; height: 50px;">
    table無し
  </div></div><hr><!--version 2 --><divclass="d-flex w-50"><divclass="bg-danger"style="width: 100px; height: 50px;">
    100px
  </div><divclass="bg-primary"style="width: 150px; height: 50px;">
    150px
  </div><tableclass="bg-warning"style="width: 100%; height: 50px;"><tbody><tr><th>
          table th
        </th><td>
          table td
        </td></tr></tbody></table></div>
  • chromeでの表示
    image.png

  • safariでの表示
    image.png

原因

  • 描画されているHTML及び、HTMLタグから自動生成されているCSSに、両者に大きな違いは無い。
  • よってdisplay: table;の扱いが両ブラウザで異なり、chromeはdisplay: block;と同じ扱いをされるが、safariでは異なるのだと思われる。
  • 参考:tableタグから生成されているCSS(検証モードで確認)
chrome.css
table{display:table;border-collapse:separate;border-spacing:2px;border-color:grey;}
safari.css
table{display:table;border-collapse:separate;-webkit-border-horizontal-spacing:2px;-webkit-border-vertical-spacing:2px;border-top-color:gray;}

解決策

tableタグをdivで囲うことで、dispaly: flex;が当てられたその側のdivの中に、3つのdivが並ぶようにする。

demo.html
<divclass="d-flex w-50"><divclass="bg-danger"style="width: 100px; height: 50px;">
    100px
  </div><divclass="bg-primary"style="width: 150px; height: 50px;">
    150px
  </div><div><tableclass="bg-warning"style="width: 100%; height: 50px;"><tbody><tr><th>
          table th
        </th><td>
          table td
        </td></tr></tbody></table></div></div>

これでsafariの表示も問題なし
image.png

box-shadow 上だけ消す

$
0
0

疑似要素で重ねるのはデザイン的に向いてなさそうなケースがあるので、重ねて指定する方法でどうだろう

style.css
box-shadow:0px10px7px-7pxrgba(0,0,0,0.1),7px7px7px-7pxrgba(0,0,0,0.1);/* 上だけ出さない、左右と下を陰つける */

一応見本。上側に複雑なパーツが乗っても大丈夫そう。
image.png

上のタブ部分はざっくりとbox-shadowかけただけなので、タブ部分要素の下側のshadowは直後の本文エリア要素の裏側に回ってるだけだと思う。

疑似クラスについて

$
0
0

疑似クラスとはなんなんだ???????????

cssには、疑似クラスというのがあります。
普通のクラス名にコロン(:)をつけるだけで、難しそうなことが簡単にできます。

今回はその中でも一番簡単だと思った、[hover]という疑似クラスを紹介します。

コード

main.css
.test{color:black;/* ボタンの文字をblackにする。*/}.test:hover{background-color:blue;/* ボタンにマウスが触れたら、後ろの色を青に変える。*/}
index.html
<inputtype="button"class="test"value="ボタンだよー"><!--ボタンを作る。-->

これでできました。:blush:

確認

マウスが触っていないとき。
image.png
マウスが触っているとき。(マウスが見えないけど、ちゃんと当たっています。)
image.png

できたでしょうか?
他にもいろんなことができるので、ぜひ調べて使ってみてはどうでしょうか?_

参考

MDN


【HTML/CSS】ヘッダーがついてくるスクロールバーつきテーブルを作るぞ

$
0
0

この記事は

お久しぶりじゃの。
コロナの影響でリモートワークになったけど、そこそこ忙しくて記事を書けない日々が続いていたハシビロコウだぞい。
適度に忙しいと秒で時間が過ぎるから最高じゃのう。

今回は、
ヘッダー(thead)が上に固定されていて、tbody部分のみスクロールバーで上下に動かせるテーブルを依頼されることが多かったので、備忘録として解説とともに残していくぞい。

ちなみに、完成するとこんな感じになるぞ。


See the Pen
ヘッダーが上にひっつくテーブル(完成版)
by mame_hashbill (@mayu-mameuda)
on CodePen.


HTML

HTMLの構造はこんな感じ。
普通のtableをdivで囲う感じなので簡単だぞ。

<divclass="table-wrap"><table><thead><tr><th>TITLE</th><th>TITLE</th><th>TITLE</th></tr></thead><tbody><tr><td>HOGEHOGE</td><td>HOGEHOGE</td><td>HOGEHOGE</td></tr><!-- ...以下省略(同じtrが続く) --></tbody></table></div>

Scss

そしてScssはこんな感じじゃ。

//変数$green:#3cb371;table{width:100%;border-collapse:collapse;//ポイント①}th,td{letter-spacing:0.1em;padding:5px10px;}th{position:sticky;//ポイント②top:0;//ポイント②width:calc(100%/3);background:$green;color:white;font-size:20px;}td{background:rgba($green,0.8);color:white;font-weight:bold;border-top:1pxsolidwhite;}.table-wrap{height:200px;//ポイント②overflow:auto;//ポイント②&::-webkit-scrollbar{//スクロールバーの横幅指定 ポイント③width:15px;}&::-webkit-scrollbar-track{//スクロールバーの背景色・角丸指定 ポイント③background:lighten($green,0.4);}&::-webkit-scrollbar-thumb{//スクロールバーの色・角丸指定 ポイント③background-color:darken($green,10%);border:3pxsolidlighten($green,0.4);border-radius:10px;}}

ポイント別解説

ポイント① border-collapse: collapse;

左右にborderのないお洒落な?テーブルを作りたい場合は、こいつを入れてあげる必要があるぞい。

border-collapse: collapse;は、隣接するボーダーラインを重ねあわせて表示させる指定のようなんだが、なんでこれをやらないと左右の線が出てしまうのかはよくわからん。

ポイント② position: sticky;

.table-wrap{height:200px;overflow:auto;}th{position:sticky;top:0;}

この記述がスクロール可能なテーブルを作るための指定だぞい。
heightでスクロールさせるテーブルラップの高さを決めて、中のテーブルがそれ以上の高さならスクロールさせるように、overflow: auto;と指定するぞい。

thに指定してる2行で、ヘッダーが上にぴとっとくっついたまま、tbody内だけがスクロールするようになるぞ。

ちなみに、theadとかtrとかにつけても、stickyは作動しないので要注意。

あと、親とか先祖とかにoverflow:hidden;がいてもstickyは作動しないので注意。

sticky使いそうなページがあったらoverflow:hidden;はマジでしないほうがいい。
私はこいつのせいで何度か泣きそうになった。

ポイント③ スクロールバー

これは書かなくてもスクロールできるテーブル自体はできてるんだが、
スクロールできるよってのを示すためにスクロールバーをつけておきたいって人は覚えておくといいぞい。

ちなみにこれでスクロールバーの色とか太さとか丸みとかを変えることができるので、一気にお洒落?なスクロールバーを使ったテーブルを作ることができるぞ。

.table-wrap{&::-webkit-scrollbar{//スクロールバーの横幅指定width:15px;}&::-webkit-scrollbar-track{background:lighten($green,0.4);//スクロールバーの背景色//今回は指定してないけどborder-radiusも指定できるぞ}&::-webkit-scrollbar-thumb{background-color:darken($green,10%);//スクロールバーの色border:3pxsolidlighten($green,0.4);//スクロールバーの枠線border-radius:10px;//スクロールバーの角丸}}

上の通りだから特に解説することもないが、強いていうとスクロールバーの枠線を背景色と一緒にすることで、ちょっと細いスクロールバーを実現させているぞ。

最後に

テーブルは一回沼にハマるとボコボコにされるから嫌いじゃ。

でもdivでテーブルと作るとさらにボコボコにされるから、なるべく表組みはtableタグで行うようにするんじゃぞ。

【CSS】背景色を透過したら文字も透過してしまうopacity

$
0
0

opacityを適用したら背景色を透過したいのに文字も透過する...

opacityってちゃんと読んでいないとそのオブジェクトだけを透過すると思っちゃうんですけど、実際は子要素にも適用されちゃうんで他の透過方法を使うしかないです。それがrgbaってやつです。

rgbaとは

r(red), g(green), b(blue)これにa(alpha)というのをつけたものです。alphaは透明度を表します。まあ端的にいうと色の透明度を決めるプロパティですね。

sample.css
.sample{background-color:rgba(255,255,255,0,5);}

これでrgbだけなら真っ黒になるんですがalphaが追加されたので半分透過した状態が確認できるはずです。
後ろに画像とかあれば分かりやすいです。
これで背景色だけを透過するので、子要素に文字があっても透過することなく表示させれます。
最後に参考サイトだけ貼って終わります。opacityrgbaのリンク

ではでは

@mixin 演算子の使い方 [Sass][初心者]

$
0
0

2020年3月からプログラミングを始めたジュンです。
超初心者が自分なりに理解できたことを記事にしていきます。
ぜひ、理解の間違っている点などがございましたら、ご指摘お願いします!

Sass内で使える @mixin の使い方

まずSassとは

takashiさんの記事がわかりやすいのでこちらをご覧ください!

簡単に解釈すると
CSSを簡潔に書くことができるCSSを拡張した言語のようです!

学習記録

わかりやすい教材を作られた方々ありがとうございます。
勉強させていただいた教材を紹介させていただきます。

SassをUdemyのこちらの講座で初めて触れ、
【JavaScript&CSS】ガチで学びたい人のためのWEB開発徹底入門(フロントエンド編)

その後、復習を兼ねてProgateでSassⅠを学習しました!
Progate SassⅠ

本題です

@mixinとは、Sass言語の特徴としてある「CSSを簡潔に書く」ために使うことができます!

@mixinを使うのに適した例で説明していきます。
CSSのプロパティにanimationが頭につくプロパティがたくさんあります。
しかも、アニメーションをつけたいときにはanimationが頭につくプロパティをたくさん使わなければいけません。
毎回書くのは大変です。。。

mixin.css
animation-duration:1s;animation-timing-function:ease;animation-delay:1s;animation-iteration-count:infinite;animation-direction:alternate;animation-fill-mode:both;

CSSにこのコードを毎回書いたり、コピーするのは大変ですし、変更する際にわかりにくいです。

Sassで@mixinを使ったら

mixin.scss
@mixinanimation($duration:1s,$timing-function:ease,$delay:1s,$iteration-count:infinite,$direction:alternate,$fill-mode:both){animation:{name:$name;duration:$duration;timing-function:$timing-function;delay:$delay;iteration-count:$iteration-count;direction:$direction;fill-mode:$fill-mode;}}

初見で私は何が何だかわかりませんでした。
しかも、多くなってる。。。

最後まで見ていただくと、簡潔にコードを書くことができる理由がわかります!
少しずつ説明すると、
1.@mixinの後には省略したいプロパティ名の共通する頭の単語を書く。

mixin.scss
@mixinanimation(){}

2.()内には引数を取ることができるので共通する頭の単語の後に続くプロパティ名を$マークを頭に置いて書く。(複数あるため","で区切って書いていく。)

mixin.scss
@mixinanimation($duration,$timing-function,$delay,$iterarion-count,$direction,$fill-mode){}

3.2の$〇〇にはデフォルトで与えたい値を入力する。

mixin.scss
@mixinanimation($duration:1s,$timing-function:ease,$delay:1s,$iteration-count:infinite,$direction:alternate,$fill-mode:both){}

4.{}内には$〇〇(=変数)をプロパティに代入する。(animation:{}とすることで、ここでも頭の文字を省略して書いていくことができます!)

mixin.scss
@mixinanimation($duration:1s,$timing-function:ease,$delay:1s,$iteration-count:infinite,$direction:alternate,$fill-mode:both){animation:{duration:$duration;timing-function:$timing-function;delay:$delay;iteration-count:$iteration-count;direction:$direction;fill-mode:$fill-mode;}}

これで先ほどの例と同じものができました。

では次にどうやって@mixinでまとめたものを呼び出したらいいかを説明します。

@mixinを呼び出すには

@mixinでまとめたものは@includeを使って呼び出します。

mixin.scss
@includeanimation($duration:1.4s,$timing-function:ease-in-out,$delay:2s,$iteration-count:1);

1.@mixinでまとめたものを適用させたいタグやクラスの中に@include関数名()を書く。

mixin.scss
div{@includeanimation();}

2.@mixin内で与えた値を変更したいときは、()内で変数に値を与える。

mixin.scss
div{@includeanimation($duration:1.4s,$timing-function:ease-in-out,$delay:2s,$iteration-count:1);}

これで先ほどの例と同じものができました。

@mixinをまとめたファイルを作る

@mixinはまとめておけば楽にコードを書くことができますが、毎回書くのはすごーーーくめんどくさいです。。。
そして結構見た目もごちゃごちゃしてるかも。。。

そこで!
@mixinを_mixin.scssというファイルにまとめて、いつでも楽にすっきり呼び出せるようにしましょう!
1._mixin.scssファイルを作り、@mixinでまとめる。
2.Sassファイルの最上部に@import "mixin";と記述する。

mixin.scss
@import"mixin";

3.@include@mixinでまとめたものを呼び出す。

mixin.scss
@import"mixin";div{@includeanimation($duration:1.4s,$timing-function:ease-in-out,$delay:2s,$iteration-count:1);}

これでOKです!
これなら楽に、すっきりさせることができました!

まとめ

まだまだ勉強不足で@mixinを使うことでコードを書くことが、楽にすっきりさせることができるプロパティ名がanimation~くらいしか思いつかなかったのですが。。
勉強不足ですみません。
プログラミングとはとても合理的で、計算されており、ものすごく頭のいい人が作ったものであると思っているので、このどんなメリットがあるのか、なぜこの演算子が生まれたのか、必要になった理由があると思い勉強していくと理解度が深まるのかなと思いました。

すでにプログラミングを学ばれている方々、改善点、修正点のコメントをお願いします!
プログラミング初心者の方々もわからないところを共有して一緒にスキルアップしていきましょう!

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

$
0
0

100日チャレンジの292日目

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

Twitter 広告用 AdblockPlus フィルター の書き方

$
0
0

Twitterの広告を除去するためのABPフィルターを考える。

不具合あるかも。
全部ABP固有の 拡張CSSセレクター を使っているので一瞬表示されるかも。
問題あったらおしえて。

基本的にはプロモーションにはそうでないのと比べてプロモーションって表示する分要素が1個多いのでそれを+で選択しそれを含む要素を非表示にする。
一部余計な余白が余るけど難いので放置
それとどんな言語でも動くはず

真ん中に出てくるでかいプロモーション

twitter.com#?#div:-abp-has(>*>*>*>*>article[role="group"]+div)

おすすめユーザーのうちプロモーションのものだけ

twitter.com#?#div:-abp-has(>*>*>*>*>[dir]+*>*+*>span)

おすすめツイートのうちプロモーションのものだけ

twitter.com#?#aside*:-abp-has(>*+*>*>*>div>span)

おすすめトレンドのうちプロモーションのものだけ

twitter.com#?#div:-abp-has(>*>*>*+div[dir]>div)

CSSのみで文字をキラーンとさせる方法

$
0
0

CSSのみを使用して文字が光ったようなアニメーションを実装します。(IE非対応)
以下、参考にした資料。
文字グラデーション
バックグラウンドの位置変更
CSSアニメーション

この3つの記事(機能)をベースに実装しました。
ちなみにFlashかと思ったのですが、たぶん違くて正式なアニメーションの名称が分かれば教えて欲しいです!

完成イメージ

flashImage.png
※gitは後で乗せます。

コード

html
<divclass="back"><h1>~FlashTest~</h1></div>
css
.back{background-color:gray;width:100%;height:100vh;}h1{width:100%;font-size:50px;background:-webkit-linear-gradient(-30deg,black1%,white5%,black10%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-position:-200px;animation-name:flashText;animation-duration:1.5s;animation-timing-function:ease;animation-delay:0s;animation-iteration-count:1;animation-direction:normal;}@keyframesflashText{0%{background-position:-100px;}100%{background-position:300px;}}

これで出来るかと。ホームページのタイトル部分とかに使えそうですね^^

CSS レイアウト

$
0
0

%(パーセント)

親要素のサイズが100%としたとき子要素のサイズを親要素に対して何%で設定するか?を決められる指定方法。
※注意点
%(パーセント)のサイズ指定は親要素に依存する。
親要素であるbody要素はブロックレベル要素のため、高さを厳密に指定していないとボックスとして形を保つことができない。
そのため、height 100%と指定した場合、ブロックが消えてしまう。
対策として%指定が適応されるように、親要素を追加して高さを指定する。

vh(viewport height)

vh(viewport height)は、viewportの高さ(height)に対する割合のことを指す。
1vhと指定した場合は、ブラウザで表示されているの高さの1%。

vw(viewport width)

vw(viewport width)は、viewportの幅(width)に対する割合のことを指す。
1vwと指定した場合は、ブラウザで表示されているの幅の1%。

%とViewportの違い

・%(パーセント)は、親要素に依存する
・viewport(ビューポート)は、ブラウザの表示されている領域に依存する

%とViewportの使い分け

・要素をページの高さいっぱいに配置する場合は、100vhを使う
・要素のページの横幅いっぱいに配置する場合は、100%を使う

calc関数

CSSで四則演算(+,-,*,/)を行うことができる。
calc()の括弧内に値を渡すことで計算結果を返してくれる。
例)全体の高さから300px分を引いたサイズを指定

.hoge {
    width: calc(100vh - 300px); 
    => 全体の高さが、1000pxだった場合hogeのwidthは700pxになる
}

とりあえずサイトを綺麗にしたい時にCSSフレームワークを使うと便利

$
0
0

CSSフレームワークを使って簡単にサイトをオシャレにしよう!!

htmlやcssを勉強してとりあえずサイトを作ろうとしても、デザインがうまくいかない時にcssフレームワークを使うとデザインのセンスがない人でもオシャレなサイトが作れます。

cssフレームワークとは

自分でCSSを書かなくても、誰かが書いてくれた物を使っちゃおうって感じです。
例えば、今まではHTMLの方でclass名を指定して、stylesheetの方でそのクラスのcssを書いていたと思うのですが、このフレームワークは逆に誰かが書いたcssに合わせるためにclass名を指定してあげるイメージです。

普段

スクリーンショット 2020-04-16 17.46.35.png
普通はこのようなdivにデザインを当てるときは
スクリーンショット 2020-04-16 17.48.39.png
こんな感じでdivのclass名であるboxに対してcssを書きますよね
結果はこんな感じ
スクリーンショット 2020-04-16 17.55.30.png

CSSフレームワーク使用時

CSSフレームワークを使用する概念は、このように元から用意されているcssを選んでHTMLの方のclass名を変更するイメージです。

スクリーンショット 2020-04-16 17.51.10.png

box_blueが使いたいと思ったらHTMLのクラス名を"box_blue"に変更してあげれば良いのです。

変更後

スクリーンショット 2020-04-16 17.55.58.png

結果

スクリーンショット 2020-04-16 17.58.11.png

cssフレームワークを使用するイメージはこんな感じ

じゃあどうやってcssフレームワークを使うのか

今回はcssフレームワークの一つであるBootstrapの使い方について説明します

実はめちゃくちゃ簡単で、BootstrapのサイトのURLをhtmlファイルのheaderの中に貼るだけでできます。

まずBootstrapの公式サイトに飛びます。こちら https://getbootstrap.com/

スクリーンショット 2020-04-16 18.05.24.png

するとこんなページにいくと思います。次にGet startedのボタンを押してください。スクリーンショット 2020-04-16 18.07.30.png
するとこのようなページに飛ぶと思います。この画像の真ん中らへんのCSSの下にあるリンクをコピーして自分が製作したいHTMLファイルのheaderの中にコピーするだけです。

あとは自分がデザインを入れたい物のClass名を合わせるだけなのですごく簡単にオシャレなデザインを使うことができます。どんなclass名があるかは自分で調べてください笑

Bootstrapをローカルに保存して行う方法もあるのですが、それについてはまた今度、、

参考文献
https://getbootstrap.com/

GridレイアウトのベースHTML

$
0
0

GridレイアウトのベースとなるHTML

作成した画面

HTML

以下のhtmlを適当な名前で保存する
```html
<!DOCTYPE html>



Grid Sample


<div class="grid-container">
    <div class="Header">Header</div>
    <div class="Menu">Menu</div>
    <div class="Contents">Contents
        <br>
        <br>autoを指定しているので自動で高さが変わる
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
    </div>
    <div class="Footer">Footer</div>
</div>


```

CSS

以下のcssをgridsample.cssで保存して上記のHTMLと同じフォルダに保存する
```css
*{
border: 1px solid #a9a9a9;
}
html{
border: none;
}
body{
width: 1200px;
margin-left: auto;
margin-right: auto;
}

.grid-container {
display: grid;
grid-template-columns: 20% 80%;
grid-template-rows: 50px auto 50px;
gap: 1px 1px;
grid-template-areas: "Header Header" "Menu Contents" "Footer Footer";
}

.Header {
grid-area: Header;
background-color: #fff0f5;
}

.Menu {
grid-area: Menu;
background-color: #f5f5f5;
}

.Contents {
grid-area: Contents;
background-color: #f0f8ff;
}

.Footer {
grid-area: Footer;
background-color: #f0fff0;
}
```

div 枠を付ける、ボックスを並べる、フレックスボックス

$
0
0

枠を付ける

<div style="
text-align: center; /* 文字を中央揃え/* 
padding-top:15px; /* 上の余白15px/* 
padding-bottom:15px;/* 下の余白15px/* 
background-color:#333333;
color: white;
margin: 0 20px 0 20px;/* 余白 上 下 右 左/* 
">
                メディア掲載実績
            </div>

ボックスを並べる

 ul {
                padding: 0;
                justify-content: center;
                background-color: red;
                display: -webkit-flex;
                display: flex;
                list-style: none; /*黒点非表示/*
                flex-wrap: wrap; /端で折り返す/*
            }

 li {
                padding:5px;
                margin: 5px;
                background-color: white;
            }



 <div class="media-jisseki">


                <ul>
                    <li>
                        リスト1
                    </li>
                    <li>
                        リスト2
                    </li>
                    <li>
                        リスト3
                    </li>
                    <li>
                        リスト4
                    </li>
                    <li>
                        リスト5
                    </li>
                </ul> 



            </div>

スタイル指定

.media-jisseki {

 background-color:#F5F5F5;padding-top:15px;padding-bottom:15px;margin: 0 20px 0 20px;
            }

class="media-jisseki"
で使える。

[SASS / SCSS] scssでメディアクエリを使って要素の大きさを動的に変えた

$
0
0

やりたいこと

レスポンシブ対応をするにあたって、めっちゃ大量の要素のheightやwidthを「後から」変更しなくてはならなくなった...

sample.html
<bodyclass="sample"><divclass="sample__item1">hi1</div><divclass="sample__item2">hi2</div><divclass="sample__item3">hi3</div><!--
    省略
  --></body>
sample.scss
.sample{&__item1{height:100px;width:200px;background-color:skyblue;}&__item2{height:50px;width:100px;background-color:green;}&__item3{height:80px;width:160px;background-color:#d5d5d5}}

やったこと

元々のスタイルを全てmixinに変更して、倍率を動的に渡すことにした

sample.scss
@mixinstyle($multiplier){.sample{&__item1{height:100px*$multiplier;width:200px*$multiplier;background-color:skyblue;}&__item2{height:50px*$multiplier;width:100px*$multiplier;background-color:green;}&__item3{height:80px*$multiplier;width:160px*$multiplier;background-color:#d5d5d5}}}@mediascreenand(max-width:374px){@includestyle(0.65);}@mediascreenand(min-width:375px){@includestyle(0.8);}@mediascreenand(min-width:376px){@includestyle(1);}@mediascreenand(min-width:700px){@includestyle(1.5);}@mediascreenand(min-width:1024px){@includestyle(2);}

できたもの

cssで字下げするにはblock要素にtext-indentを使おう

$
0
0

cssで字下げを行うにはtext-indentを使おう

字下げをするにあたり広く知られていることだと思う。しかし私が実際にtext-indentを使ってみると全く変化がなかった。何故かというと、インライン要素にtext-indentを使っていたからだ。

display:block;と書き加えてやったところ、無事字下げに成功した。

css
a{text-indent:1em;display:block;}

ここでリンクに下線をつけてやろうなどと思うと以下のようになる。スクリーンショット 2020-04-17 14.28.07.png
下線が字下げをした分の左側の余白まで、というか画面いっぱいに広がってしまっている。

dosplay:block;にする以上仕方ないのだが、リンクの装飾と字下げどちらもやりたかった私はtext-indentではなくインライン要素にしてmargin-leftを使うことにした。

css
a{margin-left:1em;border-bottom:solid3px#999;text-decoration:none;}

結果この記事のタイトルに背くことになってしまっているがこれ以外にやり方を知らないので許してほしい。誰かいい方法を知っていたら教えてください。

Viewing all 8746 articles
Browse latest View live
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>