CodeIgniter ViewとCSSの思考(3)

サーバにUPはしていませんが、ひな形的に作ったhtmlファイルに追記

  • tableタグとそれに対応するCSS
  • olタグとそれに対応するCSS
  • ulタグとそれに対応するCSS
  • aタグとそれに対応するCSS

あとは都度必要なものを随時作成。

CodeIgniter側での課題:viewファイルを表示する部品ごとに作成
viewsフォルダの中身は表示させる部品を作る為のviewファイルで構成。

views/機能役割名/ファイル名.php

とりあえずPCの場合でしか考えてない訳だけれど、別の切り口でのそれも必要だと思います。
今後の課題ってことでとりあえずCodeIgniterを知る為にPCの場合のみで作成してみてから、考えたいと思います。

  • 用意する必要があるもの
    • モバイルの場合
    • PC用ページの場合
    • PC用ページ(印刷用)の場合

CodeIgniter ViewとCSSの思考(2)

簡単にモックを書いてみました。
足りない要素もあるわけですが、勢いのままにとりあえず作ってみました。

CSSがない状態

CSSなし
CSSがない状態の表示
テキストリンクをクリックすると実際に作ったhtmlファイルが表示され、画像をクリックするとキャプチャが表示されます。
素のHTMLです。次のCSSがある状態は、このHTMLにCSSの設定を足したものになります。

CSSがある状態:boxsubが右側

floatを右に設定したもの
CSSがある状態:boxsubが右側の場合
boxmainとboxsubをfloat:leftで設定をしています。文書としては、boxmainのほうが先に記述していますが、表示は右側になっています。

CSSがある状態:boxsubが左側

floatを左に設定したもの
CSSがある状態:boxsubが左側
boxmainとboxsubをfloat:rightで設定をしています。表示が左側になっています。
ID名をbox_rightのように、右左を表す表記にすると、CSSの設定によってIDの表す方角が嘘になってしまうため、役割である「メイン」「サブ」という命名をしています。

カレンダーについては、次のサイトを参考にさせていただきました。
A CSS styled calendar
カレンダーを複数設置する場合を考え、#calendarではなく、.calendarとして設定をしています。

(つづく)
#とりあえず寝ます(^_^;)
#MacIE5.2 で表示崩れがあったのでCSSを修正。うっかりうっかり。
#WinXP IE6 Firefox でとりあえず確認。
#Mac IE5.2 Firefox Opera9.27 Safari3.1.1 でとりあえず確認
#もちょっと調整したい部分もあるけど、とりあえずなのでこれでw
#テーブルの基本設定もいれとかないと不便なことに気がついた・・・・・(汗)
#ページャーも必要だね!

CodeIgniter ViewとCSSの思考

どう書くべきなのかを悩みつつ、viewファイルの作り方とCSSについて悩んでみました。
もくもく会なるものを知り、たまには自宅を飛び出して・・・ということで浅草国際通りのデニーズにていろいろ考え中。
いきなりNEKOGET MYFACEをCodeigniterで書くのは大変だった!ということで簡単に日記っぽいアプリをコーディングしてみました。どう書くべき?を悩みながらなので遅々としているわけですが、なんとか書けそうかなぁ?まで到達。

PC用のviewの組み立てについて

