[CSS][モバイル]Retina対応
Retinaディスプレイ対応
デバイスピクセルとCSSピクセル
- デバイスピクセルとは…デバイス(端末)ごとのピクセル数
- CSSピクセルとは…3.5インチの画面上で表現されるサイズ
- CSSを記述する際は、基本的にCSSピクセルの数を基準に設計する
- 「デバイスピクセル」を「CSSピクセル」で割った数値、倍率を「devicePixelRatio」という
[HTML][CSS]スマホ対応
head部の記述
meta name = viewportの記述
<meta name = "viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
- content="width=device-width"→デバイスの横幅で描画するように指定
- initial-scale→横向き (Landscape mode) にしたとき、iphoneの自動拡大機能を停止
- user-scalable…ピンチで拡大するかの有無
meta name = format-detectionの記述
<meta name="format-detection" content="telephone=no, email=no">
* 数字列、文字列が電話番号、メールアドレスとして自動認識されないようにする
スマホ用faviconの設定
<link rel="apple-touch-icon" href="apple-touch-icon.png">
* 114*114pxのapple-touch-iconを用意、リンク設定する
javascriptの記述
// 検索バーを隠す window.addEventListener('load', function(){ setTimeout(function(){ scrollTo(0,1); },100); }, false);
- 上記jsをリンクすると、スマホのアドレスバーを擬似的に隠し視認性を向上できる。
bodyの記述
stylesheetのリセット記述
body { -webkit-text-size-adjust: none; }
- 旧iphone対応
CSSでグラデーション
代表的な記述方法
background: webkit-linear-gradient(top, #b6e2fd, #87c2fb);/* 古いapple webkit系ブラウザ対応 */ background: linear-gradient(to bottom, #b6e2fd, #87c2fb);/* W3C推奨のモダンブラウザー記述 */
- 方向、透明度(rgba)等指定可能
- グラデーション等をCSS化できるPhotoshopエクステンション css3ps.com
[PHP][SQL]データベースに登録したニュースをPHPで表示①
ニュースのデータベースを作成
- テーブルを作成。テーブル名=news
- データベースを作成。今回は4カラム
- news_id=連番,int,AUTO_INCREMENT
- news_headline=タイトル,varchar
- news_date=日付,datatime
- news_article=内容,text
phpを作成
index.php
<?php require_once dirname(__FILE__).'/func.php'; /* データベースに接続 */ /* PhpDataObject('データベース設定','アカウント','パスワード') */ /* 'データベース場所;データベースの名前;文字コード' */ $dbh = new PDO('mysql:host=localhost;dbname=データベースの名前;charset=utf8','アカウント','パスワード'); /* SQL文を変数に用意する */ $sql = 'SELECT news_headline, news_date, news_id FROM news;'; /* dbhの中のクエリーをアロー演算子で実行:上で用意したSQL文を実行する */ $rec = $dbh->query($sql); ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/style.css"> <title>最新ニュース</title> </head> <body> <h1>最新ニュース</h1> <?php /* foreach文でデータを取り出す */ echo "<dl>\n"; foreach($rec as $v){ echo "<dt>"; echo '<a href="news.php?news_id='; echo $v['news_id'];//データベースのidをそれぞれのアンカーリンクに設定 echo '">'; echo h($v['news_headline']); echo "</a>"; echo "</dt>"; echo "<dd>"; echo h($v['news_date']); echo "</dd>"; } echo "</dl>"; ?> </body> </html>
news.php
- ニュースの個別ページ(news_articleの内容を表示)
<?php require_once dirname(__FILE__).'/func.php'; /* 直接アクセスされたときindex.phpに戻る */ /* is_numeric…数値であるかを判定→アドレスに文字列を入力されたときの対策 */ if(!isset($_GET['news_id']) || !is_numeric($_GET['news_id']) || $_GET['news_id'] <= 0){ header('Location: index.php'); exit; } /* データベースに接続、取得 */ $dbh = new PDO('mysql:host=localhost;dbname=news0316;charset=utf8','root','root'); /* WHERE文でgetで渡されたidを指定する */ $sql = 'SELECT news_headline, news_date, news_id, news_article FROM news WHERE news_id='.$_GET['news_id'].';'; $rec = $dbh->query($sql); ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>ニュース詳細</title> </head> <body> <h1>ニュース詳細</h1> <?php echo "<dl>\n"; foreach($rec as $v){ echo "<dt>"; echo '<a href="news.php?news_id='; echo $v['news_id']; echo '">'; echo h($v['news_headline']); echo "</a>"; echo "</dt>"; echo "<dd>"; echo h($v['news_date']); echo "</dd>\n"; } echo "</dl>"; echo "<p>".nl2br(h($v['news_article']))."</p>"; ?> </body> </html>
今回の要点
データベースに接続
- $dbh = new PDO('データベースに関する情報');
- $rec = $dbh->query('実行するSQL文');
アンカータグ(a)でGET型で値を渡す
- <A HREF="飛びたいURL?項目名=値"> とアンカーに記述
- リンク先(news.php)、$_GET['項目名']に値が格納される
phpで配列/連想配列の利用、foreach文の利用
<?php /* 配列を利用する */ $finger = array('親指','人差し指','中指','薬指','小指'); /* foreachで表示する */ foreach($finger as $v){ echo $v.'<br>'; } /* 連想配列を利用する */ $goranger = array('red'=>'赤レンジャー','blue'=>'青レンジャー','yellow'=>'黄レンジャー','pink'=>'ももレンジャー','green'=>'みどレンジャー'); foreach($goranger as $k=>$v){ echo $k.'<br>'; echo $v.'<br>'; } /* 配列の別の記述方法 */ $beatles = ['John','Paul','George','Ringo']; echo $beatles[0];
- 多次元配列の利用