Webデザイナーを目指す人のブログ

Webサイト作成時に勉強したことの備忘録

CSS サイト構築

CSS基礎編 vol.6

投稿日:2017年5月3日 更新日:

                                                                                                                                 

ベンダープレフィックス

CSS3で用意されているプロパティはブラウザによっては実験的に使われているものという認識でサポートされていない場合があります。そのため、Chromeでは反映されるけどSafariでは反映されない、IEでは反映されないという現象がおきます。
そこでベンダープレフィックスを利用してこれを解消していきます。

ベンダープレフィックスの種類

-webkit-

ChromeやSafariのベンダープレフィックスです。
-webkit-border-radius: 10px;
のように記載します

-moz-

Firefoxのベンダープレフィックスです。
-moz-border-radius: 10px;
のように記載します

-o-

Operaのベンダープレフィックスです。
-o-border-radius: 10px;
のように記載します

-ms-

Internet Explorerのベンダープレフィックスです。
-ms-border-radius: 10px;
のように記載します

サポートされていないものを表示させる方法としてCSSハックも存在しますが、
CSSハックとベンダープレフィックスの違いについて今度まとめて改めて記事にしたいと思います。

CSSでアニメーションを作る

ここでは次のhtmlを使ってまとめていきます。

  <!DOCTYPE html>
  <html>
  <head>
    <title></title>
  </head>
  <body>
    <div class="box"></div>
  </body>
  </html>

transition

例えばマウスオーバー時にアニメーションを加えたいときはこのプロパティを利用します。

  .box {
    width: 50px;
    height: 50px;
    background-color:#ccc;
  }

先ほどのhtmlのボックスにこのようなプロパティを設定するとこうなります。

このボックスにマウスオーバーした時、ボックスの幅を広げるということは

  .box:hover {
    width: 100px;
    height: 50px;
    background-color:#ccc;
  }

を使うことで可能です。

上の灰色の四角にカーソルを当ててみて下さい。
ボックスの幅が広がります。

これよりももっとスムーズに広げていきたいときはtransitionを使います。
transitionプロパティはいくつかあり、ショートハンドで記載することも可能です。

transition-property

transitionを適用するCSSプロパティを指定します。ここに指定したプロパティだけが、transitionによりアニメーションします。変化する部分全部を変えたい場合はallと記載します。

transition-duration

変化にかかる時間を指定します。単一の値を指定すると、すべてのプロパティのtransitionの所要時間として、また、複数の値を指定すると、プロパティごとにtransitionの所要時間として違う値を指定することができます。

transition-timing-function

どのように変化させるかを指定します。いくつかの値をとっていて、

  • ease:開始と終了が滑らかになる
  • linear:当速度で変わる
  • ease-in:開始がゆっくり
  • ease-out:終了がゆっくり
  • ease-out:開始と終了がゆっくり

があります。

transition-delay

アニメーションが始まるまでの時間を指定します。

  .box {
    width: 50px;
    height: 50px;
    background-color:#ccc;
    transition-property:all;
    transition-duration:3s;
    transition-timing-function:ease;
    transition-delay:0.2s;
  }

  .box:hover {
    width: 100px;
    height: 50px;
    background-color:#ccc;
  }

上の灰色の四角にカーソルを当ててみて下さい。
先ほどとは違い、ゆっくりと右にボックスがのびていきます。
このようにtrasitionでは簡単なアニメーションをつくることができます。

animation

より複雑なアニメーションにするにはanimationプロパティを利用します。
animationプロパティはChromeのベンダープレフィックスを付けて書いていきます。

animation-name

アニメーションに任意の名前をつけるプロパティです。
このanimation-nameがついているキーフレームだけがアニメーションで反映されます。

animation-duration

変化にかかる時間を指定します。初期値は0ですが、0のままだとアニメーションは実行されません。

animation-timing-function

どのようにアニメーションを変化させるかを指定します。
取りうる値transition-timing-functionと同じです。

animation-delay

アニメーションが始まるまでの時間を指定します。

animation-iteration-count

アニメーションの繰り返し回数を指定します。
何回繰り返すかという具体的な数値を指定したり、アニメーションを無限に繰り返すinfiniteを指定したりできます。

animation-direction

反対方向に再生するかどうかを指定します。
初期値のnormalでは普通方向のみの再生でアニメーションサイクルを繰り返しますが、
alternateを指定すると奇数回では普通方向の再生、偶数回では逆方向の再生となって、アニメーションサイクルを繰り返します。

keyframes

アニメーションの途中のうごきを指定します。
@keyframes animation-nameでつけた名前 {
0%{アニメーションが始まる時点の状態を表すcss}
0〜100%{アニメーションが始まってから終わるまでの途中の状態を表すcss}
100%{アニメーションが終わる時点の状態を表すcss}
}

  .box {
    width: 50px;
    height: 50px;
    background-color:#ccc;
    -webkit-animation-name:slide;
    -webkit-animation-duration:3s;
    -webkit-animation-timing-function:ease;
    -webkit-animation-delay:0.2s;
    -webkit-animation-iteration-count:infinite;
    -webkit-animation-direction:alternate;
  }
  @-webkit-keyframes slide{
    0% {
      margin-left:0%;
      background-color:#eee;
    }
    50% {
      margin-left:40%;
      background-color:#fff;
    }
    100% {
      margin-left:100%;
    }
  }

とすると

このようになります。
これを応用することで色んな動きをだすことが可能になります。

box-sizing

次はbox-sizingについて見ていきます。
通常、ボックスのwidthを指定していてもpaddingやborder-widthが指定されていた場合は
実際に表示される要素の幅はwidthとpaddingとborderの幅を足したものになります。

例えば

width:200px;
padding:0 20px;
border:10px solid #000;

と指定していた場合は
200px(width)+40px(左右のpadding)+20px(左右のborder)=260px
となって表示されます。

このせいでレイアウトが崩れたりすることがあるのですが、
box-sizing:border-box;を指定することでwidth:200px;としていた場合はpaddingやborderが指定されていてもwidthは200pxとなります。

これをつかうことで段組の面倒な余白の計算が簡単になります。

ただ、box-sizingもベンダープレフィックスをつける必要があるので記載時は注意が必要です。

ということで今回は主にベンダープレフィックスとアニメーションについてのまとめでした!

-CSS, サイト構築

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

ファビコンを設定する

今日はファビコンの設定方法について書いていきます。 ファビコンとは ファビコンとはウェブサイトを開いた時のタブについているアイコンのことです。 ファビコンを設定しているとこのように表示され、いくつかタ …

WordPress オリジナルテーマ ウィジェットを追加する

オリジナルテーマを作っていて、ウィジェットが出てこなかったのでその解決方法。 functions.phpに以下のソースを追加するとwordpress管理画面>外観の中にウィジェットが表示されるようにな …

no image

CSS基礎編 vol.4

擬似クラス 先日擬似クラスについて書きましたが、まだまだ種類があるので、 今日はある子要素のうち特定の順番にあるものを指定する擬似クラスについて書いていきます。 ここでは下のhtmlを利用して説明して …

no image

メディアクエリ

レスポンシブデザイン スマートフォンやタブレットの普及に伴い、サイトを構築するときはデスクトップサイズだけでなく、 それぞれのデバイスにあったレスポンシブデザインの構築が必要になってきています。 今日 …

no image

WordPress オリジナルテーマを作る〜メイン部分その2〜

第4回目のWordPressのサイト作り 前回の記事までの記事はこちらから WordPress オリジナルテーマを作る〜ヘッダー〜 WordPress オリジナルテーマを作る〜ヘッダーその2〜 Wor …