基本ファイル views/common/*
  • views/common/base.php
  • views/common/header.php
  • views/common/footer.php

controllers/hoge.phpで記述されるviewは必ず次のような書き方になる。

<?
$data['header'] = $this->load->view('common/header',$data,TRUE);
$data['footer']  = $this->load->view('common/footer',$data,TRUE);
$this->load->view('common/base',$data);
?>

当初考えたbase.phpの中身

・・・省略
<body>
    <?=$header;?>
    <?=$box;?>
    <?=$footer;?>
</body>
・・・省略

考え直したbase.phpの中身

・・・省略
<body>
<?=$header;?>
<div id="box">
    <? if(isset($boxmain)){ ?>
        <div id="boxmain"><?=$boxmain; ?></div>
    <? } ?>
        <? if(isset($boxsub)){ ?>
        <div id="boxsub"><?=$boxsub; ?></div>
     <? } ?>
 </div>
<?=$footer;?>
</body>
・・・省略

2カラムのレイアウトにしてみました。
id=”boxmain” はメインのコンテンツ
id=”boxsub” はメニューリンク等、サブコンテンツとなります。

CSS的にはfloatの設定をすれば、boxsubを右側に表示をさせることも左側に表示をさせることもできるので、文書としては先にメイン、次にサブ内容を表示させます。

先日参加したアクセシビリティセミナーでの教訓として、メインとなる文書は最初の方にあった方がいいということで、このような構成です。3カラムにするだけの情報量が無いことと、私自身が3カラムはあまり好きではないため、2カラムで作成。

id名にleft,right等をつけないのは、CSSの書き方によってid名が嘘になる為。

CSSの構造化
  • htmlタグに対する共通設定
  • フォントの設定
  • headerの設定
  • boxの設定
  • footerの設定
  • h1,h2,h3,h4,h5,h6に対する設定

(課題:これだけでは足りないはずなので、ここは後でさらに考える)

SKINテーマを切り替え可能にするフォルダ構成
  • /skin/テーマ名/images/*(画像ファイル)
  • /skin/テーマ名/css/*.css

テーマ名をconfigで設定することで、スキンテーマを切り替え可能にします。
cssファイルから呼び出される画像ファイルは、cssファイルから見た相対パスで取得できるため、テーマ名が切り替わることで、適用されるCSSファイルが変更され、そのCSSファイルから見た画像ファイルが利用できます。
また、スキンテーマを作成する際のモックファイルを準備しやすくなります。

モックファイルのセット
  • /index.html
  • /skin/テーマ名/css/*.css
  • /skin/テーマ名/images/画像ファイル

CSSファイルを1枚にするか? 複数にするか?

これはすごく悩む訳で・・・・
CSSのclassの設定を class=”class1 class2″ といった設定ではなく、できるだけxhtmlの構造を生かしてのCSSにしたいと思います。
#追記:勉強用に書いているものは単純なつくりなので、とりあえずは1枚で対応してみます。

  • #header ul .glovalnavi{…}
  • #header li {…}
  • #header li a {…}
  • #header li a:hover{…}

(つづく)
#下書きも書かずに考えながら書いてるので、随時更新ですw
#そろそろバッテリー切れだ(残0:18)  2008.08.03 01:01
#codeがわかりやすくなるようにプラグインを追加 http://www.chameleonic.org/plugin/php-hilightstring
#プラグインにあわせて、ちょっとだけ修正 2008.08.03 2:10

XHTML(HTML)とCSS

文書情報と
レイアウトを決める情報と
色を決める情報
の3つ

情報を指すID,CLASS
レイアウトを決めるためのID,CLASS
色を決めるためのID,CLASS
のルールがあれば綺麗にまとまるのかな?と妄想中

SNSとCMS

考えはまだ全くまとまっていません。
まとまっていませんが、書かないと忘れそうなので書いてみることに(笑)

kouzou20080627.gif

図を作ってみました。
今思いつくもので、入れものとして一番近いのはXOOPSかもしれません。

機能群というのは、モジュールっぽいもの。
で、その中にたくさんあるのはプラグインっぽいもの。
1つの機能が手段
1つの機能群が、目的
目的のために集められた手段のまとまりが機能群
基礎機能は「目的」のために、「手段」のために、その材料(情報)を提供する。
基礎機能は「目的」のための「手段」によって公開される情報について最低限の規制を行う。
(提供しないという荒業で抑止する)

「どう見(魅)せるのか(デザイン)?」は手段なので、1つの機能
「目的」のための「手段」のひとつ

うーん・・・・この図ではわかりにくい(反省)
そしてかわいくない(猛反省)

CMS的なCSSの思考

以前に参加した、初心者向けXOOPS Cubeの勉強会に参加したあと、
聞いたことを図にしてみた図がコレ↓

XOOPS Cubeの想像図

SNSやCMSでのテーマの課題として、いろんなページデザインが混在するであろう1つのシステムの中で、デザインの統一ができないだろうか?ということを考えています。
本体とモジュールという、後から機能をつけたり取り外したりという構造の中で、その後からつけたものが、まるで最初からあったかのように自然にそこにあってほしいと思うのです。
そのモジュールの役割(機能)やその画面に至るまでの流れも大事だけども、見た目もじゅーよーという事で、システムとして吐き出されるHTMLの構造と、それを彩るCSSとの関係について、しばらく考えてみたいなと思っています。
前回参加をさせていただいた、XOOPS Cubeでもこの部分はとても悩ましく思う事柄のひとつらしく、デザインについてはネットワーク上にデータセンター(この言い方でいいのかどうかわからないけどw)を置いて、後からデザイン情報を取りに行くという形にするか、XXX流デザイン・・・等を作って、デザインの系統を作ってしまうかのどちらかかなぁなんて話を、立ち話させていただきました。
(その節は、こんな初心者の与太話をまじめに聞いてくださり、ありがとうございました。)
私が作るとしたら、どんな形になるのだろうか?ということで、少しずつですが考えをまとめていこうと思います。

  • レイアウトやデザインの自由度はできるかぎり上げたい。
  • 全体のイメージは統一をさせたい
  • 共通項で縛る設定は何だろう?
  • ページ毎で縛る設定は何だろう?
  • システムの役割として、データをどのようなHTMLで表現できるのが良いのだろう?

これをどう表現するかを考えるために、雛形となるものを少しずつですが作り始めてみようかと思います。

追記:[CMS的なCSSの思考]というカテゴリを作ってみました。
遅々としたペースになるとは思いますが、続けていこうと思うので・・・・
XOOPSもちゃんと勉強したいなぁ・・・