Chciałem zrobić kropkowany okrąg za pomocą CSS i utworzyłem go w następujący sposób.
Chociaż ten proces może wyświetlać przerywany okrąg, przerwa między końcem a początkiem przerywanej linii stała się wąska, a odstęp nie był jednolity.
.c {
width: 500px;
height: 500px;
border-width: 15px;
border-style: dashed;
border-radius: 600px;
}
<div class="c"></div>
Czy istnieje sposób na ujednolicenie odstępu? czy możemy również kontrolować odstęp między kreskami?
Jeśli nie jest to możliwe tylko w CSS, rozważamy użycie JavaScript lub czegoś podobnego.
javascript
html
css
Temani Afif
źródło
źródło
Odpowiedzi:
Oto zoptymalizowana wersja
conic-gradient()
rozwiązania, w której możesz łatwo kontrolować liczbę myślników i odstęp między nimiPokaż fragment kodu
Aby mieć pełną przejrzystość, którą rozważamy
mask
Pokaż fragment kodu
Aby było zabawnie , możemy nawet rozważyć bardziej złożone zabarwienie kresek:
Pokaż fragment kodu
Na pewno możesz chcieć mieć trochę zawartości, więc lepiej zastosuj maskę / tło do pseudoelementu, aby uniknąć maskowania zawartości:
Pokaż fragment kodu
Podobne pytanie, aby uzyskać więcej pomysłów CSS, aby osiągnąć podobny wynik: Tylko wykres kołowy CSS - Jak dodać odstępy / wypełnienia między plasterkami? . Znajdziesz więcej obsługiwanych sposobów niż
conic-gradient()
(w rzeczywistości nie działa w przeglądarce Firefox), ale musisz użyć dużo kodu, w przeciwieństwie do powyższego rozwiązania, w którym potrzebny jest tylko jeden element.Korzystając z SVG, będziesz potrzebować również obliczeń, aby upewnić się, że masz jednolite odstępy:
Dzięki zmiennym CSS możemy to ułatwić, ale nie jest obsługiwane we wszystkich przeglądarkach (w rzeczywistości nie działa w przeglądarce Firefox)
Pokaż fragment kodu
Możemy również łatwo użyć SVG jako tła, aby uczynić rzeczy bardziej elastycznymi:
Pokaż fragment kodu
W przypadku użycia jako tła należy ręcznie ustawić wartość, aby za każdym razem było potrzebne inne tło. Możemy jedynie ułatwić zmianę koloru za pomocą SVG jako maski;
Pokaż fragment kodu
źródło
conic-gradient()
lubrepeating-conic-gradient()
. W przyszłości może to być realne podejście, ale w tej chwili nie można z niego korzystać, jeśli pożądana jest funkcjonalność przeglądarki.Używaj
stroke-dasharray
z SVG.Lub możesz użyć
radial-gradient()
,repeating-conic-gradient()
funkcje bez Firefoksa.źródło
conic-gradient
z jakiegoś powodu staje się postrzępiony ...