CSS Tips¶
プログラミング言語であるとは言い難いのですが、 何だかんだでよく使うので。
ここではCSSの概要説明というよりも、 Tips をまとめる感じにするつもりです。
お気に入り配色¶
とりあえず、配色関係です。 ここは、完全に個人の趣味だと思うのですが、 よく使うものの備忘録だと思ってください。
まず、やっぱり CSS を使う場合基本的には web ページ作成が基本になると思います。 そのため、可読性の高い配色にするほうがよいです。 でも所謂デフォルトの白黒って結構目が疲れる気がしています。
適当な配色は結構なやんでいるのですが、暫定的に日本の伝統色から探すことが多いです。
このサイトでは、文字の背景には生成り色、文字の色は墨色を使用しています。
- #fbfaf5
- #595857
これとは別に、普段のターミナルでは solarized を使用しているので、 この配色もよく使用します。
このカラーテーマに関しては上記公式サイトに CSS カラーコードも記載されているのですが、 色が結構確認しずらいので、その部分のみまとめておきます。
http://ethanschoonover.com/solarized/img/solarized-palette.png
- $base03: #002b36;
- $base02: #073642;
- $base01: #586e75;
- $base00: #657b83;
- $base0: #839496;
- $base1: #93a1a1;
- $base2: #eee8d5;
- $base3: #fdf6e3;
- $yellow: #b58900;
- $orange: #cb4b16;
- $red: #dc322f;
- $magenta: #d33682;
- $violet: #6c71c4;
- $blue: #268bd2;
- $cyan: #2aa198;
- $green: #859900;
レイアウト関係¶
CSS で要素のレイアウトを行う際、 幅や高さは、可変の部分が大きく、決め打ちはしずらいかと思います。
ここで、幅に関しては基本的に 100 % とかの単位できめればよいのですが、 高さに関しては、 % が予想通りに機能しないことがあるかと思います。 このような際には vh という単位が便利です。
- vw
- ビューポートの幅の1/100
- vh
- ビューポートの高さの1/100
- vmin
- ビューポートの幅か高さの値が小さい方の1/100
- vmax
- ビューポートの幅か高さの値が大きい方の1/100
代表的な例として、ページのそれぞれのセクションをビューポートの高さと幅いっぱいに表示させる例を示します。
section {
width: 100%;
height: 100vh;
}
最低限の高さ指定¶
CSS において、基本的に高さは、 そのコンテンツの量に対して動的に決まります。 しかし、最低限の高さを指定したい場合は多いかと思います。 このような場合、 min-height を利用すると便利です。
以下に具体例を示します。
#hoge {
min-height:500px;
height:auto !important;
height:500px;
}
幅に応じた設定¶
現在表示されている幅に対応した設定を css で設定するには以下のようにします。
@media only screen
and (min-width : 321px)
{
/* Styles *
/}
ここで media only に関しては以下の要素が用意されています。
- screen: パソコンとか
- print: 印刷物
and 以下の記述は、以下の二つを使用します。
- min-width: これ以上の幅がある場合に適応
- max-width: これ以下の幅がある場合に適応
ここでの min, max は適応範囲の最低、最大であることに注意してください。
ボックスシャドウ¶
個人的に、取り敢えず見た目をよくするには、 ボックスに影をつければいいんじゃないかなとか思っています。
とりあえず、オススメのエフェクトは以下の通りです。
<div class="box">
<h3>box</h3>
</div>
.box
{
position:relative;
box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
}
.box:before, .box:after
{
content:"";
position:absolute;
z-index:-1;
box-shadow:0 0 20px rgba(0,0,0,0.8);
top:10px;
bottom:10px;
left:0;
right:0;
border-radius:100px / 10px;
}
.box:after
{
right:10px;
left:auto;
transform:skew(8deg) rotate(3deg);
}