Google
SSブログ

レスポンシブWebデザイン導入計画(Parllet の場合 その7(スライドメニュー Animated Border Menus 篇-4)) [公開アプリ]

前回の続きです。

01_entry_img.png

レスポンシブWebデザイン導入計画シリーズでは同じ挿絵を使います。(決して手抜きではありません。)

これまでのあらすじ

ドットインストールのレスポンシブなウェブサイトを作ろう に沿ってParllet(個人で作成・公開しているアルファ版のWeb家計簿)のトップページを改修し、相談役の妻の一言でFacebookやGoogle+のようなスライドメニューの実装をと思い立つ。

jQuery Mobile からスライドメニューの要素だけ取り込もうと目論むも、あえなく失敗。

PageSlide を試すが "overlay" の動きの方が良いと感じ、Animated Border MenusParllet(パレット) に組み込みはじめる。

単純に組み込んだ状態から Parllet(パレット) にそぐうように修正し、今のメニュー数での動きとしては問題ないところまで来た。

残るは "Android 2.3 スクロール" 問題だが・・・。

 

ざっくり環境です。

OS:Windows 7 Home Premium

ブラウザ:IE 11.0

 

早速メニューをワザと増やします。

<nav id="bt-menu" class="bt-menu">
    <a href="#" class="bt-menu-trigger"><span></span></a>
    <ul>
        <li><a href="#divWhatIsParllet">Parllet とは</a></li>
        <li><a href="#divTheOriginOfParllet">Parllet の由来</a></li>
        <li><a href="#divBenefitsOfParllet">Parllet のメリット</a></li>
    </ul>
    <div class="bt-overlay"></div>
</nav>

 ↓

<nav id="bt-menu" class="bt-menu">
    <a href="#" class="bt-menu-trigger"><span></span></a>
    <ul>
        <li><a href="#divWhatIsParllet">Parllet とは</a></li>
        <li><a href="#divTheOriginOfParllet">Parllet の由来</a></li>
        <li><a href="#divBenefitsOfParllet">Parllet のメリット</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他1</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他2</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他3</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他4</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他5</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他6</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他7</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他8</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他9</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他10</a></li>
    </ul>
    <div class="bt-overlay"></div>
</nav>

 

まずは PC で表示。

02_integration_of_border_menus_edit16.png

 

この時点では PC でもスクロールしません。(よ、予想はしてたよ。)

メニューリストを div で囲んで overflow: hidden; とし、メニューが開いたときだけ overflow-y: auto;

html ファイルの編集

<nav id="bt-menu" class="bt-menu">
    <a href="#" class="bt-menu-trigger"><span></span></a>
    <ul>
        <li><a href="#divWhatIsParllet">Parllet とは</a></li>
        <li><a href="#divTheOriginOfParllet">Parllet の由来</a></li>
        <li><a href="#divBenefitsOfParllet">Parllet のメリット</a></li>
        <li><a href="#divBenefitsOfParllet">メニューその他1</a></li>
                               :
                             中略
                               :
        <li><a href="#divBenefitsOfParllet">メニューその他10</a></li>
    </ul>
    <div class="bt-overlay"></div>
</nav>

 ↓

<nav id="bt-menu" class="bt-menu">
    <a href="#" class="bt-menu-trigger"><span></span></a>
    <div id="divUlFrm">
        <ul>
            <li><a href="#divWhatIsParllet">Parllet とは</a></li>
            <li><a href="#divTheOriginOfParllet">Parllet の由来</a></li>
            <li><a href="#divBenefitsOfParllet">Parllet のメリット</a></li>
            <li><a href="#divBenefitsOfParllet">メニューその他1</a></li>
                                   :
                                 中略
                                   :
            <li><a href="#divBenefitsOfParllet">メニューその他10</a></li>
        </ul>
    </div>
    <div class="bt-overlay"></div>
</nav>

stylePrlt.css の編集

.bt-menu ul {
    position: fixed;
    margin: 0;
    padding: 0;
    list-style: none;
}
.bt-menu ul:first-of-type {
    top: 75px;
    left: 0;
}

 ↓

.bt-menu #divUlFrm {
    position: fixed;
    margin: 0;
    padding: 0;
    list-style: none;
    top: 75px;
    left: 0;
    overflow: hidden;
}
.bt-menu.bt-menu-open #divUlFrm {
   height: 100%;
    overflow-y: auto;
}

03_integration_of_border_menus_edit17.png

 

メニューリストのスクロールバーの下が、.bt-menu #divUlFrm の top: 75px で指定した分だけウィンドウ外にはみ出て見えなくなる。

そうなってくると、 .bt-menu #divUlFrm を top: 0 とするのが手っ取り早くて分かりやすい。

その場合、メニューボタン(メニューが開いた時に "≡" から "×" に変形していた)がむしろ邪魔になってしまう。

むぅ・・・。 "≡" から "×" への変形は好きだったのだが、今回は見送ろう。

stylePrlt.css の編集

.bt-menu #divUlFrm {
    top: 75px;
}
 ↓
.bt-menu #divUlFrm {
    top: 0;

.bt-menu-open .bt-menu-trigger span {
    background-color: transparent;
}
.bt-menu-open .bt-menu-trigger span:before {
    -webkit-transform: translateY(0) rotate(45deg);
    transform: translateY(0) rotate(45deg);
}
.bt-menu-open .bt-menu-trigger span:after {
    -webkit-transform: translateY(0) rotate(-45deg);
    transform: translateY(0) rotate(-45deg);
}

 ↓

.bt-menu-open .bt-menu-trigger {
    display: none;
}

04_integration_of_border_menus_edit18.png

 

今までの慣れのせいもあるかも知れないが、メニューの天辺に余裕が欲しい。

<li>一個分空くだけで落ち着く気がするので、単純に先頭に足してみる。

html ファイルの編集

<nav id="bt-menu" class="bt-menu">
    <a href="#" class="bt-menu-trigger"><span></span></a>
    <div id="divUlFrm">
        <ul>
            <li><a href="#divWhatIsParllet">Parllet とは</a></li>
                                   :
                                 中略
                                   :
            <li><a href="#divBenefitsOfParllet">メニューその他10</a></li>
        </ul>
    </div>
    <div class="bt-overlay"></div>
</nav>

 ↓

<nav id="bt-menu" class="bt-menu">
    <a href="#" class="bt-menu-trigger"><span></span></a>
    <div id="divUlFrm">
        <ul>
            <li></li>
            <li><a href="#divWhatIsParllet">Parllet とは</a></li>
                                   :
                                 中略
                                   :
            <li><a href="#divBenefitsOfParllet">メニューその他10</a></li>
        </ul>
    </div>
    <div class="bt-overlay"></div>
</nav>

05_integration_of_border_menus_edit19_1.png

 

一応 PC での動きは出来たようです。

今回 Android 2.3.3 のスクロール問題と対峙するつもりが、PC での調整や路線変更だけで結構かかってしまいました。

 

次回に続きます!

 

12/2 追記

続きを書きました。

 


nice!(0)  コメント(0)  トラックバック(3) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 3

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。