border-radius 値の設定に関する質問

border-radius 値の設定に関する質問

問題記録

今日はプログレスバーに似た小さなコンポーネントを完成させるつもりでした。プロトタイプは次のようになります(ここでは長さ 200 ピクセル、高さ 28 ピクセルです)

見てみると、とてもシンプルです。数字の1のスタイルはさておき、全体的な親スタイルは、左に半円、右に円弧があるdivです。
これは CSS border-radius を使用して実行できます。 左側は角が丸く、半径は 50 ピクセルです。右側は角が小さく丸くなっています。以前は、div の半径はすべて 8 ピクセルでした。 border-radius の角の順序(時計回りに左上、右上、右下、左下)に従って、 border-radius: 50px 8px 8px 50px; と設定すれば問題ありません。 私はとても喜んでそのスタイルを書き、ブラウザを開きます。

私はバカだ、それは間違っている、私はこうだと思った

実際、ブラウザは次のようになります

何かおかしい。右側の角度は設定されているのに、設定されていないように見えるのはなぜでしょうか。8px を 10px に変更して再度試してみましたが、設定されていないのとほとんど変わりません。

8px にすると、顕著な曲率が得られるはずです。すべてを 8px に設定して確認してみましょう。

はい、これは 8px が持つべき曲率です。左を 50px に変更するとなぜ変わるのでしょうか? 50px と関係があるのでしょうか?疑問に思いながら、私はBaiduを見てみました。

Baiduによると、border-radius(w3c)の完全な書き方は次の通りです。

境界線の半径: 1-4 長さ|% / 1-4 長さ|%;

通常は border-radius: 50px と書きますが、実際の完全な書き方は次のようになります。

境界線の半径: 50px 50px 50px 50px / 50px 50px 50px 50px 50px;

「/」の前の 4 つの値はフィレットの水平方向の半径を表し、次の 4 つの値はフィレットの垂直方向の半径を表します。

各順序は、(水平半径:左上、右上、右下、左下)/(垂直半径:左上、右上、右下、左下)に対応します。

水平半径と垂直半径とは何ですか?

水平半径と垂直半径の比率に応じて、角度の曲率を調整できます。2 つの半径が同じ場合は、丸い角になります。 これが、私が通常角を丸く設定する理由です。なぜなら、私は完全な

例えば、border-radius:10px 20px 30px 40px/40px 30px 20px 10px

こんな感じです

前回の質問を振り返ってみましょう。

高さ 28px は無視しました。つまり、右側を半円にしたい場合は、水平方向と垂直方向の半径が両方とも 14px であれば問題ないのではないでしょうか。

境界線の半径: 14px 8px 8px 14px / 14px 8px 8px 14px; 

このように、親スタイルは正しいです。

右側に設定した8pxの丸い角は効果がないようです。左側は元々28pxの高さで、そこに50pxの半径が挿入されているため、50pxに比べて比例的に圧縮されているのかもしれません。計算すると(14 * 8 / 50 = 2.24)となり、これは設定に相当します。

境界線の半径: 14px 2.24px 2.24px 14px / 14px 2.24px 2.24px 14px;

今後スタイルを書くときは注意してください。小さな問題が大きな問題になる可能性があります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  JavaScript の構造化代入の一般的なシナリオと例 5 つ

>>:  VMWare仮想マシンにCentOS7システムをインストールする詳細な手順

推薦する

CentOS6.5 でファイル共有サービス Samba を構築するチュートリアル

Samba サービス:このコンテンツはサンバサービス学習者の参考用ですケースの説明:企業の管理者は、...

Quickjs は JavaScript サンドボックスの詳細をカプセル化します

目次1. シナリオ2. 基盤となるAPIを簡素化する2.1 自動的に破棄を呼び出す2.2 VM値を作...

MySQLデータベースを誤って削除した後にデータを回復するための手順

日々の運用・保守作業において、MySQL データベースのバックアップは重要です。ウェブサイトにとって...

Vue3 プロジェクトで WeChat 認証ログインをエレガントに実装する方法

目次序文準備する実装のアイデアコードについて要約する序文WeChat 認証ログインは、WeChat ...

WeChatアプレットがフォーム検証を実装

WeChatアプレットフォームの検証、参考までに具体的な内容は次のとおりです。プラグインWxVali...

Vue3+el-tableは行と列の変換を実現します

目次行と列の変換トランスクリプトの構成を分析するvue3 + el-table で作成されたトランス...

MySQLリモートアクセスの設定方法をステップバイステップで説明します

序文MySQL データベースを使用する場合、クライアントはデータベース サーバーにリクエストを送信す...

CSS フレキシブルレイアウト FLEX、メディアクエリ、モバイルクリックイベントの実装

フレックスレイアウト定義: Flexレイアウトの要素は、 Flex 、または略して「コンテナー」と呼...

Webフォーム作成スキル

実際、上記の 3 つの表はいずれも 3 行 3 列です。区切り線を非表示にするコツはルールにあります...

MySQLの分離レベルとロックメカニズムの詳細な説明

目次簡単な説明: 1. 取引の4つの特徴2. 複数の同時トランザクションによって発生する問題3. ト...

HTML テーブルの空白セル補完を実装する方法

私が初めて Web 開発を独学で学んだ頃は、いわゆる DIV/CSS レイアウトはなく、テーブル レ...

1 分で Nginx のバージョンをスムーズにアップグレードおよびロールバックする方法

今日は、企業の実際の本番環境でよく遭遇する、Nginx を新しいバージョンにアップグレードし、古いバ...

MySQL curdate() 関数の詳細な例

MySQL CURDATE関数の紹介文字列コンテキストまたは数値コンテキストの YYYMMDD 形式...

JavaScript ループトラバーサルの 24 種類のメソッドをすべてご存知ですか?

目次序文1. 配列走査法1. 各() 2. マップ() 3. 〜のために4. フィルター() 5. ...

VS2019をMySQLデータベースに接続するプロセスと一般的な問題の概要

今日の午後からVS2019をMySQLで使えるのではないかと思い、いろいろ環境構築を始めました。プロ...