Tuesday, December 16, 2008

Firefox の新規blankページをカスタマイズ

カスタマイズと言ってもスタイルを適用するくらいですが。


できること

 背景色の変更や画像の表示ができます。
こちらのページ(FireFoxの空白ページを彩る「Dark Firefox」: DesignWorks)にあるようなものを全く一切の拡張機能なしで実現する方法を提案。
対応: Fx2 ~
(画像表示に対応しているのは2.0からでした)
一部拡張機能と競合します。Speed Dial や Auto Dial などをインストールした状態では効果はありません。

ユーザスタイルシートの利用

 具体的なやり方については、Fxのユーザスタイルシートを使います。

サンプルコード

@-moz-document url("about:blank") {
html {}
body {
margin: 0;
width: 100%;
height: 100%;
background: #000000
center no-repeat fixed;
background-image: url(chrome://branding/content/icon64.png); /* For Fx2 */
}
x:-moz-broken,
body {
background-image: url(./icon64.png); /* For Fx3 */
}
}
画像を配置する場合は、Fx3 ではchrome:// 以下にアクセスできない替わりにユーザスタイルシートからの相対パスが使えるので、<Profileのディレクトリィ>/chrome に画像をバンバン置きましょう。
Fx2 の場合は、相対パスが使えない替わりに chrome:// にアクセスできるので browser.jar の中に入れてしまいましょう。
表示サンプル

テキストを表示させる

 スタイルシートのみのカスタマイズですので、ページのコンテンツそのものは書き換えられないのですが、テキストを表示したい、というときは :before 擬似要素や :after 擬似要素を用いることでテキストの表示ができます。
@-moz-document url("about:blank") {
body {
margin: 0;
width: 100%;
height: 100%;
font-family: Verdana, Helvetica, sans-serif, Arial;
}
body:before {
content: "about:blank";
font-size: 140px;
font-weight: bold;
color: #ccccccc;
cursor: default;
}
html:after {
content: "Designed by Akanasu.c";
display: block;
height: 30px;
margin-top: -50px;
text-align: right;
font-size: 30px;
font-weight: bold;
color: #555555;
cursor: default;
}
}

表示サンプル

応用として

 html 要素と body 要素にそれぞれ別の背景画像を指定することでちょっと複雑な表現も可能です。

参考

Saturday, November 29, 2008

イタリア旅行してきました

もう、半月ほど前の話ですがイタリアへ旅行に行きました。

日程は2008年11月03日~10日(月)。10日は飛行機移動だけだったので(現地9日夜に発、日本10日夜着)、実質的に1週間・6泊8日旅行でした。
30人程度の団体ツアー。割合は新婚が7割、定年(間際)夫婦が2割、その他1割といったところ。

行程はだいたい以下の通り。

  1. ミラノ
  2. ヴェネツィア(2泊)
  3. フィレンツェ
    • オプションでピサ
  4. ローマ(2泊)
    • オプションでカプリ島

4日5日は、イタリアでも珍しく雨、の予報でしたが丁度観光に回っているときには雨に降られず、なかなか良い天気でした。夜中には、雷雨が激しかったですが。
少々寒い気もしましたが、帰ってきた日本ほどではなかった。
1週間ネットの無い生活でしたけれど、移動移動の連続でそんなことを気にすることもなく。移動中はほとんど寝てたしね。
7日間で撮った写真は、400枚以上。
ただ見直して見るとこれでも少ないと思う。落ち着いてアングルを決めて取れなかったから、余り良いショットが少ない、という結果。
おしい。
こういう遣り残しがあるから、また行きたいということになるのだろう。
内容としては、1週間に色々詰め込みすぎました。自由時間があっても何もできないよ、と話し合ったのですが、買い物をする時間も(決められた時間、場所以外)ない状態は良くはない。

飛行機のアップダウンと書類手続きがなければ、何度でも行きます。
定住してもいい。
長く住み着くには不便だと思うけれども。

Monday, September 29, 2008

横スクロールのサンプルページ

Javascript で横スクロールするスクリプトのサンプルを以下に掲載.
CSS オン,Javascript オンの環境でアクセスしてください.

Monday, September 01, 2008

横スクロールするスクリプト ~横長デザインの為に~

追記 at 2008.Sep.04
Firefoxで Ctrl + PgDn(or PgUp) 時にタブ移動と共にスクロールしてしまう不具合修正.
その他に,
  • Shift, Ctrl, Altキー押下時の処理を追加.
  • Home, End キーに対応

上記対応のコード修正. 同様にソースファイルも修正しました.
追記 at 2008.Sep.02
修正ミスを修正.
  • Safariでスクロールイベントが動かない不具合

コードも修正. ソースファイルも修正しました.

 実験的に横長デザインに変更しようかと思いまして,ユーザビリティを考慮して,まずマウススクロール時に横スクロールするスクリプトを実装してみました.

参考

マウスホイールで横スクロール


function handle(delta) {
if (delta < 0) {
// 下方向にまわした場合の処理
} else {
// 上方向にまわした場合の処理
}
window.scrollBy(-delta*120, 0);
}

/** Event handler for mouse wheel event.
*/
function wheel(event){
var delta = 0;
if (!event) { /* For IE. */
event = window.event;
}
//Shiftキー Ctrlキー押下時
var altK = typeof event.modifiers == 'undefined' ? event.altKey : event.modifiers & event.ALT_MASK;
var ctrlK = typeof event.modifiers == 'undefined' ? event.ctrlKey : event.modifiers & event.CONTROL_MASK;
var shiftK = typeof event.modifiers == 'undefined' ? event.shiftKey : event.modifiers & event.SHIFT_MASK;
if (shiftK|ctrlK) { return true; }


// テキストボックス上では通常のスクロール動作
var isTextArea = false;
var target = event.target||event.srcElement;
if (target && target.nodeName.match (/input|textarea/i) && target.type.match (/textarea/i)) {
isTextArea = true;
}
if (isTextArea) {
return true;
}

if (event.wheelDelta) { /* IE/Opera. */
delta = event.wheelDelta/120;
if (window.opera) { delta = -delta; }
} else if (event.detail) { /* Mozilla case. */
delta = -event.detail/3;
}
/** If delta is nonzero, handle it.
* Basically, delta is now positive if wheel was scrolled up,
* and negative, if wheel was scrolled down.
*/
if (delta) {
handle(delta);
}
if (event.preventDefault) { event.preventDefault(); }
if (event.returnValue) { event.returnValue = false; }
return false;
}

/** Initialization code.
* If you use your own event management code, change it as required.
*/
if (window.addEventListener) { window.addEventListener('DOMMouseScroll', wheel, false); }
//else if (window.attachEvent) { document.attachEvent('onmousewheel', wheel); }
window.onmousewheel = document.onmousewheel = wheel;

リンク先のコードをいくらか修正したものです. 修正箇所は一々説明しません.
あと,テキストボックス上では横スクロールしないようにしています.

PageDown, PageUp キー押下時に横スクロール


function KeyShirtcuts(event) {
if (!event) { /* For IE. */
event = window.event;
}
// Altキー Ctrlキー押下時
var altK = typeof event.modifiers == 'undefined' ? event.altKey : event.modifiers & event.ALT_MASK;
var ctrlK = typeof event.modifiers == 'undefined' ? event.ctrlKey : event.modifiers & event.CONTROL_MASK;
if (altK|ctrlK) { return true; }


var isTextArea = false;
var target = event.target||event.srcElement;
if (target && target.nodeName.match (/input|textarea/i) && target.type.match (/textarea/i)) {
isTextArea = true;
}
if (isTextArea) {
return true;
}
switch (event.keyCode) {
case 33 : //PgUp
window.scrollBy(-document.documentElement.clientWidth, 0); break;
case 34 : //PgDw
window.scrollBy(document.documentElement.clientWidth, 0); break;
"case 35 : //End
window.scrollTo(window.scrollMaxX|document.body.scrollWidth, 0); break;
case 36 : //Home
window.scrollTo(0, 0); break;

default: return true;
}
if (event.preventDefault) { event.preventDefault(); }
if (event.returnValue) { event.returnValue = false; }
}
if (window.addEventListener) { window.addEventListener('keydown', KeyShirtcuts, false); }
else { document.attachEvent('onkeydown', KeyShirtcuts); }

IE では'keypress'イベントで PgDn, PgUp キーは拾ってくれないようなので'keydown'イベントで.
同様に,テキストボックスにフォーカスがあるときは横スクロールしないようにしています.

vscroll.js

 参考までに上記のスクリプトを纏めてファイル化したものを以下に置きます.

補足

 Fx1.5-3.0, IE6, Opera, Safari3.0 at WinXP にて動作確認しております.
 ブログデザイン自体は記事毎に横並びにする予定ですが,実際に上記のコードを使用する場合は縦方向のスクロールが必要になった場合の考慮をする必要があります.
 基本,長文を読ませる(自分のような)ブログには向いてない.
 ちなみに,デザインはコチラを参考にする予定. >>NonSociety: Julia

 ちなみの因みに,あくまで予定.

Template Design. 2008 Jyun.