YAMAHAルータの実機・検証 第7回 インターネット回線の障害に備える

2015/01/29 YAMAHA, 技術系 投稿者:長澤

第7回はインターネット回線の障害に備える設定を行います。

インターネットを使って業務を行うのが当たり前になっている社会で、インターネットが使えなくなってしまった場合、業務を行うことができなくなってしまいます。業務が停止しないようにインターネットの障害に備えなければなりません。
では何をすればいいのでしょうか。

インターネットが使えなくなってしまう主な原因としてルータの故障、インターネット回線の障害が考えられます。そこでルータとインターネット回線の冗長化を行い故障・障害に備えます。

冗長化とは?
通信系統や通信機器などの予備を用意しておき一部の通信や機器が故障してもサービスを継続して行えるようにシステムやネットワークを構築することです。

今回はインターネット回線とルータの冗長化を行いインターネットが継続して利用できる設定を紹介します。
まずはネットワーク設定例の条件です。
・インターネット回線は2回線用意
・ルータはYAMAHA RTX1200を2台使用
・ISP(インターネットプロバイダ)はA社とY社の2社を利用

ネットワーク構成

今回設定するネットワーク構成になります。
vrrp-1
2台のRTX1200とインターネット2回線を使用して冗長化を行います。

ルータ設定内容

■ルータA

■ルータY

VRRPの設定

VRRPとは?
VRRPは Virtual Router Redundancy Protocol の略でルータの多重化を行うためのプロトコルです。
VRRPを使えば複数のルータを1つのグループにして、正常時は1台のルータが通信をしますがそのルータに障害が発生した場合、すぐにその他のルータへ自動で切り替え処理を引き継ぎます。

VRRPの設定はルータAでは5、6行目に記載されている下記になります。

ルータYでは5行目に記載されている下記になります。

上記の設定でルータAが正常時にインターネット通信を行うマスタールータ、ルータYが障害に備えるバックアップルータになります。
正常時はルータA経由でインターネット通信を行いますがルータAや回線またはISP A社に障害が発生した場合、自動でルータY経由でインターネット通信を行います。
その後、ルータAの通信経路が復旧した際は自動でインターネット通信を行う経路がルータYからルータAに切り替わります。

図で説明すると・・・
正常時はルータA経由でインターネット通信を行います。
■正常時
vrrp-ok

ルータAで障害や回線障害などが発生した場合、自動でルータY経由でインターネット通信ができるように切り替わります。
■障害発生時
vrrp-ng-1

ルータA、ルータYのVRRPのステータスを確認すると・・・
■ルータAのVRRPステータス
vrrp-a-master
■ルータYのVRRPステータス
vrrp-b-backup
ルータAの「自分の状態」をみると「Master」となっており、ルータA経由でインターネット通信を行っているのがわかります。
また、ルータYの「自分の状態」をみると「Backup」となっておりルータAの障害に備えています。

次にルータAに障害が発生しルータYに通信経路が切り替わるとルータYのステータスは下記に変わり、ルータY経由で通信を行っているのが確認できます。

■ルータY
vrrp-b-master

ルータA経由の通信が復旧すると正常時と同じ経路、ステータスに戻ります。

パソコン設定

ここで重要なのがクライアントパソコンの設定です。
RTX1200の設定だけでは冗長化ができたとは言えません。
障害発生時にクライアントパソコンが正常にインターネット通信を行うために、通信経路を正しく設定する必要があります。この設定ができていなければ冗長化した意味がなくなり障害発生時にはインターネット通信ができなくなってしまいます。
そこで通信経路の設定について紹介します。
まずはルータです。
VRRPを利用して2台のRTX1200を冗長化すると仮想IPアドレスと物理IPアドレスが設定されます。

仮想IPアドレスとは・・・
複数のネットワーク機器やサーバで共有されるIPアドレスのことです。
例えば1つのIPアドレスを複数のネットワーク機器で共有した時に1台の機器で障害が発生してもほかの機器がIPアドレスを引き継ぐことでサービスが継続できます。

