WEBサイト制作の勉強

WEBサイト制作の勉強の為の解説ブログです。

フェリカテクニカルアカデミー

ホバーにCSS3アニメーション

f:id:yachin29:20160802021335j:plain


transitonによるアニメーション

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>transitonによるアニメーション</title>
<style>
/* reset */
html, body, div, h1, h2, h3, h4, h5, h6,p, blockquote, pre, 
address,ul, ol, li, dl, dt, dd,table, th, td, form, fieldset {
  margin: 0;
  padding: 0;
  line-height: 1.0;
  font-family:
    "Hiragino Kaku Gothic ProN",
    Meiryo, 
    sans-serif;
}
ul {
  list-style: none; /* マーカーを消す */
}
a {
  text-decoration: none; /* 下線を消す */
}
img {
  border: 0;
  vertical-align: bottom;
}
.box {
  width: 500px;
  height:300px;
  background: #06F;
  position:relative;
  overflow: hidden;
}
.cap {
  padding-top: 40%;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  text-align: center;
  z-index: 10;
  background: rgba(245,44,67,0);
  cursor: default;
  transition: ease 0.3s;
}
.cap:hover {
  top:-40%;/*ホバーした際に動く距離*/
  left: 0;
  background: rgba(245,44,67,1);
}
h3{
  padding-bottom: 20px;
  color: #FFF;
  font-size: 22px;
}
.text { 
  color: #FFF;
  font-size: 16px;
  margin-bottom: 50px;
}
.view {
  width: 40%;
  margin: 0 auto;
  font-size: 20px;
  color: #FFF;
  padding: 10px;
  border: 1px solid #FFF;
  transition: 0.2s ease-in-out;
}
.view:hover{
  background:white;
  color: #111;
  cursor: pointer;
}

</style>
</head>

<body>
<div class="box">
<a href="#">
<div class="cap">
<h3>ページタイトル</h3>
<p class="text">ページの説明文、テキストテキストテキスト</p>
<p class="view">view&nbsp;more</p>
</div>
</a>
</div>
</body>
</html>

背景画像を使ったフルードグリッド

画像を可変(フルード)にするには、2種類のやり方があります。

imgタグで表示している画像にはフルードイメージの設定

img {
  max-width: 100%;
}

background-imageの場合、少し注意が必要です。imgの場合、img自身が幅や高さを持っているので、敢えて幅・高さを確保する必要はありませんが、背景画像の場合は背景画像を表示させる領域を確保する必要があります。固定値であれば、PXで指定するだけですが、フルードにしたい場合は値を%にしないといけません。幅に関しては%指定で問題ないですが、高さを%にすると色々と問題が出て来てしまいます。
そこで、高さに関しては%指定せずに代わりにpadding
で画像の表示領域を確保する方法をとります。
paddingはtopだろうがleftだろうがbottomだろうが、その要素の幅を基準とするので、その要素の横幅に対して画像の高さが何pxかを%に変換するだけです。
さらにbackground-size: の指定を忘れずにしましょう。



背景画像を表示したい領域が960px ✖ 420pxの場合、

固定値での設定

header {
  width: 960px;
  height:420px;
  background: url(img/mainvis_146.png) no-repeat;
}

フルード化

header {
  width: 100%;
  height:0;
  padding-bottom:43.75% ; /*420px÷960px=43.75*/
  background-size: cover;
}

画像をホバーしたらキャプションが出る

css3のtranstionを使って、画像をホバーしたらキャプションが出る設定にしてみましょう。

<li class="size-2x2">
<img src="img/ph01_l.jpg" alt="">
<div id="cap">
<h2>料理名</h2>
<p>値段</p>
<p>料理の説明</p>
</div>
</li>

css

  
/*キャプション*/

li{
  position: relative;
}

