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

推薦する

Vueのレスポンシブシステムの原理の詳細な説明

目次Vueのレスポンシブシステムの基本原則1. Object.definePropertyの使い方を...

JSONオブジェクトのキーを置き換える最良の方法

JSON (JavaScript Object Notation、JS Object Notatio...

Linux で同じバージョンの R を使用して Seurat2 と Seurat3 を同時にインストールするチュートリアル

Seurat は、単一細胞解析用の重量級の R パッケージです。使用したことがある人なら誰でも、その...

CSS で平均レイアウトを実現するために負のマージンを使用する例

均等に分散されたレイアウトの場合、通常はネガティブ マージン方式を使用します。次の図は平均的なレイア...

MySQLの構文、特殊記号、正規表現の詳細な説明

Mysql でよく使用される表示コマンド1. 現在のデータベース サーバー内のデータベースの一覧を表...

Dockerコンテナが停止できない問題の解決方法

解決策は次のとおりです。 1. コンテナを強制削除する docker rm -f ジェンキンス2. ...

Node.js で MySQL データベースにバッチデータを挿入する方法

プロジェクト(nodejs)では、一度に複数のデータをデータベースに挿入する必要があります。データベ...

MySQL 最適化: キャッシュ最適化 (続き)

MySQL 内部には至るところにキャッシュがあります。MySQL のソースコードを読むと、キャッシ...

Tomcat で JNDI データ ソースを構成する 3 つの方法

これまでの仕事では、開発サーバーは一般的にTomcatでした。データソースは、多くの場合、appli...

Tomcatアーキテクチャの原則をアーキテクチャ設計に分析する

目次1. 学習目標1.1. Tomcatアーキテクチャの設計と原則をマスターして社内スキルを向上させ...

Vue3スタイルのCSS変数注入の実装

目次まとめ基本的な例モチベーションデザインの詳細コンパイルの詳細採用戦略練習するヒント適切なプロパテ...

mysqldump でデータベースをバックアップするときに特定のライブラリを除外する例

例: mysqldump –all-databases を使用すると、すべてのライブラリがエクスポー...

JavaScript オブジェクトを作成する 3 つの方法

目次1. オブジェクトリテラル2. newキーワードはオブジェクトを作成する3. Object.cr...

Tomcat の maxPostSize 設定に関する問題と注意事項

1. maxPostSize を設定する理由は何ですか? tomcat コンテナには送信データのサイ...

HTML H タイトルタグの使用

H タグ、特に h1 タグの使用は常に議論の的となっている問題であり、私たちが研究する価値のある問題...