月: 2013年1月

  • 【続】横幅いっぱいのヘッダーやフッターにするCSSテクニック

    ヘッダーやフッターなどがブラウザの横幅いっぱいに広がっているウェブサイトをよく見ると思います。そういった表現を実現しようという趣旨です。スタイルシートを活用して、画面いっぱいに広げたいと思います。
    以前、どのような考え方でCSSを変更し横を画面いっぱいに広げればいいのかということをまとめたのですが、実はある問題が発生していました。

    問題)レスポンシブデザインに対応できなくなった

    横幅を広げるとレスポンシブル非対応Twenty Elevenはもともとレスポンシブデザインになっていました(レスポンシブデザインって何? という場合は、ググってみてください)。しかし、横幅いっぱいにヘッダーやフッターを広げると、なぜかレスポンシブデザインではなくなってしまったのです。iPhone で確認すると、サイトは単純に縮小されたように表示され、第一印象では「小さすぎて何が書かれているか分からない……」という感じです。なのでタップして拡大しないといけません。
    そういう不具合もあり、レスポンシブウェブデザイン対応の Twenty Eleven であるにも関わらず、WPtouch というプラグインを使ってスマホ表示を最適化していました。
    しかし、せっかくのレスポンシブデザインを無下にするのももったいないと思い、なんとか解決してみようと思いました。また、レスポンシブデザインが昨年から流行のようなので、対応するための考え方や基礎を知るためにも必要な取り組みでした。
    そういうわけで、改めて、ヘッダーやフッター、またはナビゲーションメニュー(グローバルメニュー)などを、ブラウザの横幅いっぱいに広げて表示させるカスタマイズ方法をまとめたいと思います。

    ブラウザの幅を超えて表示させるCSSの基本的な考え方

    こちらは過去にメニューやヘッダー背景だけをブラウザの横幅いっぱいに広げる方法の記事で取り上げていますので、詳しくはそちらを見て頂きたいのですが、簡単にまとめておきます。

    メニューやヘッダー背景だけをブラウザの横幅いっぱいに広げる方法


    ナビゲーションをブラウザいっぱいに広げる仮説
    主にマージンとパディングによって実現しています。ネガティブマージンという、マージンに負の値を指定して要素をはみ出す方法を使います。しかし、そのままだと中のコンテンツまではみ出してしまうので、パディングで同じ値だけ内側に押し込みます。そうすれば、見かけとして上の図のような、メニューなどの要素が body をはみ出して表示されるようになります。
    ただし、このままだと右にいくらでもスクロールができてしまいます。マージンがはみ出した分、サイトの幅自体が広がってしまったのです。
    メニューを横に広げたら、どこまでも横にスクロールされる
    そこで登場するのが【 overflow 】です。これを使うことで、はみ出した要素を表示させないようにできます。overflow を使うときのポイントは2つです。

    • ひとつは 1 番基礎となる要素【 html 】は【 auto 】を指定
    • html 上にある【 body 】は【 hidden 】を指定

    【 overflow: hidden; 】によって、ブラウザの幅をはみ出した部分を非表示にしてくれます。なので、マージンを広げてもブラウザの幅以上にサイトが広がって表示されることはありません。そういうわけで、過去の記事に書いていた CSS の指定方法はこちらでした。

    /* 前提条件の記述 */
    html {
        overflow: auto;
    }
    body {
        overflow: hidden;
        position: relative;
        min-width: 1000px;
    }
    /* 横幅を背景いっぱいに広げたい場所に追記 */
    #example {
        margin: 0 -500%; /* 上下の margin は元の値に合わせて適宜変更 */
        padding: 0 500%; /* 上下の margin は元の値に合わせて適宜変更 */
    }

    ただ、既に言ったようにこれだとレスポンシブデザインに対応してくれなくなります。そこで、Twenty Eleven のレスポンシブデザイン対応を活かしつつ、ブラウザや背景いっぱいに要素を広げて表示させる方法が必要になります。

    結論)追記するのは overflow だけで良かった件

    上記の書き方は、参考にさせて頂いたサイトからそのまま引っ張ってきたものなんですが、どうも Twenty Eleven の場合、不必要な記述があるようでした。まず、【 min-width 】はいりません。これが一番の原因です。これのせいでレスポンシブデザインがレスポンシブルじゃなくなっていたわけです。
    また、【 position:relatvie; 】も不要でした。これが無くても問題なく横幅を広げられるようです。ただし、他の要素との関係で、【 positoin:relative; 】の指定がないと上手くいかないことがあったので、適宜追記して頂くといいと思います。なんかうまくいかない時は、position プロパティを疑ってください。
    要するに、以下をスタイルシートに追記すればOKです。

    html {
    	overflow: auto;
    }
    body {
    	overflow: hidden;
    }

    そして、ブラウザいっぱいに広げたい要素にネガティブマージンとパディングを指定します。この書き方に関しても、まとめて記述するより分けて記述した方が安全です。なぜなら、元々上下にマージンやパディングが指定されていた場合、うっかりその指定を打ち消してしまう可能性があるからです。そういうわけで、以下のような書き方がいいと思います。

    #example {
    	margin-left: -500%;
    	margin-right: -500%;
    	padding-left: 500%;
    	padding-right: 500%;
    }

    Twenty Eleven の場合、記述する場所は以下のようになります。

    ヘッダー #branding
    グロナビメニュー #access
    フッター #site-generator
    フッター(ウィジェット部分) #supplementary

    画面いっぱいに広げたい要素のidと【 #example 】を置き換えてください。
    さて、以上でうまくいくはずです。画像じゃ分かりにくいですが、スマホで表示した際にレスポンシブデザインに対応しています。

    横幅広げてレスポンシブ対応
    スマホ(iPhone)での表示

    ぜひ試してみて、そして実際に確認してみてください。

  • 【初心者向】WordPressインストール後の必須設定3項目について

    WordPress のインストールだけでも結構苦労したのに……この後は一体何をすればいいんだ! という初心者向けの記事。もしくは、今まで何となくWordPress 使ってきたけど、本当に今のままでいいのか分からない! という方向け。
    WordPress の初期設定の基本的な項目 3 つ、一般設定・投稿設定・パーマリンク設定について。

    WordPress 3.5 を元にした内容です。画面の表示など、仕様が異なる可能性があります。

    1.一般

    ここでのポイントは 2 点。サイトタイトルとキャッチフレーズです。特に注意したいのが、ここで設定するタイトルやキャッチは視覚的に現れるものだということです。
    どういうことでしょうか?
    ウェブサイトというのは見せる対象が 2 通りあります。ひとつはぼくたち人です。そしてもうひとつは検索エンジンです。検索エンジン向けのタイトルは All in One SEO Pack というプラグインで設定しますので、ここでの設定は人向けに行ってください。
    つまり、実際にウェブサイトを見た人の目に入ってくるサイトのタイトルということです。キャッチフレーズも同様です。「訪問者にどんなメッセージが伝われば、このサイトをより見てもらう事ができるのか?」ということを考えて付けるのもいいでしょう。非表示設定もできますので、あまり深く考えずに付けても OK です。

    ポイント

    一般設定でのサイトタイトル・キャッチフレーズは人に向けて SEO タイトルは All in One SEO Pack で検索エンジンに向けて設定

    2.投稿設定

    ここでの設定はとりあえず 1 点だけで OK です。その他は追々で構いません。ではその 1 点とはどこか? それは更新情報サービスです。ここには、いわゆる Ping の送信先を書き込みます。ブログを更新した際にその更新情報を送ってくれます。

    Ping の送信先

    以下に代表的な Ping の送信先をピックアップしました。そのままコピペするもよし、他の送信先を追加するもよし、逆に削除するもよし。ご自由に設定してください。ただし、あまり送信先が多くなりすぎないように!

    http://rpc.pingomatic.com/ http://rpc.pingomatic.com/
    http://blog-search.net/up.php
    http://blog.goo.ne.jp/XMLRPC
    http://blog.with2.net/ping.php/1143367/1295154496
    http://blogsearch.google.com/ping/RPC2
    http://bulkfeeds.net/rpc
    http://ping.bloggers.jp/rpc/
    http://ping.fc2.com
    http://ping.gpost.info/xmlrpc
    http://ping.myblog.jp
    http://ping.rss.drecom.jp/
    http://rpc.pingomatic.com/

    ちなみに、Ping はちょっとブログの記事を修正するなどの更新をした場合にも送信されてしまうようです。そうなると、頻繁に送信されて “うざい” ので、プラグインなどで送信を制限できます。オススメのプラグインはこちらです。

    また、複数の WordPress サイト管理している場合など、Ping の管理を一括で行えるサービスもあります。この PINGZONE というサービスも使い勝手がよさそうでした。

    整形

    あと、これは好みですが、ぼくは一番上の【整形】のところのチェックも外しています。海外で使われる顔文字( :-) とか、:-P など)が、絵文字に置き換えられる設定になっています。
    このサイトでは CSS や PHP のコードを記述することが多いのですが、この設定が原因でコードの一部がスマイルマークに変わっていたことがあって、その時このチェックを外しました。それまで気にもしていませんでしたが、思わぬ落とし穴でした。

    3.パーマリンク設定

    パーマリンク設定画面

    パーマリンク設定は重要です。SEO 的にも重要です。パーマリンク設定はいくつか選択肢が用意されていますし、自分で好きなようにカスタマイズすることもできます。このサイトのパーマリンクは、ドメインの後に投稿名が来る形にしています。設定画面にある 5 つ目の設定です。
    そして、この設定をオススメします。
    主な理由は以下の 3 つです。

    パーマリンクを投稿名にすべき3つの理由

    理由1)永続性がある

    パーマリンクの目的はひとつに永続性です。そのリンクが半永久的に有効なようにするのが役割です。そのため、できるだけWordPressの各種設定変更の影響を受けない形が理想です。例えばカテゴリーやタグの名前をパーマリンクに差し込んだ場合は、カテゴリー名やタグ名を変更した際にパーマリンクが変わってしまい、永続性が失われてしまいます。

    理由2)意味のある文字列にできる

    リンクにも意味がある方がよい、というわけです。ユーザーが URL を覚えやすくするには、URL に意味を持たせる方が効果的ですからね。そういうわけで、デフォルト設定のポスト ID だけなんていう意味のない文字列のパーマリンクは絶対にやめましょう。
    URL に含まれるキーワードは検索対象にもなります。例えば Google で「WordPress」と検索すると、タイトル以外にも URL が検索キーワードとしてヒットしているのが分かると思います。話はそれますが、そういう意味ではキーワードを意識した日本語URLも効果的です。(ただし、日本語にすると URL が長くなりすぎるので注意)
    検索結果のURLにキーワード

    理由3)長くなりすぎない

    パーマリンクが長すぎると、SEO 的に良くないという情報もあります。Sorezki SEO Plus という SEO チェックの GoogleChrome プラグインからは、あまりに長い URL は警告を受けてしまいます。順位が下がる程影響を与えることはないようですが、URL が長くなるとページのサイズが大きくなるためユーザビリティ的にもよろしくありません。
    パーマリンクにカテゴリー名などを含めると、これが長くなる原因になってしまいます。カテゴリーを階層構造にしているとなおひどいです。【 親カテゴリー/子カテゴリー/投稿名.html 】みたいになります。なので、余計な情報は挟まず、適度にキーワードを盛り込んだ投稿名ベースのパーマリンクがオススメというわけです。

    パーマリンクは投稿名ベースで!

    というわけで、パーマリンクは投稿名ベースの 5 つめにすることをオススメします。もしくは、投稿名の前に固定の架空ディレクトリを挟んでもいいと思います。

    http://ドメイン/好きなキーワード/投稿名/

    WordPress のバージョン 3.3 より前は、投稿名のみは非推奨となっていて、一文字でもいいから投稿名の前に何か挟むように言われていました。(例えば、http://ドメイン/a/投稿名/ みたいな感じです。)バージョン 3.3 以降は選択肢にもしっかり用意されたので問題ないようです。
    ちなみに、パーマリンクに特定にキーワードを挟む場合は、カスタム構造で設定します。例えば、

    http://ドメイン/blog/投稿名/

    というパーマリンクを設定する場合は、カスタム構造をチェックし以下のように入力します。

    /blog/%postname%/

    また、末尾に.htmlなどの拡張子を入れるのはパーマリンクの永続性を保つ観点からよくないようです。しかし、WordPressサイトの表示速度の観点からすると、キャッシュを利用した表示速度アップのために.htmlがあった方がいいようです。どちらを選ぶか正解はありませんが、迷うようなら無しでいいと思います。

    参考記事

    パーマリンクに関してはこちらを参考にしてください。
    — URL最適化5つのSEOポイント | Web担当者Forum
    — WordPressでSEOに有利かつ短い究極のパーマリンク設定(2012年用最新版!)
    — WordPressのパーマリンク設定を最適なものにカスタマイズする