現役デザイナー・マーケティングプランナーの備忘録 -3ページ目

現役デザイナー・マーケティングプランナーの備忘録

この道●●年、随分ベテランになってしまったグラフィック&ウェブデザイナー、マーケティングプランナーの制作小技等の備忘録です。

ページトップへ、つるつるっとスクロールさせるボタン【jQuery】

scrollUp jQuery plugin




「スクロールアップ」ボタン。
縦に短いページでは不要ですが、ある程度以上のボリュームになると必要ですよね。

特にスマホサイトでは必須かも。

今回ご紹介するのは「scrollUp jQuery plugin」
これ、最近のお気に入りです。

ある程度スクロールすると自動的に指定位置に表れて、
クリックするとページトップへつるつるっとスクロールしてくれるというボタンです。

「スクロールアップ」ボタンのライブラリは多種多様、ほんとたくさんあります。
でも、「画面の大きさにあわせて相対的な位置指定が出来ること」と
「表示のタイミングが指定できる」「スクロールスピードが調整できる」の3点が私的な必須項目なんで、「scrollUp jQuery plugin」を使っています。


ページトップに戻るボタン


サンプルはこちら




【設置方法】

こちらの「scrollUp jQuery plugin」のサイトからファイルを一式ダウンロードしてきます。

「head」部分にcssとをjQueryを読み込む記述をします。

<link id="scrollUpTheme" rel="stylesheet" href="css/themes/image.css">
<script type="text/javascript" src="js/lib/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="js/jquery.scrollUp.js"></script>
<script>
$(function () {
$.scrollUp();
});
</script>



これで「スクロールアップ」ボタンが表示されます。

上記ではダウンロードしてきたファイル内にあるimage.cssを記述していますが、
この他に用のcssファイルが用意されていますので、シーンに合わせて使うと良さそうです。

私の場合は「トップに戻る」ボタンを画像で作成し表示させますのでimage.cssを改編します。

以下がCSSです。

#scrollUp {
bottom: 20px; /* ブラウザ下辺からの位置 */
right: 20px; /* ブラウザ右辺からの位置 */
height: 34px; /* Height of image */
width: 120px; /* Width of image */
background: url(../../img/btn_scroll_pagetop_ov.png) no-repeat;/* 画像のフォルダ,ファイルを指定 */
}


カスタマイズする場合は、以下のオプション項目です。



/* scrollUp full options*/
$(function () {
$.scrollUp({
scrollName: 'scrollUp',
topDistance: '1500', // トップからどれだけの高さで表示させるか(px)
topSpeed: 300, // トップへ戻るスピード (ms)
animation: 'fade', // Fade, slide, noneの中から選択
animationInSpeed: 800, // ボタンが現れるスピード (ms)
animationOutSpeed: 200, // ボタンが消えるスピード (ms)
scrollText: 'トップへ', // テキスト表示させるときの文字
scrollImg: false, // イメージを表示させるときはtrueにします
activeOverlay: false // トップからの距離を指定した色の線で表示してくれます。
});
});




もちろん、スクリプトは「head」部分に外部jsを作成しリンクさせてもOKです。
私の場合は、「head」内をごちゃごちゃさせたくないので、外部リンクにします。





HTML5からメールフォームの入力欄にあらかじめヒント的な文字を表示しておく「プレースホルダ」がとっても楽に実装出来るようになりました。
以前からjQueryプラグイン等では公開されていましたが、HTML5ではタグをちょっと追加するだけなんです。

プレースホルダって何?って方のために少し説明しますと
フォームの入力欄やブラウザの検索欄などに、入力する前からあらかじめ薄い灰色のテキストが表示されているものを見かけますよね。
文字を入力し始めると自動的に消える・・・
あれです。


メールフォームプレースホルダ1

サンプルはこちら

実装は「placeholder属性」を使います。


たとえば

<label>電話番号: <input size=25 placeholder="00-0000-0000"></label>
<label>メールアドレス: <input type=email placeholder="test@c-simon.com"></label>


としておけば下記のように表示され、記入に迷わないですよね。

メールフォームプレースホルダ3



また、こんな感じにすれば"label"タグがいらないです。


<input placeholder="名前">
<input type=email placeholder="メールアドレス">
<button>送信</button>



メールフォームプレースホルダ2


ついでにhtml5で便利になったフォームタグは以下です。

●入力項目を必須にしたい/input要素の属性に「require」を加える
<input name="text" type="text" require>


●入力した値の書式をチェック/input要素の属性、「typeの値」を書き換える
<input name="email" type="email">

よく使うと思われるTypeは「tel」「url」「email」くらいかな。





最近はあまり見かけませんが、和風テイストを目指すなら
時には縦書きにホームページがあっても良いかも。

てな事で、縦書きにするにはですが。

cssのプロパティでは「writing-mode」です。


cssで縦書き

サンプルページ

以下が各ブラウザに対応する表記になります。
IE以外はベンダーブレックスで対応します。

writing-mode: tb-rl; 
writing-mode: vertical-rl;
-moz-writing-mode: vertical-rl;
-o-writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;




