Ta sztuczka działa zarówno dla granic poziomych, jak i pionowych:
/*Horizontal*/
background-image: linear-gradient(to right, black 33%, rgba(255,255,255,0) 0%);
background-position: bottom;
background-size: 3px 1px;
background-repeat: repeat-x;
/*Vertical*/
background-image: linear-gradient(black 33%, rgba(255,255,255,0) 0%);
background-position: right;
background-size: 1px 3px;
background-repeat: repeat-y;
Możesz dostosować rozmiar za pomocą rozmiaru tła i proporcji za pomocą procentów gradientu liniowego. W tym przykładzie mam przerywaną linię 1px kropek i odstępy 2px. W ten sposób możesz również mieć wiele kropkowanych ramek, używając wielu tła.
Wypróbuj w tym JSFiddle lub spójrz na przykład fragmentu kodu:
div {
padding: 10px 50px;
}
.dotted {
border-top: 1px #333 dotted;
}
.dotted-gradient {
background-image: linear-gradient(to right, #333 40%, rgba(255, 255, 255, 0) 20%);
background-position: top;
background-size: 3px 1px;
background-repeat: repeat-x;
}
.dotted-spaced {
background-image: linear-gradient(to right, #333 10%, rgba(255, 255, 255, 0) 0%);
background-position: top;
background-size: 10px 1px;
background-repeat: repeat-x;
}
.left {
float: left;
padding: 40px 10px;
background-color: #F0F0DA;
}
.left.dotted {
border-left: 1px #333 dotted;
border-top: none;
}
.left.dotted-gradient {
background-image: linear-gradient(to bottom, #333 40%, rgba(255, 255, 255, 0) 20%);
background-position: left;
background-size: 1px 3px;
background-repeat: repeat-y;
}
.left.dotted-spaced {
background-image: linear-gradient(to bottom, #333 10%, rgba(255, 255, 255, 0) 0%);
background-position: left;
background-size: 1px 10px;
background-repeat: repeat-y;
}
<div>no
<br>border</div>
<div class='dotted'>dotted
<br>border</div>
<div class='dotted-gradient'>dotted
<br>with gradient</div>
<div class='dotted-spaced'>dotted
<br>spaced</div>
<div class='left'>no
<br>border</div>
<div class='dotted left'>dotted
<br>border</div>
<div class='dotted-gradient left'>dotted
<br>with gradient</div>
<div class='dotted-spaced left'>dotted
<br>spaced</div>
Oto sztuczka, którą zastosowałem w ostatnim projekcie, aby osiągnąć prawie wszystko, co chcę z poziomymi granicami. Używam za
<hr/>
każdym razem, gdy potrzebuję poziomej ramki. Podstawowym sposobem dodania granicy do tej godziny jest coś w rodzajuAle jeśli chcesz przejąć kontrolę nad ramką i, na przykład, zwiększyć odstęp między kropkami, możesz spróbować czegoś takiego:
W dalszej części utworzysz granicę (oto przykład z kropkami)
Oznacza to również, że możesz dodać cień tekstowy do kropek, gradientów itp. Cokolwiek chcesz ...
Cóż, działa naprawdę świetnie dla poziomych granic. Jeśli potrzebujesz tych pionowych, możesz określić klasę dla innej godziny i użyć
rotation
właściwości CSS3 .źródło
Nie można tego zrobić za pomocą czystego CSS - specyfikacja CSS3 ma nawet konkretny cytat na ten temat:
Możesz jednak użyć obrazu obramowania lub obrazu tła, który załatwi sprawę.
źródło
border: dotted
, ale jest możliwe, aby to zrobić za pomocą gradientów jako odpowiedź Eagorajose wykazała.Wykorzystuje standardową ramkę CSS i pseudoelement + przepełnienie: ukryte. W tym przykładzie otrzymujesz trzy różne przerywane ramki 2px: normalne, rozmieszczone jak 5px, rozmieszczone jak 10px. Jest w rzeczywistości 10 pikseli z widocznymi tylko 10-8 = 2 piksele.
Zastosowanie do małych elementów z dużymi zaokrąglonymi narożnikami może zapewnić zabawne efekty.
źródło
Więc zaczynając od udzielonej odpowiedzi i stosując fakt, że CSS3 pozwala na wiele ustawień - poniższy kod jest przydatny do utworzenia kompletnego pudełka:
Warto zauważyć, że 10 pikseli w tle daje obszar, który obejmie kreska i przerwa. 50% znacznika tła określa, jak szeroka jest kreska. Dlatego możliwe jest posiadanie różnej długości myślników po każdej stronie granicy.
źródło
Zobacz dokumentację MDN dla dostępnych wartości dla
border-style
:Oprócz tych wyborów nie ma żadnego wpływu na styl standardowej granicy.
Jeżeli nie ma możliwości do własnych upodobań, to mógłby użyć CSS3 użytkownika
border-image
należy jednak pamiętać, że wsparcie dla przeglądarki to nadal bardzo zawodny.źródło
Budowanie rozwiązania 4-krawędziowego w oparciu o odpowiedź @ Eagorajose ze skróconą składnią:
źródło
To stary, ale wciąż bardzo istotny temat. Aktualnym top odpowiedź działa dobrze, ale tylko dla bardzo małych kropek. Jak już zauważył Bhojendra Rauniyar w komentarzach, w przypadku większych (> 2px) kropek, kropki wydają się kwadratowe, a nie okrągłe. Znalazłem tę stronę w poszukiwaniu kropek , a nie kwadratów (a nawet myślników, jak w niektórych odpowiedziach tutaj).
Opierając się na tym, użyłem
radial-gradient
. Ponadto, korzystając z odpowiedzi Ukuser32 , właściwości kropek można łatwo powtórzyć dla wszystkich czterech ramek. Tylko rogi nie są idealne.W
radial-gradient
oczekuje :Tutaj chciałem kropkę o średnicy 5 pikseli (promień 2,5 piksela), z dwukrotnością średnicy (10 pikseli) między kropkami, co daje 15 pikseli.
background-size
Powinien pasować nich.Dwa stopery są zdefiniowane w taki sposób, że kropka jest ładna i gładka: jednolita czerń dla połowy promienia, a następnie gradient do pełnego promienia.
źródło
To naprawdę stare pytanie, ale ma wysoką pozycję w Google, więc zamierzam wprowadzić moją metodę, która może działać w zależności od potrzeb.
W moim przypadku chciałem grubą przerywaną ramkę, która miałaby minimalną przerwę między kreskami. Użyłem generatora wzorców CSS (takiego jak ten: http://www.patternify.com/ ), aby utworzyć wzór o szerokości 10 pikseli na 1 piksel. 9px to jednolity kolor kreski, 1px jest biały.
W moim CSS umieściłem ten wzór jako obraz tła, a następnie przeskalowałem go, używając atrybutu rozmiaru tła. Skończyło się na powtarzaniu kreski 20 na 2 piksele, 18 pikseli na linii ciągłej i 2 piksele na biało. Możesz go jeszcze bardziej powiększyć, aby uzyskać naprawdę grubą przerywaną linię.
Zaletą jest to, że obraz jest kodowany jako dane, których nie ma dodatkowe zewnętrzne żądanie HTTP, więc nie ma obciążenia wydajności. Przechowałem mój obraz jako zmienną SASS, aby móc go ponownie użyć w mojej witrynie.
źródło
Krótka odpowiedź: nie możesz.
Będziesz musiał użyć
border-image
właściwości i kilku zdjęć.źródło
Tak wiele osób mówi „nie możesz”. Tak, możesz. To prawda, że nie istnieje reguła css kontrolująca przestrzeń rynny między kreskami, ale css ma inne zdolności. Nie mów tak szybko, że nic nie da się zrobić.
Zasadniczo wysokość górnej krawędzi (w tym przypadku 5px) jest regułą określającą „szerokość” rynny. O. Oczywiście trzeba dostosować kolory do własnych potrzeb. Jest to również mały przykład dla linii poziomej, użyj lewej i prawej, aby utworzyć linię pionową.
źródło
Zrobiłem funkcję javascript do tworzenia kropek za pomocą svg. Możesz dostosować odstępy i rozmiar kropek w kodzie javascript.
źródło
JEŚLI kierujesz reklamy tylko na nowoczesne przeglądarki ORAZ możesz umieścić obramowanie na innym elemencie niż treść, możesz użyć transformacji skali CSS, aby uzyskać większą kropkę lub kreskę:
Dostosowanie pozycji zajmuje dużo czasu, ale działa. Zmieniając grubość obramowania, rozmiar początkowy i współczynnik skali, można uzyskać żądany stosunek grubości do długości. Jedyne, czego nie można dotknąć, to stosunek kreski do przerwy.
źródło
scale(8)
to właśnie zrobiłem - użyj obrazka wprowadź opis obrazu tutaj
źródło
AFAIK nie ma na to sposobu. Możesz użyć przerywanej ramki lub może nieco zwiększyć szerokość ramki, ale po prostu CSS nie jest w stanie uzyskać więcej rozmieszczonych kropek.
źródło
Możesz utworzyć płótno (przez javascript) i narysować w nim przerywaną linię. W obszarze roboczym możesz kontrolować, jak długo powinna być kreska i przestrzeń między nimi.
źródło