ホームページ > ウェブフロントエンド > CSSチュートリアル > 画像やライブラリを使用せずに CSS でラジアル メニューを構築する方法

画像やライブラリを使用せずに CSS でラジアル メニューを構築する方法

DDD
リリース: 2024-11-10 08:44:02
オリジナル
544 人が閲覧しました

How to Build a Radial Menu in CSS Without Images or Libraries?

CSS でラジアル メニューを作成する方法

概要

ラジアル メニューとその内容オプションのユニークな円形配置により、コマンドにアクセスしたり、コンテンツ内を移動したりするための直感的で視覚的に魅力的な方法が提供されます。この記事では、画像やサードパーティのライブラリに依存せずに、CSS を使用して放射状メニューを作成するテクニックについて詳しく説明します。

HTML 構造

まず、入力チェックボックス (メニューの表示/非表示を切り替えるため)、ラベル (中央のボタン用)、および順序なしリスト (放射状メニュー項目用) で構成される単純な HTML 構造から始めます。

<input type='checkbox'>
ログイン後にコピー

CSS の実装

次に、CSS を使用して放射状メニューのスタイルを設定します。次のコードは、フィードバックに対処し、スタイルの強化を組み込んだ改訂版を示しています。

input {
    transform: translate(-100vw);
    visibility: hidden;
}

input:checked ~ ul {
    transform: scale(1); 
    opacity: .999;
    transition: .5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

label, ul, li {
    position: absolute;
    left: 50%;
    bottom: 50%;
}

label, a {
    color: #858596;
    font: 700 1em/ 2em sans-serif;
    text-align: center;
    text-shadow: 0 1px 1px #6c6f7e;
    cursor: pointer;
}

label {
    z-index: 2;
    margin: -1em;
    width: 2em;
    height: 2em;
    border-radius: 50%;
    box-shadow: 0 0 1px 1px white,  0 .125em .25em #876366,  0 .125em .5em #876366;
    background: #d3d3d3;
    background: -webkit-radial-gradient(#d4c7c5, #e5e1dd);
    background: radial-gradient(#d4c7c5, #e5e1dd);
}

ul {
    z-index: 1;
    margin: -10em 0;
    padding: 0;
    list-style: none;
    transform-origin: 50% -13em;
    transform: scale(0.001); 
    will-change: transform;
    opacity: .001;
    filter: drop-shadow(0 0.125em 0.25em #847c77);
    transition: 0.5s cubic-bezier(0.6, -0.28, 0.735, 0.045);
}
ul:before, ul:after {
    position: absolute;
    margin: -3em -0.25em;
    width: 0.5em;
    height: 3em;
    transform-origin: 50% 100%;
    background: #d3d3d3;
    background: -webkit-linear-gradient(#ddd, #c9c4bf);
    background: linear-gradient(#ddd, #c9c4bf);
    content: '';
}
ul:before {
    border-radius: 0.5em 0 0 0.5em;
    transform: rotate(-22.5deg) translate(-0.25em, -13em);
    box-shadow: inset 1px 0 1px #eee;
}
ul:after {
    border-radius: 0 0.5em 0.5em 0;
    transform: rotate(22.5deg) translate(0.25em, -13em);
    box-shadow: inset -1px 0 1px #eee;
}

li {
    overflow: hidden;
    width: 16em;
    height: 16em;
    transform-origin: 0 100%;
}
li:nth-child(1) {
    transform: rotate(-22.625deg) skewY(-75deg) scaleX(0.25882);
}
li:nth-child(2) {
    transform: rotate(-7.5deg) skewY(-75deg) scaleX(0.25882);
}
li:nth-child(2) a:after {
    position: absolute;
    top: 3em;
    left: 50%;
    margin: -0.375em;
    width: 0.75em;
    height: 0.75em;
    transform: rotate(45deg);
    box-shadow: inset -1px -1px 1px #eee;
    background: -webkit-linear-gradient(135deg, #bbb, #c9c4bf 50%);
    background: linear-gradient(-45deg, #bbb, #c9c4bf 50%);
    content: '';
}
li:nth-child(3) {
    transform: rotate(7.625deg) skewY(-75deg) scaleX(0.25882);
}
li a, li:before {
    margin: 0 -16em;
    width: 32em;
    height: 32em;
    border-radius: 50%;
}
li:before, li:after {
    position: absolute;
    border-radius: 50%;
    transform: scaleX(3.8637) skewY(75deg);
    content: '';
}
li:before {
    box-shadow: inset 0 0 1px 1px #fff, inset 0 0 3em #ebe7e2, inset 0 0 1px 2.9375em #c9c4bf, inset 0 0 0 3em #dcdcdc;
}
li:after {
    top: 100%;
    left: 0;
    margin: -13em;
    width: 26em;
    height: 26em;
    border-radius: 50%;
}

a {
    display: block;
    transform: scaleX(3.8637) skewY(75deg) rotate(7.5deg);
    line-height: 3em;
    text-align: center;
    text-decoration: none;
}
ログイン後にコピー

説明

  • チェックボックス: オンの場合のチェックボックスは、ラジアル メニューの表示/非表示を切り替えます。
  • ラベル: ラベルは中央のボタンとして配置され、トリガーとなる星のアイコンが含まれます。
  • ラジアルメニュー構造: 順序なしリストには、それぞれのアンカー ('a') を持つリスト要素 ('li') としてメニュー項目が含まれます。
  • 変換: CSS 変換を使用して、要素を回転および傾斜させて放射状のレイアウトを作成します。
  • 影とグラデーション: 影と放射状のグラデーションは、ボタンとメニュー項目に 3D 効果を与えます。
  • 擬似要素: 疑似要素は、奥行きと丸いエッジの錯覚を作成します。

この改良されたデモでは、丸い角、シェーディング効果、およびオプションのヒントを示す放射状メニューの全機能が紹介されています。アクティブなアイテム。

以上が画像やライブラリを使用せずに CSS でラジアル メニューを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート