投稿日: | 最終更新日:
PushとPullでカラムの表示順を変える
レスポンシブWebデザインでは、ブロックの左右の位置を入れ替えて表示するPushとPullと呼ばれる手法があります。
レスポンシブデザインの上下位置の問題点
小さい画面のとき、1画面ではページが入りきらない場合があります。レスポンシブWebデザインでは、フロートさせていたブロックを全て下に落とみ、全てのカラムを1行にします。カラムを落とし込むと、左のカラムが上で右のカラムが下になります。
例)デスクトップで開いたとき、テキストを左、写真を右に入れます。
これをスマートフォンで開くと、テキストが上で画像が下になります。
理想は、画像が上で文字が下です。
解決策
画面を小さくしたとき、右側のカラムを上に配置する必要があります。そこで、左のカラムと右のカラムを予め左右逆に入れ替えます。PushとPullの仕組みを利用します。
PushとPullとは?
Pushは、「押す」を意味します。ブロックを左から右に押すイメージです。
Pullは、「引く」を意味します。ブロックを右から左に引くイメージです。
カラムコントロールの例
「five cols」と、「seven cols」という一行に並ぶ2つのカラムがあったとします。
「seven cols」をpullします。
「five cols」をpushします。
「five cols」と「seven cols」が左右逆になります。
コード
cssのbody、p、rowクラス、colsクラス、fiveクラス、sevenクラスは、前回紹介したグリッドのコードを利用します。
完成イメージ
デスクトップ画面
(PUSHとPULLを使わない場合)
5カラムが左で、7カラムが右です。
(PUSHとPULLを使った場合)
5カラムが右に配置され、7カラムが左に配置されます。
画面サイズが767px以下
(PUSHとPULLを使わない場合)
全て縦一列になります。5カラムが上で7カラムが下です。
(PUSHとPULLを使った場合)
全て縦一列になります。(PUSHとPULLを使わない場合)と同じく5カラムが上で7カラムが下です。
index.html
<html lang="ja"> <head> <link href="style.css' ; ?>" rel="stylesheet" type="text/css" /> </head> <body> <h1>5カラム - 7カラムの表示順の入れ替え</h1> <h2>PUSHとPULLを使わない場合</h2> <div class="row"> <div class="five cols"><p>5カラム - コード順 1</p></div> <div class="seven cols"><p>7カラム - コード順 2</p></div> </div> <h2>PUSHとPULLを使った場合</h2> <div class="row"> <div class="five cols push-seven"><p>5カラム - コード順 1</p></div> <div class="seven cols pull-five"><p>7カラム - コード順 2</p></div> </div> </body> </html>
style.css
body { background: #000; } p { padding: 0 0 30px; background: #B6E1FF; } .row { width: 1140px; max-width: 100%; min-width: 768px; margin: 0 auto; background: #ddd; } .row .row { width: auto; max-width: none; min-width: 0; margin: 0 -1.2%; } .cols { float: left; min-height: 1px; padding: 0 1.2%; position: relative; background: #fff; } [class*="clos"] + [class*="clos"]:last-child { float: right; } [class*="clos"] + [class*="clos"].end { float: left; } .row .five { width: 41.66%; } .row .seven { width: 58.33%; } /* PUSHとPULL */ .pull-five { right: 41.66%; } .push-seven { left: 58.33%; } @media screen and (max-width: 767px) { .row { width: auto; min-width: 0; margin-left: 0; margin-right: 0; } .cols { float: none; width: auto !important; height: 50px; } [class*="clos"] + [class*="clos"]:last-child { float: none; } [class*="clos"] + [class*="clos"].end { float: none; } /*PUSH & PULLの調整*/ .push-two, .push-three, .push-four, .push-five, .push-six, .push-seven, .push-eight, .push-nine, .push-ten { left: auto; } .pull-two, .pull-three, .pull-four, .pull-five, .pull-six, .pull-seven, .pull-eight, .pull-nine, .pull-ten { right: auto; } }
解説
index.html
PUSHとPULLを使わない場合
<div class="row"> <div class="five cols"><p>5カラム - コード順 1</p></div> <div class="seven cols"><p>7カラム - コード順 2</p></div> </div>
PushとPullを使用しなかった場合のfiveクラスとsevenクラスです。
PUSHとPULLを使った場合
<div class="row"> <div class="five cols push-seven"><p>5カラム - コード順 1</p></div> <div class="seven cols pull-five"><p>7カラム - コード順 2</p></div> </div>
PushとPullを使用した場合のfiveクラスとsevenクラスです。
- fiveをsevenの幅の分だけpushするため、push-sevenクラスを指定します。
- sevenをfiveの幅の分だけpullするため、pull-fiveクラスを指定します。
style.css
.row
.row { width: 1140px; max-width: 100%; min-width: 768px; margin: 0 auto; background: #ddd; }
前回紹介した「グリッド・システムの基本コード」のコードを利用します。
.row .row
.row .row { width: auto; max-width: none; min-width: 0; margin: 0 -1.2%; }
前回紹介した「グリッド・システムの基本コード」のコードを利用します。
.cols
.cols { float: left; min-height: 1px; padding: 0 1.2%; position: relative; background: #fff; }
前回紹介した「グリッド・システムの基本コード」のコードを利用します。
- 「position: relative」で、相対位置への配置を指定します。
- 相対位置を指定するのは、pull-fiveやpush-sevenでleft、rightを指定するためです。
カラム幅指定
.row .five { width: 41.66%; } .row .seven { width: 58.33%; }
前回紹介した「グリッド・システムの基本コード」のコードを利用します。
PUSHとPUL
/* PUSHとPULL */ .pull-five { right: 41.66%; } .push-seven { left: 58.33%; }
pushとpullを指定します。pull-fiveクラスで、ポジションを右から5カラムと同じ幅(41.66%)の位置に指定します。
push-sevenクラスで、ポジションを左から7カラムと同じ幅(58.33%)の位置に指定します。
メディアクエリ
@media screen and (max-width: 767px) { .row { width: auto; min-width: 0; margin-left: 0; margin-right: 0; } .cols { float: none; width: auto !important; height: 50px; } [class*="clos"] + [class*="clos"]:last-child { float: none; } [class*="clos"] + [class*="clos"].end { float: none; } /*PUSH & PULLの調整*/ .push-two, .push-three, .push-four, .push-five, .push-six, .push-seven, .push-eight, .push-nine, .push-ten { left: auto; } .pull-two, .pull-three, .pull-four, .pull-five, .pull-six, .pull-seven, .pull-eight, .pull-nine, .pull-ten { right: auto; } }
767px以下では全て1カラムにします。
@media screen and (max-width: 767px)
前回紹介した「グリッド・システムの基本コード」のコードを利用します。
.row
前回紹介した「グリッド・システムの基本コード」のコードを利用します。
.cols
前回紹介した「グリッド・システムの基本コード」のコードを利用します。
.push-two, .push-three,…
モバイル表示のスタイルリセットを行って完了です。pushのleftとpullのrightをautoに変更します。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1