検索
ホームページウェブフロントエンドCSSチュートリアル完全な CSS 円セクターを作成する方法

最近、私は CSS ジャックポット ルーレットを構築しました。これは、針が指すセクターを動的に強調表示するという、ユニークな課題を提示したプロジェクトです。 ルーレットには応答性と可変セクター数が必要で、単純な画像や SVG ソリューションは除外されました。 幾何学的な計算は不可欠でした。

私のアプローチでは、円の中心を中心にスパンを回転し、半径に沿ってクリップする必要がありました。 以下に詳しく説明されている初期設定 (さらに下のリンクから完全に入手できます) には、基本的なスタイル設定とスパンの増分回転 (360/sectors.length 度) が含まれていました。 この段階ではまだ視覚的に洗練されていませんでした。

セクターを強調表示するには、半径と角度を指定した円上の 2 点間の距離が必要でした。 式は次のとおりです:

<code>2 * radius * Math.sin(θ / 2)</code>

ここで、θ はラジアン単位の角度です。 使用するために変換されました:

<code>2 * radius * Math.sin(Math.PI / sectors.length)</code>

次に、重複を防ぐためにセクターのクリッピングに取り組みました。私の最初の試みは、斜めのクリップパスを使用しました:

<code>clip-path: polygon(100% 0, 0 50%, 100% 100%);</code>

これは多くのセクターで適切に機能しましたが、以下に示すように、セクターが少なく、特に 3 つだけのセクターでは欠陥が明らかになりました。

How to create perfect CSS circle sectors

解決策には、スパンと円の間の交点を計算し、その点から中心までクリッピングすることが含まれていました。これによりクリッピングが修正されました:

How to create perfect CSS circle sectors

研究により、交点を結ぶ線によって水平線上に作成されるセグメントの式が得られました。

中央セグメント:

<code>radius * (1 - Math.cos(θ / 2))</code>

外側セグメント:

<code>radius * Math.cos(θ / 2)</code>

(θはラジアン単位)

これらのセグメント間の比率によってクリッピング ポイントが決まり、次のことが起こります。

<code>const clipPosition = Math.cos(Math.PI / sectors.length) * 100</code>

修正された clip-path:

<code>{
  'clip-path': `polygon(100% 0, ${clipPosition}% 0, 0 50%, ${
    clipPosition
  }% 100%, 100% 100%)`
}</code>

最終的な Vue ベースの結果では、センター クリックによるランダム スピンとセクター クリックによるターゲット スピンが可能になります。 (原文どおり、完全なコードへのリンクは省略されています)。 このプロジェクトは、実践的な三角法の貴重なレッスンを提供しました。

以上が完全な CSS 円セクターを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
CSSグリッドとは何ですか?CSSグリッドとは何ですか?Apr 30, 2025 pm 03:21 PM

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

CSS Flexboxとは何ですか?CSS Flexboxとは何ですか?Apr 30, 2025 pm 03:20 PM

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

CSSを使用してWebサイトを応答するにはどうすればよいですか?CSSを使用してWebサイトを応答するにはどうすればよいですか?Apr 30, 2025 pm 03:19 PM

この記事では、ビューポートメタタグ、柔軟なグリッド、流体メディア、メディアクエリ、相対ユニットなど、CSSを使用してレスポンシブWebサイトを作成するための手法について説明します。また、CSSグリッドとフレックスボックスを使用してカバーし、CSSフレームワークを推奨しています

CSSボックスサイズのプロパティは何をしますか?CSSボックスサイズのプロパティは何をしますか?Apr 30, 2025 pm 03:18 PM

この記事では、要素の寸法の計算方法を制御するCSSボックスサイズのプロパティについて説明します。コンテンツボックス、ボーダーボックス、パディングボックスなどの値と、レイアウト設計とフォームアライメントへの影響について説明します。

CSSを使用してアニメーション化するにはどうすればよいですか?CSSを使用してアニメーション化するにはどうすればよいですか?Apr 30, 2025 pm 03:17 PM

記事では、CSS、キープロパティ、およびJavaScriptとの組み合わせを使用してアニメーションの作成について説明します。主な問題は、ブラウザの互換性です。

CSSを使用してプロジェクトに3D変換を追加できますか?CSSを使用してプロジェクトに3D変換を追加できますか?Apr 30, 2025 pm 03:16 PM

記事では、3D変換、主要なプロパティ、ブラウザの互換性、およびWebプロジェクトのパフォーマンスに関する考慮事項にCSSを使用して説明します。

CSSに勾配を追加するにはどうすればよいですか?CSSに勾配を追加するにはどうすればよいですか?Apr 30, 2025 pm 03:15 PM

この記事では、CSSグラデーション(線形、放射状、繰り返し)を使用して、ウェブサイトのビジュアルを強化し、深さ、フォーカス、および現代の美学を追加します。

CSSの擬似要素とは何ですか?CSSの擬似要素とは何ですか?Apr 30, 2025 pm 03:14 PM

記事では、CSSの擬似要素、HTMLスタイリングの強化における使用、および擬似クラスとの違いについて説明します。実用的な例を提供します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール