レイアウトサイズを変更するために左右にドラッグする純粋なCSS

レイアウトサイズを変更するために左右にドラッグする純粋なCSS

ブラウザの非overflow:auto要素resize伸縮機能を利用して、JavaScript を使用しない列幅制御を実現します。

Webkit ブラウザのスクロールバーはカスタマイズ可能で、サイズ変更領域のサイズはスクロールバーのサイズになります。そのため、ストレッチ領域全体をコンテナと同じ高さにすることができます。

実施原則

CSS にはresize属性があります。要素のoverflow属性値がvisibleでない場合は、 resize属性を設定することで要素のサイズを拡大することができます。

ただし、この伸縮には問題があります。つまり、ドラッグ領域が小さすぎて、右下隅に少しだけあるということです。

このドラッグエリアを大きくする方法はありますか?

その後、調査した結果、サイズ変更属性のドラッグ バーとスクロール バーのドラッグ バーは同じシステム内のものであることがわかりました。サイズ変更バーのサイズを間接的に設定するには、スクロール バーをカスタマイズするだけで済みます。

例えば:

.resize-bar::-webkit-scrollbar {
 幅: 200px; 高さ: 200px;
}


この時点で、ストレッチ領域は非常に大きくなります。

次に行うことは、このドラッグ領域を列レイアウトの背後に隠し、次に示すように、ドラッグ用に幅の一部を公開することです。

最後に、左列と右列に適応レイアウトを使用することで、目的の効果を実現できます。

こちらをクリックしてください: 列幅の伸縮を実現する純粋な CSS のデモ

コードは次のとおりです。

。カラム {
    オーバーフロー: 非表示;
}
.列左 {
    高さ: 400px;
    背景色: #fff;
    位置: 相対的;
    フロート: 左;
}
.列右 {
    高さ: 400px;
    パディング: 16px;
    背景色: #eee;
    ボックスのサイズ: 境界線ボックス;
    オーバーフロー: 非表示;
}
.サイズ変更保存{
    位置: 絶対;
    上: 0; 右: 5px; 下: 0; 左: 0;
    パディング: 16px;
    オーバーフロー-x:非表示;
}
.サイズ変更バー{
    幅: 200px; 高さ: 継承;
    サイズ変更: 水平;
    カーソル:ew-resize; 
    不透明度: 0;
    オーバーフロー: スクロール;
}
/* 線をドラッグ */
.resize-line {
    位置: 絶対;
    右: 0; 上: 0; 下: 0;
    右境界線: 2px 実線 #eee;
    左境界線: 1px 実線 #bbb;
    ポインタイベント: なし;
}
.resize-bar:hover ~ .resize-line,
.resize-bar:active ~ .resize-line {
    border-left: 1px 破線の空色;
}
.resize-bar::-webkit-scrollbar {
    幅: 200px; 高さ: 継承;
}

/*Firefox では下の小さな領域のみを拡大できます*/
@supports (-moz-user-select: none) {
    .resize-bar:hover ~ .resize-line,
    .resize-bar:active ~ .resize-line {
        左境界線: 1px 実線 #bbb;
    }
    .resize-bar:hover ~ .resize-line::after,
    .resize-bar:active ~ .resize-line::after {
        コンテンツ: '';
        位置: 絶対;
        幅: 16px; 高さ: 16px;
        下: 0; 右: -8px;
        背景: url(./resize.svg);
        背景サイズ: 100% 100%;
    }
}
<div class="column">
    <div class="column-left">
        <div class="resize-bar"></div>
        <div class="resize-line"></div>
        <div class="resize-save">
            左側のコンテンツ、左側のコンテンツ、左側のコンテンツ、左側のコンテンツ</div>                                            
    </div>
    <div class="column-right">
        右側のコンテンツ、右側のコンテンツ、右側のコンテンツ、右側のコンテンツ</div>
</div>

ブラウザの非overflow:auto要素resize伸縮機能を利用して、JavaScript を使用しない列幅制御を実現します。

Webkit ブラウザのスクロールバーはカスタマイズ可能で、サイズ変更領域のサイズはスクロールバーのサイズになります。そのため、ストレッチ領域全体をコンテナと同じ高さにすることができます。

純粋な CSS で左右にドラッグしてレイアウトサイズを変更する方法についての記事はこれで終わりです。CSS で左右にドラッグしてレイアウトサイズを変更する方法についての詳細は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySQL 権限とデータベース設計のケーススタディ

>>:  JavaScript のプロトタイプとプロトタイプチェーンの詳細な説明

推薦する

4 つの主要な SQL ランキング関数 ROW_NUMBER、RANK、DENSE_RANK、NTILE の使用方法の紹介

1. ROW_NUMBER()定義: ROW_NUMBER() 関数は、select によってクエリ...

Linux で複数のファイルの名前を一括で変更する方法

Linux では、通常、ファイルの名前を変更するために mv コマンドを使用します。これは、単一のフ...

td セルを結合した場合の td 幅の問題

以下の例では、名前が入っている td の幅が 60px のとき、2 行目の文字数が少ない場合は正常に...

MySQLクエリ文の実行プロセスを理解するための記事

序文要件を満たす特定のデータをデータベースから取得する必要があります。Select ABC FROM...

Zabbix を使用して ogg プロセスを監視する (Windows プラットフォーム)

この記事では、Windows プラットフォームで ogg プログラムを監視する方法を紹介します。 (...

HTML で特定のテキストを非表示にするにはどうすればよいでしょうか?

テキスト非表示コード、HTML 内の特定のテキストを非表示にするコードをコピーコードは次のとおりです...

MySQLのルートパスワードをリセットする最も簡単な方法

私の MySQL バージョンは MYSQL V5.7.9 です。古いバージョンを使用してください: ...

CSSをインポートする方法に関する詳細な洞察の要約

CSS の開発履歴についてはここでは紹介しません。ブログを書いている理由の 1 つは、フロントエンド...

MySQL マスタースレーブレプリケーションの遅延の原因と解決策

目次レプリケーション ロジックの簡単な概要:遅延の原因と解決策〇メインデータベースへの頻繁なDMLリ...

HTML タグ tbody の使い方と説明

tbody 要素は、thead 要素および tfoot 要素と組み合わせて使用​​する必要があります...

LAMP ソースコードを使用したエンタープライズレベルのインストールチュートリアル

目次LAMPアーキテクチャ1.ランプの紹介2. WebサービスワークフローWebサーバーのリソースは...

設定ファイルを書いてMyBatisを簡単に使う方法

設定ファイルを書いてMyBatisを簡単に使う方法マイバティス3.xここでは MyBatis につい...

Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

LinuxにGeoIPをインストールする yum で nginx-module-geoip をインス...

CentOS7 64ビットインストールmysqlグラフィックチュートリアル

MySQL をインストールするための前提条件: CentOS 7 64 ビットをインストールし、Ce...

インタラクティブデザインでページングと読み込みのどちらを選択するかについての説明

この記事の著者@子木yoyoが個人ブログに投稿したものです。 Web ページでもモバイル アプリでも...