#cap {
width:100%;
height:100%;
background: rgba(255,255,255,0.5);
position: absolute;
top:0;
left:0;
z-index:100;
opacity: 0;
transition: ease 0.3s;
cursor: pointer;
}
#cap:hover {
opacity: 1;
background: rgba(255,255,255,0.7);
}

グリッドレイアウト部分の作成

f:id:yachin29:20160801121918j:plain

既存のサイトをトレースし、コーディングをするのは非常に良い勉強になります。
見ているだけでは解らない事も自身で組み直す事で、見えてきたり、理解出来たりする事があります。
開発者の意図や設計思想をしっかりと理解し、コーディングし直す事がこの課題の1番のポイントです。

今回はまず中央のギャラリー部分の作成をします。

  • 960px幅
  • 5カラム
  • 画像同士の隙間 20px

まずはギャラリーを作る際に、どういうサイズで画像をレイアウトしていけば良いか考えましょう。


Gridpx:グリッドデザイン計算ツール | Webデザイン便利ツール


またスマホレイアウトで、どういう見せ方にするべきか、またその為にどういう工夫がされているかを、制作しながら理解していきましょう。


PC時のギャラリー部分
f:id:yachin29:20160801122411j:plain


スマホ時のギャラリー部分
f:id:yachin29:20160801122914p:plain



画像素材

http://yachin29.com/grid.zip

header周りの画像
http://yachin29.webcrow.jp/kirin/header-icon.zip

JPEG, GIF, PNG画像をSVGに変換する無料のオンラインサービス -PicSVG

ベクター形式であるSVG画像は拡大・縮小が可能で、非常に使い勝手が良いのですが、元データがビットマップ画像(JPEG, GIF, PNG)などの場合、ペンツール等でパスに変更する必要があります。
ペンツールに慣れていない人にとって、この作業は意外と大変です。


f:id:yachin29:20160727120848j:plain


そこで便利なサービスがこの「PicSVG」
ビットマップ画像を簡単にSVG形式に変えてくれます。今までも似たようなサービスはありましたが、この「PicSVG」は非常にクオリティーが高く、おすすめです。
使い方は簡単で、SVGにしたい画像を選んで、colorとdetailsとfiltersを選んでクリックするだけです。.jpeg, .jpg, .gif, .png に対応しており、ファイルサイズは1MBまでOKです。


picsvg.com



こちらも同じ様なサービスです。
quasimondo.com

font-familyの指定 2016年

font-familyの指定

f:id:yachin29:20160726001758p:plain


font-familyとは表示される文字フォントの指定です。
基本的には表示させたいフォント(綺麗なフォント)から順に指定してきます。
注意が必要なのがwindowsで、windowsで使われる標準フォントはバージョンによって違うので、それを加味したフォント指定を行いましょう。

游書体

f:id:yachin29:20160726002331g:plain


游書体はWindows 8.1以降のWindowsおよび、OS X Mavericks以降のMacにバンドルされている、比較的新しいフォントです。

ただ、実際に指定してみると、Macでは綺麗なのに、Windowsでは文字がかすれたように見えて非常に読みづらくなってしまいます。
Macに搭載されている游ゴシックは「ミディアム」「ボールド」なのに対し、Windowsに搭載されているのは「細字」「標準」「中」「太字」(「中」は、Windows10から搭載)。
そのため、font-familyで「游ゴシック」と指定すると、Macでは「ミディアム」で表示されて綺麗なのに、Windowsでは「細字」で表示されるためにかすれてしまいます。
なので敢えて、「font-weight: 500;」の指定が必要になります。


ゴシック体での指定
font-family: "游ゴシック", YuGothic, "ヒラギノ角ゴ Pro", "Hiragino Kaku Gothic Pro", "メイリオ", "Meiryo", sans-serif;
font-weight: 500;
明朝体での指定
font-family: "游明朝", YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "HG明朝E", "MS P明朝", serif;


最新のブラウザーでは英語のみのフォント指定で大丈夫ですが、古いfirefoxでは英語での指定がNGなので日本語での指定も含めています。

