ホームページ >ウェブフロントエンド >htmlチュートリアル >CSS と SVG_html/css_WEB-ITnose で円グラフを作成する
出典: lulux のブログ Bole Headlines への原文の共有へようこそ
CSS テクノロジーに関して言えば、Lea Verou ほど粘り強い人はいませんが、問題に対するさまざまな解決策を見つけるために熱心に取り組むのに十分賢い人はいません。最近、Lea は「CSS Secrets」という本を執筆、デザイン、出版しました。この本は非常に興味深いもので、一般的な問題を解決するための CSS のヒントとテクニックがいくつか含まれています。自分の CSS スキルがかなり優れていると思うなら、この本を読めば驚くでしょう。この投稿では、この本の一部の抜粋を掲載します。これらは、SmashingConf New York での Lea の最近の講演「CSS を使用したシンプルな円グラフの設計」でも紹介されました。ブラウザのサポートが限られているため、一部のデモは正しく実行されない場合があることに注意してください。 ??編集
円グラフ、2 色だけの最も単純なフォームであっても、Web テクノロジを使用して作成するのは簡単ではありません。ただし、それらはすべて、単純な統計から進行状況バー インジケーターまで、いくつかの共通の情報コンテンツを持っています。これは通常、外部画像エディタを使用して複数の値に対して複数の画像を作成するか、大規模な JavaScript フレームワークを使用してより複雑なグラフを設計することによって実現されます。
これはかつて思われていたほど達成するのは難しくありませんが、直接的で簡単な方法はありません。ただし、より優れた、より保守しやすい方法があります。Transform ベースのソリューション
1
|
|
図 1: 最初のステップは、円 (または 0% の比率を示す円グラフ) を描画することです
CSS
1 2 3 4 5
| .pie { 幅: 100px 高さ: 100px ; ; 境界半径: 50%; 背景: yellowgreen }
円グラフは緑 (特別な黄緑を指します) と茶色 (#655) ) パーセンテージで表示されます。比例部分の変換でスキューを使用してみるかもしれませんが、いくつかの実験の後、これは非常に混乱を招く解決策であることがわかりました。したがって、この円グラフの左側と右側の部分をこれら 2 色で色付けし、必要なパーセンテージに対して、回転した疑似要素を使用してそれを実現します。 |
1
背景 - 画像: 線形グラデーション(右へ、透明 50%、#655 0);
図 2: 単純な線形グラデーションを使用して、右側の半円を茶色に着色します
図 2 に示すように、これで完了です。ここで、疑似要素にスタイルを追加してマスクにします。
1
2
3
4
5
6
.pie::before {
mar gin-left: 5 0%; 高さ: 100図 3: 点線内の内容は、疑似要素がマスクとして機能する領域を表します 図 3 で、疑似要素が現在円要素を基準にして配置されます。現在、スタイルは設定されておらず、何も覆われておらず、単なる透明な長方形です。スタイルの追加を始める前に、まずそれを分析しましょう: 円の茶色の部分をカバーしたいので、定義の繰り返しを避けるために、background-color: 継承を使用して緑色の背景を適用する必要があります。もともと欲しかったものです。親要素の背景色と一致しています。 疑似要素の左側にある円の中心点を中心に回転させたいので、その変換原点、または直接左に 0 50% を適用する必要があります。 円グラフの端を超えるため、長方形にはしたくないので、overflow: hidden to .pie を適用するか、適切な境界半径を適用して半円にする必要があります。 要約すると、疑似要素の CSS スタイルは次のとおりです。 |
CSS
|
1
2
3
7
8
9
.pie::before {
content: '';
表示: ブロック; マージン左: 50%;高さ: 100%;
変換元: 左; 図 4: スタイルを追加した後の疑似要素 (ここでは点線で示されています) 注: 背景色: 継承; を使用しないでください。それ以外の場合は、親の背景画像のグラデーションを使用します。要素も継承されます 現在の円グラフは図 4 のようになります。さあ、楽しい時間が始まります!擬似要素にrotate() 変換を適用することで、擬似要素の回転を開始できます。 20% のスケールを表示するには、72 度 (0.2 x 360 = 72)、つまり 0.2 回転を与えると、より読みやすくなります。図 5 に、さまざまな回転角度値の結果を示します。 図 5: さまざまなパーセンテージを示す円グラフ、左から右へ: 10% (36 度または 0.1 回転)、20% (72 度または 0.2 回転)、40% (144 度または 0.4 回転) これで終わりだと思いますが、それほど単純ではありません。この円グラフでは、0 ~ 50% のサイズのコンテンツを問題なく表示できますが、( .6turn を適用して) 60% の回転を表示したい場合は、図 6 の状況が発生します。でも心配しないでください。これは解決できます。 図 6: 比率が 50% を超えると、円グラフは横ばいになります (ここでは 60%) 50% ~ 100% の比率を別の問題として扱うと、次のような問題が発生する可能性があります。前のソリューションの逆バージョン: 0 から 0.5 回転の茶色の疑似要素。したがって、60% の円グラフの場合、疑似要素の CSS コードは次のようになります。
1 2 3 4 5 6 7
|