■ネットワーク図
vrrp-virtual-ip
今回はルータAとルータYの仮想IPアドレスは「192.168.1.1」になります。
また、各ルータに設定変更などでアクセスするための物理IPアドレスはルータAが「192.168.1.11」、ルータYが「192.168.1.12」となります。

パソコンAの設定はデフォルトゲートウェイをルータA、ルータYの仮想IPアドレス「192.168.1.1」を指定します。間違ってルータAの物理IPアドレスである「192.168.1.11」を指定してしまうとルータAで障害が発生した時に仮想IPアドレスではないのでルータYにIPアドレスを引き継ぐことができずインターネット通信ができなくなってしまいます。
ルータYの物理アドレスである「192.168.1.12」を指定しても同様です。

また、パソコンAに割り当てるIPアドレスはルータから自動で割り当てられるIPアドレスではなく手動で設定する固定IPアドレスになります。
ルータから自動で割り当てられるIPアドレスだとルータに障害が発生した時にパソコンにIPアドレスが割り当てられない、もしくは割り当てられるまでに時間が掛かってしまいます。
今回は継続してインターネット通信ができるようにするので固定IPアドレスを利用しました。

まとめ

インターネット回線の冗長化にあたり下記の注意点が必要です。
 ・インターネット回線はできれば別々の回線を選択する。
  (1つはNTTのフレッツ光回線、
   もう1つはKDDIやSo-netなどが独自で提供している光回線)
 ・ISPは別々の事業者を選定する
どうしてかというと、障害が発生した時にインターネットの通信経路が切り替わっても、同じインターネット回線、同じISP事業者を利用してれば結局は障害が原因でインターネットが使えなくなってしまいます。

VRRPを利用した冗長化はとても便利な機能ではありますが、回線、ISPの選定をしっかりと行ってから構築しましょう。

カレンダー

      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
YAMAHAルータの実機・検証 第6回 同じプライベートアドレス同士の拠点間で通信する

2015/01/27 YAMAHA, 技術系 投稿者:長澤

第6回は同じプライベートアドレス同士の拠点間で通信する設定を行います。

拠点間でVPNを構築する場合、各拠点間のIPアドレス帯は別々のアドレス帯を利用します。
VPN構築を前提として各拠点のIPアドレス帯がちゃんと考えられていれば問題はありませんが、運用途中でVPNを導入するといった場合は各拠点間で同じIPアドレス帯を利用しているケースがあります。その場合、各拠点のIPアドレス帯を整理し再設定が必要となります。

しかしながら、既に運用されているネットワークを変更することは多大なリスクと時間を伴います。
今回は各拠点のIPアドレス帯が同じでもVPNを構築する設定を紹介します。

今回のネットワーク設定例の条件です。
・A支店、Y支店ともにRTX1200を使用
・A支店、Y支店とも同じローカルIPアドレス帯を利用している
・A支店とY支店のパソコン間でファイル共有を行う

ネットワーク構成

今回設定するネットワーク構成になります。
same-ip-3

 パソコンAとパソコンYは固定のローカルIPアドレスを設定します。

ルータ設定内容

■ルータA(A支店ルータ)

■ルータY(Y支店ルータ)

今回はTwice NAT機能を利用します。

Twice NATの設定

Twice NAT機能はパケットの始点アドレスと終点アドレスの両方が変換され、各拠点が同じIPアドレス帯を利用していても拠点間の通信ができます。

Twice NAT機能の設定はルータAでは27行目および50~55行目に記載されている下記になります。

さらに2行目に記載されているルーティングの設定も必要です。

ルータYでは2行目に記載されているルーティングの設定だけが必要です。

ルータA、ルータYそれぞれ上記の設定で
A支店からはY支店が 172.16.2.0/24 のIPアドレス帯で見えるようになり、
Y支店からはA支店が 172.16.1.0/24 のIPアドレス帯で見えるようになります。

図で説明すると・・・
まずはA支店からY支店を見た場合です。
same-ip-a
上の図からA支店からY支店を見ると172.16.1.0/24のアドレス帯でみれます。
これは、A支店のパソコンA(192.168.0.110)の端末からY支店のパソコンYの端末にアクセスする場合、A支店のパソコンから172.16.1.0/24のIPアドレス帯への通信はルータAによってY支店に届くときには192.168.0.0/24のIPアドレス帯に変換されるためA支店からは172.16.1.0/24でアクセスできます。
したがってパソコンAからパソコンYにアクセスする場合のIPアドレスは「172.16.1.120」になります。

次にY支店からA支店を見た場合です。
 same-ip-y-1
上の図からY支店からA支店を見ると172.16.2.0/24のアドレス帯でみれます。
これは、Y支店のパソコンY(192.168.0.120)の端末からA支店のパソコンAの端末にアクセスする場合、Y支店のパソコンから172.16.2.0/24のIPアドレス帯への通信はルータAによってA支店に届くときには192.168.0.0/24のIPアドレス帯に変換されるためY支店からは172.16.2.0/24でアクセスできます。
したがってパソコンYからパソコンAにアクセスする場合のIPアドレスは「172.16.2.110」になります。
これらの設定でA支店のパソコンとY支店のパソコンがアクセス可能になりファイル共有を行うことができます。

まとめ

VPN構築にあたり各支店が同じIPアドレス帯を利用していてもルータの設定だけで拠点間VPNを構築できる利点は非常に大きなものになります。支店全体のIPアドレス帯を変更するということはパソコンはもちろんネットワークに接続されているプリンタや固定ローカルIPアドレスが設定されている機器全般に影響がおよびます。
そして設定変更に時間が掛かるだけでなく、どこかにミスやトラブルが発生すると問題解決にさらに時間が掛かり通常の業務に大きな支障がでてしまいます。
どうしても支店のIPアドレス帯が変更ができない場合は、Twice NAT機能の利用も検討する価値は十分あります。

カレンダー

      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
YAMAHAルータの実機・検証 第5回 自社サーバを公開する

2015/01/22 YAMAHA, 技術系 投稿者:長澤

前回は
 ・VPNクライアントソフトウェアによるリモートアクセス!
 ・IPIPによる接続(NTTフレッツ網を利用したVPN)
 ・不正な通信の遮断設定
 ・部署毎に社内ネットワークを分離
を紹介しました。
今回も引き続きYAMAHAルータの実機検証を紹介します。
第5回目となる今回は自社サーバを公開する設定です。

独自ドメインを取得してホームページやメールアドレス使う場合、WEBサーバやMAILサーバはほとんどの企業がホスティング業者に依頼します。
しかしながら業務の都合上、自社サーバをインターネット上に公開しないと運用できないケースがあります。
今回はそのような場合を想定したルータの設定例を紹介します。

今回のネットワーク設定例の条件
・YAMAHA RTX1200を使用
・ISPから割り当てられるグローバルIPアドレスは1個
・3つあるポートをそれぞれ、WAN、LAN、DMZとして使う
・インターネットに公開するサーバはDMZに設置する
・HTTPとFTPのみサーバへアクセスさせる

DMZとは?
DMZはDeMilitarized Zoneの略で直訳すると非武装地帯と呼ばれます。
インターネットや社内ネットワークからも隔離された区域のことです。
外部に公開するサーバをここに設置することで外部からの不正なアクセスを防ぎ、万が一公開されたサーバが不正なアクセスで影響を受けても社内ネットワークには影響がおよぼさないようにします。

グローバルIPアドレスとは?
グローバルIPアドレスはインターネットに接続された機器が通信するために他の機器とアドレスが重複しないIPアドレスになります。

ネットワーク構成

今回検証するネットワーク構成になります。
server-open-5
公開するWEBサーバはLAN3のDMZに設置します。
プロバイダから割り当てられたグローバルIPアドレスは1個でLAN2に設定します。
WEBサーバから社内ネットワークのパソコンA、B、Cにはアクセスできません。