・・・ですが、「-moz-」が効かないので
Firefoxではまだ実装されていません(縦書き表示になりません/2014.04現在)

というわけで
クロスプラットフォーム / クロスブラウザを目標にしている私は使いませんが(笑)

とにかくieとsafari等だけ表示できれば良いんだという方は使って下さい。


クロスブラウザで表示OKな縦書きcssにするには
文字を回転させるなど、強引で長々としたプロパティが必要になります。

加えて、モニターサイズが横ワイドに拡がってる現在の場合、
やはりボディの文章ブロックでは不向きでしょうね。

jsを使って縦書きにする方法がありますが
表組みのセル内とか、見出しでチョロッと使うぐらいに留めた方が無難です。

私の場合、縦書きは、今のところ「センター揃えの改行」でアナログ対応します。
句読点等の位置調整だけを"span"で行えば、コーディングは楽ですしね。

だって、全ブラウザ対応だし。



ついでに、ブラウザについて少し・・・

よくクライアントさんから「結局どのブラウザがいいの?」って相談されますが
今は回答が難しいですね。

私的にはネスケの血筋をひく「Firefox」をおしていましたが、
「Google Chrome」の出現によりGoogleとMozilla社の力関係から
Mozilla社はGoogleに逆らえないのと・・・
んでもって、なぜか昨年韓国Samsungと提携、今後の混乱が予測できるので、どうなる事やら。

早さだけなら「Chrome」か「Opera」

「Opera」はマニアックだし

結局、数年後は「Chrome」天国なんでしょうかねえ~

まあ、MACメインの人は「Safari」のままで良いと思いますが。


最後まで話題に出なかったIE(インターネットエクスプローラー)ですが
セキュリティが甘すぎるっていうか、ハッカーに狙われ続けているんで
わたしは、検討外です。

こんな記事を書いていたら、、、またしてもIEが狙われてる~のNEWS!!
「安全上の脆弱性が見つかりました」だって。

でもクライアントさんの大半がIEなんですよねえ~(汗)

気をつけて下さいね。
とくにXPを使い続けられている方は、PCに重要データを入れないことと、ネットでは絶対個人情報を入力しないように!!
あと、win8の方は、よくわからないまま色んなボタンをクリックしないように(笑)




lightbox系のポップアップはいろいろ試しましたが、最近気に入って使ってるのはこれ

Shadowbox3.0.3

なぜ気に入っているかというと
第一が「グループ化しておけば、ポップアップしてから自動スライドギャラリー」設定が出来る。
2番目に「軽い」
三番は「シンプル」

って感じかな。


Shadowbox

デモはこちら


では設置方法のご説明

まずはここからjsをダウンロード

ソースのショートを避けたいから、とりあえず「Bass」でいいかと。
私の場合は「jQuery派」なんで「jQuery」ですが
よくわからない人は「Bass」。


つぎにチェックマーク
これはポップアップしたい目的にあわせ選ぶんですが
ここもよくわからない人は「全てにチェック」
あと日本サイトの場合は「Japanese」を選択。
「Zip形式」でダウンロードして解凍。

次にHtmlの作成。

HEADタグに

<link type="text/css" href=
class="str">"css/shadowbox.css" rel="stylesheet"

media="all" />
<script type="text/javascript" src=
class="str">"js/shadowbox.js"></script>
<script type="text/javascript">
Shadowbox.init();
</script>



※「href="●●"」や「src="●●"」は自分が保存した場所を指定


あとは、ポップアップしたい箇所の「relにshadowbox」と入れるだけです。

簡単ですね。

画像ポップアップの場合は
<a href="●●.jpg" rel="shadowbox" title="タイトル"><img src="●●.jpg" /></a>


複数画像でギャラリー化する場合は

rel="shadowbox" のところでrel="shadowbox[グループ名]"


あとはオプション設定ですが、
私の場合は、今回実施したかったオプションは2点
●ポップアップしたスライドを自動ギャラリー再生
●youtubeをそのままポップアップ


「ポップアップしたスライドを自動ギャラリー再生」
これは、head内に記載した

<script type="text/javascript">  
Shadowbox.init();
</script>


の部分にオプション記載。

オプション設定はいろいろあるけど、この場合は

slideshowDelay: 3, //スライドを自動送りの時間、1で1秒 0だと自動送りしない
continuous: true, //ギャラリーをループできるようにするか否か



「youtubeをそのままポップアップ」
これは、オプション設定では無く、リンクタグを

<a rel="shadowbox;width=650;height=400;player=iframe" href="http://www.youtube.com/embed/qe6zourqnaE">


width、heightはポップアップしたいサイズに。
結局はiframeなんで、別ページや外部サイトを呼ぶのも同じタグ。

注意点は、youtubeのアドレスは「埋込コード」のsrc部分ということ。



参考までにその他のオプション設定は

animate:true //表示するのアニメーションの有無
animateFade: true //表示する際フェイドさせるか否か
initialHeight: 160 //relで高さを指定しない場合の最小の高さ
initialWidth: 320 //relで幅を指定しない場合の最小の幅
overlayColor: "#000" //背景の色の指定
overlayOpacity: 0.5 //背景の透過度の設定
showOverlay: true //背景の表示の有無
modal:false //trueに設定すると、boxを表示させた時に背景をクリックしてもboxが閉じない
handleOversize: "resize" //コンテンツが大きい場合リサイズする "drag"に設定するリサイズせず、ドラッグ可能になる
counterLimit: 10 //カウントの限界値
counterType: default //skipに設定すると枚数のカウントを別々にしてリンクできるようにする
displayCounter: true //カウントの表示の有無
displayNav: true //ナビゲーションの表示の有無



追記

ちなみに、サンプルページのオプション設定はこんな感じ

<script type="text/javascript">  
Shadowbox.init({
overlayOpacity: 0.8,
slideshowDelay: 5,
continuous: true,
language: "en",
animateFade: true,
});
</script>


たとえば、下記のようなことをしたい時

googlemap

サンプル


まず、Google Maps v3用のhtmlを準備。head内はこんな感じ

<!--ここからGoogle Maps v3用-->
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="js/downloadxml.js"></script>
<script type="text/javascript">
//<![CDATA[
var markers = [];
var sidebarhtml = '';

function initialize()
{
var map = new google.maps.Map(document.getElementById("map_canvas"), //Body内に記載するID
{
center: new google.maps.LatLng(34.669239,135.5115686), //地図の中心座標
zoom: 8, //ズーム
zoomControl: true, //地図のコントロールバー等(オプション設定)
scrollwheel: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
});

downloadUrl("google_pl.xml", function(data) //読み込むxml(後で説明)
{
var xmlDoc = xmlParse(data);
var markers = xmlDoc.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++)
{
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var name = markers[i].getAttribute("name");
var category = markers[i].getAttribute("category");
var mapall = markers[i].getAttribute("mapall");
var html = '<div style="height: 180px; width: 160px"><b>'+name+'</b><br>'+mapall+'</b>' ; //吹き出しのhtml
createMarker(point,html,map,category,name);
}
document.getElementById("side_bar").innerHTML = sidebarhtml;
});

}

function createMarker(point,html,map,category,name)
{
var customIcons =
{
      blue: //マークのID
{
icon: 'images/ie_ic.png', //呼び出すマーク画像
shadow: 'images/ie_ic.png'
},
red:
{
icon: 'images/orange.png',
shadow: 'images/orange.png'
},
gray:
{
icon: 'images/gr_ic02.png',
shadow: 'images/gr_ic02.png'
}
};
var icon = customIcons[category] || {};
var marker = new google.maps.Marker(
{
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow,
title: name
});

markers.push(marker);
google.maps.event.addListener(marker, 'click', function()
{
infoWindow.close();
infoWindow.setContent(html);
infoWindow.open(map,marker);
map.panTo(point);
});
}
var infoWindow = new google.maps.InfoWindow();


function myclick(num)
{
google.maps.event.trigger(markers[num], "click");
}

window.onload=initialize;

//]]>
</script>



上記、緑字の箇所を自分の設定に適時変更
表示するbody部に


<div id="map_canvas" align="left" style="font-size : 12px;vertical-align : 50%;text-align : left;height:400px;width:830px;float : left;"></div>



表示サイズ等は適時変更。

次にjsを準備。というか最初に準備するべきかな(笑)

downloadxml.js の最新ファイルは、http://code.google.com/p/frisaporceddhu/source/browse/trunk/js/?r=44にあります。
ダウンロードして保存。

最後にxmlファイルの作成
上記ソース内(//読み込むxml(後で説明))と同じファイル名にて新規作成。


<?xml version="1.0" encoding="utf-8"?>
<markers>

<marker zoom="ズームサイズ" lat="座標軸" lng="座標軸" category="マーク画像ID" name="タイトル" ename="" mapall="&lt;img src='表示画像.jpg' width='135' height='90' &gt;&lt;br&gt; コメント&lt;br&gt;コメント&lt;br&gt;&lt;a href='リンクアドレス' target='_blank'&gt;コメント&lt;/a&gt; "/>
<marker zoom="9" lat="34.768422" lng="136.189853" category="blue" name="No.2608 三重県伊賀市" ename="" mapall="&lt;img src='2608/i01.jpg' width='135' height='90' &gt;&lt;br&gt; 土地/263坪&lt;br&gt;建物/30坪&lt;br&gt;&lt;a href='plan/2608/index.html' target='_blank'&gt;物件詳細を見る&lt;/a&gt; "/>

</markers>


上記、<marker zoom~  "/>までを表示したい数だけ記載する。(注意:html特殊文字は文字表記で)
・・・で完成。
あっ、マーク画像は好きなのを作成してimagesフォルダにでも入れておくこと。(//呼び出し画像マークの箇所でリンク位置指定)









※追記

GoogleMapの座標軸の取り方を記載忘れ。
検索で「Googlemap 座標軸取得」等で検索すればいっぱい出てくるけど
私は、ここを使わせて頂いています。

住所を入力して、「検索」
次画面で出てくる「lat」と「lng」です。