Oh MyUtils

CSS三角形ジェネレーター - Border Trickで CSS三角形を作成 オンライン

Border trickとclip-path polygonでCSS三角形をライブプレビュー付きで生成。8方向、3種類の三角形、複数の出力形式 — 100%クライアントサイド処理。

よくある質問

CSS三角形とは何ですか?どのように動作しますか?

CSS三角形は、画像やSVGなしに純粋なCSSで作成された三角形の図形です。最も一般的な技法は「ボーダートリック」です:要素の幅と高さが0の場合、ボーダーは対角線の継ぎ目で出会います。4つのボーダーのうち3つを透明にし、1つに色を付けると、可視のボーダーが三角形を形成します。

このCSS三角形ジェネレーターの使い方は?

1. 方向パッドで三角形の方向を選択します。2. 三角形の種類を選びます:正三角形、二等辺三角形、不等辺三角形。3. スライダーや数値入力で幅と高さを調整します。4. カラーピッカーで色を選びます。5. プレビューでリアルタイムに更新を確認します。6. ワンクリックでCSSコードをコピーします。

データは安全ですか?サーバーに送信されますか?

はい、データは完全に安全です。このツールはクライアントサイドのJavaScriptを使用してブラウザ内で完全に動作します。データはサーバーに送信されません。

ボーダートリックとclip-pathの違いは?

ボーダートリックはゼロ幅/高さの要素を作成し、ボーダーの幅と色で三角形を形成します。優れたブラウザサポートがありますが、box-shadowやbackground-imageは適用できません。clip-path方式はclip-path: polygon()で通常の要素を三角形にクリップし、背景、グラデーション、影を使用できます。

CSS三角形はいつ使うべきですか?

CSS三角形は一般的に次の用途に使われます:ツールチップの矢印、ドロップダウンメニューのインジケーター、パンくずリストのセパレーター、アコーディオンのインジケーター、吹き出しの尾、装飾的なセクション区切り。

CSS三角形にbox-shadowを追加できないのはなぜ?

ボーダートリックの三角形はゼロ幅・ゼロ高さの要素です。box-shadowは要素のボックスに適用されますが、面積がありません。影付きの三角形にはclip-path方式またはfilter: drop-shadow()を使用してください。

正三角形、二等辺三角形、不等辺三角形とは?

正三角形は3辺がすべて等しく、すべての角が60度です。高さは幅×√3/2で数学的に決定されます。二等辺三角形は2辺が等しく対称です。不等辺三角形は3辺がすべて異なり、非対称な矢印に使えます。

コード例

// CSS Triangle Generator - JavaScript Implementation

// Generate CSS triangle using the border trick
function generateTriangleCSS(direction, width, height, color) {
  const styles = { width: '0', height: '0' };
  const halfWidth = width / 2;
  const halfHeight = height / 2;

  switch (direction) {
    case 'up':
      styles['border-left'] = `${halfWidth}px solid transparent`;
      styles['border-right'] = `${halfWidth}px solid transparent`;
      styles['border-bottom'] = `${height}px solid ${color}`;
      break;
    case 'down':
      styles['border-left'] = `${halfWidth}px solid transparent`;
      styles['border-right'] = `${halfWidth}px solid transparent`;
      styles['border-top'] = `${height}px solid ${color}`;
      break;
    case 'left':
      styles['border-top'] = `${halfHeight}px solid transparent`;
      styles['border-bottom'] = `${halfHeight}px solid transparent`;
      styles['border-right'] = `${width}px solid ${color}`;
      break;
    case 'right':
      styles['border-top'] = `${halfHeight}px solid transparent`;
      styles['border-bottom'] = `${halfHeight}px solid transparent`;
      styles['border-left'] = `${width}px solid ${color}`;
      break;
  }

  return Object.entries(styles)
    .map(([prop, value]) => `${prop}: ${value};`)
    .join('\n');
}

// Generate clip-path polygon
function generateClipPath(direction, width, height, color) {
  const points = {
    up: '50% 0%, 100% 100%, 0% 100%',
    down: '0% 0%, 100% 0%, 50% 100%',
    left: '100% 0%, 100% 100%, 0% 50%',
    right: '0% 0%, 100% 50%, 0% 100%',
  };
  return `width: ${width}px;\nheight: ${height}px;\nbackground: ${color};\nclip-path: polygon(${points[direction]});`;
}

console.log(generateTriangleCSS('up', 100, 87, '#3B82F6'));
// width: 0; height: 0;
// border-left: 50px solid transparent;
// border-right: 50px solid transparent;
// border-bottom: 87px solid #3B82F6;

関連ツール