レイアウトサイズを変更するために左右にドラッグする純粋な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 のプロトタイプとプロトタイプチェーンの詳細な説明

推薦する

MySQL DATEDIFF 関数を使用して 2 つの日付間の時間間隔を取得する方法

説明する2 つの日付間の時間間隔を返します。文法DateDiff(間隔、日付1、日付2 [、週の最初...

ネイティブjsはショッピングカートのロジックと機能を実装します

この記事の例では、ショッピングカートのロジックと機能を実装するためのjsの具体的なコードを共有してい...

https ウェブサイトを展開し、Nginx でアドレス書き換えを構成するための詳細な手順

Nginx は、高性能な Web サイト サーバーおよびリバース プロキシ サーバーであり、IMAP...

MySQL カーソルの原理と使用例の分析

この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...

Linux システムの仮想ホストで Swoole Loader 拡張機能を有効にする方法

特記事項: Swoole 拡張機能のみがインストールされ、サーバーはホストにインストールされません。...

docker で mysql に接続できない場合の解決策

シナリオ: 仮想マシンの Docker コンテナに最新バージョンの MySQL をインストールした後...

MySQLの重複排除方法

MySQLの重複排除方法【初級】繰り返しのセリフが少ないdistinctive を使用してそれらを見...

mysql インストーラ コミュニティ 8.0.16.0 のインストールと構成のグラフィック チュートリアル

mysqlインストーラコミュニティ8.0.16.0インストールグラフィックチュートリアル、参考までに...

複数ページ通信を実現する JavaScript の sharedWorker の詳細な例

こんなことがありました。今日はGitHubで遊んでいました。最初はログインせずにいくつかのページを閲...

Mysql テーブルで利用可能な最小 ID 値を照会する方法

今日、研究室のプロジェクトを見ていたとき、私にとって「難しい」問題に遭遇しました。実は、それは私があ...

Linux ネットワークプログラミングにおけるソケットオプションの実装

ソケットオプション機能機能: ソケットファイル記述子の属性の読み取りと設定に使用されるメソッド #i...

CSS3 ベジェ曲線の例: リンクホバーアニメーション効果の作成

CSS3 アニメーション トランジションを使用して、リンクの上にマウスを移動すると小さなポップアップ...

CSS 水平方向の中央揃えと最大幅の制限

CSS レイアウトとスタイルに関する質問: 水平方向の中央揃えと最大幅の制限のバランスをとる方法最近...

HTML の title 属性を正しく使用するためのヒント

コンテンツを携帯電話、タブレット、支援技術のユーザーから非表示にし、キーボードのユーザーにのみ表示す...