既存のPCサイトをレスポンシブ化する

f:id:yachin29:20160725191614p:plain


記述例

@charset "utf-8";
/* CSS Document */

/*reset*/
html, body, div, h1, h2, h3, h4, p, ul, li, dl, dt, dd,header, nav, footer {
  margin:0;
  padding:0;
  line-height:1.0;
  font-family:"Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
}
a {
  text-decoration:none;
  color:#222;
}

ul {
  list-style:none;
}
img {
  border:0;
  vertical-align:bottom;
}

/*PCレイアウト*/
#container {
  width: 960px;
  margin:0 auto;
  position: relative;
}
header {
  background: #F9E4C0;
  overflow:hidden;
  padding-top: 10px;
}
header h1  {
  font-size:30px;
  position: absolute;
  top: 50px;
  left: 100px;
}
header .text{
  font-size: 14px;
  position: absolute;
  top: 30px;
  left: 100px;
}
header .logo {
  position:absolute;
  top:20px;
  left:20px;
}
header nav {
  float: right;
  margin: 0 10px 10px 0;
}
header ul {
  overflow: hidden;
}
header li {
  float: left;
  margin-right: 20px;
}
header li:last-child {
  margin-right:0;
}
header li a {
  display: block;
  width:140px;
  height:80px;
  background:#FFF9CC;
  text-align: center;
  line-height: 80px;
}

/*メイン部分*/
#main {
  overflow: hidden;
  padding-top: 40px;
}
#mainText {
  width:600px;
  float: left;
}
h2 {
  font-size: 40px;
  font-weight:normal;
  line-height: 1.6;
}
.textInfo {
  line-height:1.6;
  margin-bottom: 20px;
}
p#mainImg {
  width: 300px;
  float: right;
  margin-top: 30px;
}
#mainShop a {
  display: block;
  width:500px;
  height:60px;
  background:#FFF9CC;
  border: 1px #333 solid;
  box-sizing: border-box;
  margin-bottom: 40px;
  text-align: center;
  line-height:60px;
  font-size:20px;
}

/*メニュー部分*/
#menu {
  background:#FFE380;
  overflow: hidden;
}
#menuInner {
  overflow: hidden;
  margin: 30px 0;
  padding: 0 10px;
}
#menu h3 {
  width:320px;
  float: left;
  font-size: 40px;
  font-weight: normal;
}
#all a {
  display: block;
  float: right;
  background:#FFC;
  width:220px;
  height:50px;
  text-align:center;
  line-height:50px;
}
#menuPhoto {
  overflow: hidden;
}
#menu h4 {
  text-align: center;
  font-size:18px;
  font-weight:normal;
  margin-bottom: 10px;
}
.menuFood {
  float: left;
  width:220px;
  margin:10px;
}
.photo img {
  border-radius: 20px;
}
.photoText {
  margin: 10px 0 30px 0;
  line-height: 1.5;
}

/*お知らせ部分*/
#info {
  overflow: hidden;
  padding-top: 40px;
}
#info h3 {
  font-size:28px;
  font-weight: normal;
  margin-bottom: 30px;
}
#infoShop {
  float: left;
  width: 450px;
  margin:0 0 30px 10px;
}
#info dt, #info dd {
  float: left;
  margin-bottom: 20px;
}
#info dd {
margin-left:10px;
}
#sns {
  float: right;
  width:480px;
  overflow:hidden;
}
#sns p {
  font-size:28px;
  text-align: center;
  margin-bottom: 10px;
}
#sns li {
  float: left;
  margin: 10px;
}
#sns li a {
  display: block;
  width:220px;
  height:60px;
  border-radius: 8px;
  background: #FFCC66;
  line-height: 60px;
  text-align:center;
}