ルータの設定内容

■ルータ設定内容

※34、35行目はwww、ftpのアクセスのうち最初のパケット(SYN)だけを通します。そのあとに続く通信は48、49行目の動的フィルタで通信を通します。

■設定後の検証で社内PCおよびインターネット回線経由からWEBサーバに設置したサイトへのアクセスが確認できました。

SSHでアクセスするための設定

上記の設定でホームページの閲覧や更新はできますが、WEBサーバのメンテナンスを行うことができません。
WEBサーバのOSがLinuxなどの場合、sshでサーバにアクセスする必要があります。下記設定はsshでメンテナンスを行う場合の設定になります。

■ルータ追加設定

上記設定を追加することでsshでWEBサーバに接続することができるようにサーバのメンテナンスが可能になります。

WEBサーバ以外の設定

自社サーバでは提供するサービスはWEB以外にもDNSサービス、メールサービスなど様々なサービスを提供しています。
下記にはDNS、メールサービスを提供する場合の設定を記載します。

■ルータ追加設定

自社サーバかホスティングか

自社サーバを構築するメリットはサーバを自由に使うことができます。
サーバの選定からメールアドレスの管理まで自社で行うことができますが、サーバを管理する人員の確保・時間・労力がかかってしまうのがデメリットになります。
また、専門的な技術がないとセキュリティ面で様々な問題が起こったときに対応ができず多大な影響がでます。
ホスティング業者に依頼することで専門的な技術をもった担当者が管理・運用を行うので安心して本来の業務を行うことができます。
自社が提供するサービスを見極め安心して運用できる方法をしっかり検討することも大切です。

カレンダー

      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
【CSS】見出しの記号をCSSで表示

2015/01/20 サイト制作, 技術系 投稿者:竹内

CSSの小技第4回目は「見出しの記号をCSSで表示」です。
見出しに「●」や「▲」「◆」などを利用する場面も多いと思います。
例えばこのような記述↓

● 今月のオススメ商品

最近のHTML5やCSS3の方向性として「色、形、大きさなどの装飾はCSSで行う」と言う前提がありますので、HTMLソースはなるべくテキストのみで記述したいところです。
また、見出しはSEO対策として重要な面もありますので、余計なテキストを入れ込むことは極力避けたいと言うのが実情です。

記号を表示させる方法

css4-1

Webページ上で記号を表示させる場所として、見出しの「前」か「後」もしくは「両方」かと言う部分があります。
ここで使用するのが:before:afterの擬似セレクタです。
それから表示させる記号を指定するcontentのプロパティです。

HTML

CSS

アレンジ1

css4-2

見出しに限らずリストタグなどでも活用できます。また、色の変更をすることも出来ます。

HTML

CSS

アレンジ2

css4-3

リストタグで言うところのlist-style-typelist-style-imageと似たような働きをしますが、 リストタグとは違い、「リスト以外で使うことが出来る」「文末に記号を表示することができる」と言った利点があります。
また、リストタグと同様「画像を使用することも可能」です。

HTML

CSS

まとめ

以上、4回に渡って「CSSの小技」をお送りしましたが、
日常ホームページ作成を行っていて「ここどうしたら上手に出来るだろう」「もっとシンプルな方法無いかな」と言った、 私や同業者の方の「小さな悩み」を少しでも解決出来るような備忘録として活用できればと思います。
ホームページ作成の「小さな悩み」を解決する小技はまだまだ無数にあります。
また次の機会に少しずつ紹介できればと思います。

カレンダー

      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
【CSS】clearfixを使わないfloat解除「overflow: hidden」

2015/01/15 サイト制作, 技術系 投稿者:竹内

前回の記事でもちょっと触れましたがfloatによる横並びのレイアウトに苦労させられる場面が多々あります。
clearfixで解除するのも良いですが、別の方法もありますのでちょっとした(ほんのちょっと)小技の紹介です。

その前に「clearfix」てなんだろう?

