質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

7回答

5833閲覧

CSSで破線の円を作りたい

gesunokiwami

総合スコア17

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1グッド

4クリップ

投稿2020/02/20 04:36

編集2020/02/20 04:39

CSSで破線の円を作りたいと思い、以下の処理で作成を行いました。

/*CSS*/ .ring { width: 1598px; height: 1598px; margin: -810px 0 0 -810px; border-width: 15px; border-style: dashed !important; border-radius: 952px !important; opacity: 0.2; -moz-transform: translateZ(75px); -webkit-transform: translateZ(75px); box-shadow: none; }

この処理で破線の円は表示出来たのですが、
破線の終わりと始まりの部分の間隔が狭くなってしまい、間隔が均一になりませんでした。
イメージ説明
破線の間隔を統一した円はどうすれば作成出来るでしょうか?

s8_chu👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答7

0

いくつかやり方があると思いますが、図形を書くのであれば SVG を使うといいと思いました。
stroke-dasharrayを変更すると、いろいろな破線が引けると思います。

html

1<svg viewBox="0 0 100 100"> 2 <circle cx="50" cy="50" r="48" class="dashed" /> 3</svg>

css

1svg { 2 height: 1598px; 3 width: 1598px; 4} 5 6circle { 7 fill: transparent; 8 stroke: purple; 9 stroke-width: 3; 10} 11 12.dashed { 13 stroke-dasharray: 10, 4; 14}

screenshot

サンプルコード

投稿2020/02/20 05:00

編集2020/02/20 05:01
shgtkshruch

総合スコア665

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

radial-gradient() と repeating-conic-gradient() を組み合わせて

CSS

1.ring { 2 background-image: radial-gradient(#fff 68%, transparent 68% 70%, #fff 70%), 3 repeating-conic-gradient(currentColor 0% 3%, transparent 3% 5%); 4}

https://developer.mozilla.org/en-US/docs/Web/CSS/repeating-conic-gradient
(Firefox 未対応)

と、これで一見簡単でよさそうですが、じつは背景を透過しないという問題があります。
そこで mask-image を使います。

CSS

1.ring { 2 background-image: repeating-conic-gradient(currentColor 0% 3%, transparent 3% 5%); 3 -webkit-mask-image: radial-gradient(transparent 68%, currentColor 68% 70%, transparent 70%); 4 mask-image: radial-gradient(transparent 68%, currentColor 68% 70%, transparent 70%); 5}

https://developer.mozilla.org/ja/docs/Web/CSS/mask-image

投稿2020/02/21 06:54

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinji709

2020/02/21 07:26

こんな簡単に朝日新聞社旗が描けるとは…勉強になりましたありがとうございます! .asahi { background-color: transparent; color: red; background-image: radial-gradient(currentColor 30%, transparent 30% 100%), repeating-conic-gradient(currentColor 0% 3%, transparent 3% 5%); height: 600px; width: 600px; }
x_x

2020/02/21 12:16

試したら予想以上にそっくり……やば
oikashinoa

2020/02/21 15:37

この方法だと確実に均等な点線になるので良いですね
guest

0

破線の間隔を統一した円はどうすれば作成出来るでしょうか?

どうしても厳密に実現したいなら、<canvas>に描くしかないかと思います。

borderの単位は細かく指定できないので、半端が出るのは仕方ないです。

投稿2020/02/20 04:44

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

回答としてはshgtkshruchさんが良いと思いました。
しかしoikashinoaさんのアイディア(の1.)も気になったのでやってみました
点線の点の数の半数の空divを書かなければならない、それぞれのtransformのcss定義も書かなければならない、で実用は厳しい感じでした。
上述めんどくさい部分だけJS化したものがこちらです
HTML側の書き方は、

HTML

1<div class="circle"></div>

でデフォルト設定(半径100px、線幅2px、点線のひとつの点の長さ4px、点線の点の数64)で破線円を描きます。
設定を変更するなら以下のように書きます。

HTML

1<div class="circle" style="--r: 200px; --line-width: 8px; --solid-length: 20px; --n-of-dash: 24;"></div>

投稿2020/02/21 03:41

shinji709

総合スコア805

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

原因は、dashedの線の合間がちょうど円の終了にきてしまっているからです。
これは、もう円の大きさ、もしくは線の太さを、ちょうどいい数値になるよういろいろ試してみるしかありません。
つまりこうなるのは仕様です。
さらに言えば、ブラウザによって挙動が違うことになります。
(線の間の大きさとかが変わる)
なので、最悪、画像や、他のプロパティを使うしかないでしょう。

dottedでもdashedでもない!CSSで好きな間隔の点線(破線)を作る方法 | amelog

を参考にされるといろいろアイディア浮かぶと思いますよ。

投稿2020/02/20 04:49

miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

スマホからなので簡単に。

出来るか試して無いですし、cssは苦手です。以下出来るのかな?

  1. 長方形をいくつも回転させて破線のもとにする
  2. clip-pathでドーナツ上にくり抜く...path書くのが凄く大変なので止め。

投稿2020/02/20 11:56

編集2020/02/20 13:21
oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

破線てそういうものですよね?
エクセルなどの図形で書いてもつまるところはつまりますよ

投稿2020/02/20 04:48

yambejp

総合スコア116732

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問