/*アクセス部分*/
#access {
  background: #FACFB3;
  padding: 10px;
}
#access h3 {
  font-size: 28px;
  margin-top: 20px;
  font-weight: normal;
  width:120px;
  float: left;
}
#access h4 {
  width:190px;
  height: 40px;
  background: #FFC;
  float: left;
  font-weight: normal;
  margin:10px 0 40px 40px;
  text-align:center;
  line-height:40px;
}
#access dl {
  clear: both;
  overflow: hidden;
  margin-bottom: 30px;
}
#access dt, #access dd {
  float: left;
  line-height: 1.6;
}
#access dt {
  width: 80px;
  height: 70px;
}
#access dd {
  width: 380px;
  height: 70px;
}
/*フッター部分*/
footer {
  background: #FFF683;
  height:60px;
  text-align:center;
}
footer p {
  line-height: 60px;
  font-size: 18px;
}



@media screen and (max-width:959px){
img {
  max-width:100%;
}
#container {
  width:100%;
}
header h1  {
  font-size:30px;
  top: 45px;
  left: 80px;
}
header .text{
  font-size: 12px;
  top: 25px;
  left: 80px;
}
header .logo {
  width:50px;
  top:20px;
  left:10px;
}
header nav {
  float: none;
  margin: 80px 0 0 0;
}
header ul {
  overflow: hidden;
}
header li {
  float: left;
  width:33.33%;
  margin-right: 0;
  border-right:2px solid #FFF;
  box-sizing: border-box;
}
header li:last-child {
  border-right: none;
}
header li a {
  width:100%;
  height:40px;
  line-height: 40px;
}

/*メイン部分*/
#main {
  width: 96%;
  padding: 20px 2% 0 2%;
}

#mainText {
  width:90%;
  float: none;
  margin: 0 auto;
}
h2 {
  font-size: 20px;
  margin-bottom: 20px;
}
.textInfo {
  font-size: 14px;
}
p#mainImg {
  width: 100%;
  float: none;
  margin-top: 0;
  margin-bottom: 20px;
  text-align: center;
}
#mainShop a {
  width: 80%;
  margin: 0 auto 40px;
}


/*メニュー部分*/
#menuInner {
  padding: 0;
}
#menu h3 {
  width:100%;
  float:  none;
  font-size: 28px;
  text-align: center;
  margin-bottom: 20px;
}
#all a {
  width:200px;
  height:40px;
  float: none;
  line-height:40px;
  margin: 30px auto 0;
}
#menu h4 {
  font-size:14px;
}
#menuPhoto {
  width: 92%;
  padding:0 4%;
  margin: 0 auto;
}
.menuFood {
  width:48%;
  height: 320px;
  margin:0;
}
.menuFood:nth-child(odd) {
  margin-right:4%;
}
#menu .photo {
  text-align: center;
}
.photoText {
  font-size:14px;
}


/*お知らせ部分*/
#info h3 {
  font-size:22px;
}
#infoShop {
  float: none;
  width: 100%;
}
#info dt, #info dd {
  float: none;
}
#info dt {
    margin-bottom: 10px;
}
#sns {
  float: none;
  width:100%;
  margin-bottom:30px;
}
#sns p {
  font-size:22px;
  margin: 20px 0 10px;
}
#sns li {
  float: left;
  margin: 2%;
  width:46%;
}
#sns li a {
  width:100%;
}


/*アクセス部分*/

#access h3 {
  font-size: 28px;
  width:100%;
  text-align:center;
  float: none;
}
#access h4 {
  width:70%;
  height: 40px;
  float: none;
  margin:20px auto 40px;
  line-height:40px;
}
#access dt, #access dd {
  float: none;
  font-size: 14px;
  line-height: 1.4;
}
#access dt {
  width: 100%;
  height:auto;
  font-weight:bold;
}
#access dd {
  width: 100%;
  height:auto;
  margin-bottom: 20px;
}


/*フッター部分*/
footer {
  background: #FFF683;
  height:60px;
  text-align:center;
}
footer p {
  line-height: 60px;
  font-size: 14px;
}
}