floatで要素を横並びにした際、横並びに使用したタグが閉じられても浮いたままの状態が残ってしまい、次に配置する要素までずれ込んでしまいます。
そこで、clearfixを使用し、『浮いた状態が必要なくなったところで解除』してから次の要素を配置するために行うのが「clearfix」な訳です。
(私の個人的な解釈のため表現に誤りがあるかもしれません。)

旧clearfix

最近のclearfix

overflow: hiddenでレイアウトしてみよう

css3-1

clearfixではfloatで浮かせた要素の後にもう一つ浮かせていない要素を置いているような手法ですが、 overflow: hiddenは親要素に追記するだけです。
理由としてはoverflowプロパティではfloatで浮いている子要素の高さを認識してくれるからだそうです。

設定方法(たったこれだけ)

親要素にoverflow: hiddenを追記します。
子要素は通常通りfloat: leftで配置します。
※ IE6と7ではoverflowプロパティで不具合がでたりするようです。これはzoom: 1を追加することで解決できます。

HTML

CSS

カレンダー

      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

ブログ
Nedia What's up!
 HOME  ブログ
【CSS】display:tableを使ったナビゲーション

2015/01/13 サイト制作, 技術系 投稿者:竹内

『CSSの小技』第2回の今回はdisplay:tableを使ったナビゲーションの構築です。
今までは古いIEに対応させるべく、「float」で浮かべて、「clearfix」で落とす。とか
display: inline-blockを利用して横並びのナビゲーションを作っていました。
XPのサポート終了により古いIEに対応させる必要が薄くなってきましたので、横並びさせるのに便利な手法としてIE8以降で使用可能なdisplay:tableを今後使っていきたいと思います。
そして、今までIEに苦しめられていた分の工数を、新しい表現にあてることが出来ればより良いWebサイト制作が出来るのではないかなぁと個人的には思います。

display:tableとは

tableと聞いてtableレイアウトを思い浮かべたり、その昔tableだらけでWebサイト制作をしていた頃を思い出したりする人もいるでしょう。それで大体合ってます!
display: tableとは、指定した要素をtableタグとして扱い、その子要素にdisplay:table-cellを指定することによってtdタグと同様の表示をさせる事ができるようになります。

display: tableのメリット

1.vertical-align:middleで縦中央揃えが出来る

ナビゲーションの縦幅に対して文字を中央に配置したい場合、line-hightを用いたり、単純にmargin-topやpadding-topを利用したりしていましたが、
項目名が1行のもの、2行のものが混在すると一気にレイアウトしにくくなっていました。
display:tableであればvertical-align:middleによってこの問題が一気に解決します。

2.ナビゲーションボタンの大きさを均等にする

display:tableでは親要素にtable-layout:fixedとwidthを指定してあげる事により均等幅のナビゲーションボタンを設置することが可能です。
レスポンシブデザイン用途では均等幅の状態でウィンドウ幅に合わせた伸縮を行えます。

3.ナビゲーションボタンの段落ちがない

「firefoxでは大丈夫なのに、IEで段落ちしてしまう」といったことを経験したことは無いでしょうか?tableレイアウトでは一番高い要素に合わせて高さが統一され、横幅もはみ出ないように調整されます。ですのでdisplay:tableでは段落ちしてしまうことはありません。こちらもレスポンシブデザインでは有効でしょう。

使用方法

css2-1

使い方はとても簡単です。親要素(ul等)にdisplay:tableを指定し、子要素(li等)にdisplay:table-cellを指定してあげるだけです。

HTML

CSS

アレンジ1 等幅ボタン

css2-2

上記ナビゲーションでは文字数によってボタンの横幅が違います。table-layout:fixedを使ってボタンの横幅を同じにします。

HTML

CSS

アレンジ2 等幅ボタン+レスポンシブデザイン

css2-3

さらに横幅を「%」で指定することによりウィンドウ幅によって自動的に伸縮するレスポンシブデザイン用のナビゲーションに早変わりです。

HTML

CSS

カレンダー

      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122