Jak zwiększyć przestrzeń między kropkowanymi kropkami

Używam kropkowanej obramowania stylu w moim pudełku jak

.box {
    width: 300px;
    height: 200px;
    border: dotted 1px #f00;
    float: left;
}

Chcę zwiększyć przestrzeń między każdą kropką granicy.

Author: Dejan, 2011-06-06

12 answers

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ą tła-size i proporcję za pomocą procentów gradientu liniowego. W tym przykładzie mam kropkowaną linię kropek 1px i odstępy 2px. W ten sposób możesz mieć wiele przerywanych granic za pomocą wielu tła.

Spró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>
 329
Author: Eagorajose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-26 14:25:18

Oto sztuczka, której użyłem w ostatnim projekcie, aby osiągnąć prawie wszystko, co chcę z poziomymi granicami. Używam <hr/> za każdym razem, gdy potrzebuję poziomej granicy. Podstawowym sposobem dodawania obramowania do tego hr jest coś w rodzaju

 hr {border-bottom: 1px dotted #000;}

Ale jeśli chcesz przejąć kontrolę nad granicą i na przykład zwiększyć odstęp między kropkami, możesz spróbować czegoś takiego:

hr {
height:14px; /* specify a height for this hr */
overflow:hidden;
}

I w dalszej części tworzysz obramowanie (tutaj przykład z kropkami)

hr:after {
content:".......................................................................";
letter-spacing: 4px; /* Use letter-spacing to increase space between dots*/
}

Oznacza to również że można dodać tekst-cień do kropek, gradientów itp. Cokolwiek zechcesz...

Dobrze, to działa naprawdę świetnie dla poziomych granic. Jeśli potrzebujesz pionowych, możesz określić klasę dla innego hr i użyć właściwości CSS3 rotation.

 137
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-03 14:08:21

Nie możesz tego zrobić z czystym CSS - SPEC CSS3 ma nawet konkretny cytat na ten temat:

Uwaga: nie ma kontroli nad odstępami kropek i kresek, ani nad długością kresek. Implementacje są zachęcane do wyboru odstępu, który sprawia, że narożniki są symetryczne.

Można jednak użyć obrazu obramowania lub obrazu tła, który robi sztuczkę.

 114
Author: Shadikka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-17 13:01:12

Zobacz MDC docs dla dostępnych wartości dla border-style:

  • none: Brak obramowania, ustawia szerokość na 0. Jest to wartość domyślna.
  • hidden: to samo co 'none', z wyjątkiem rozwiązywanie konfliktów granicznych w tabeli żywioły.
  • przerywany: seria krótkich kreski lub segmenty linii.
  • kropkowany : Seria kropek.
  • Podwójny: Dwa proste linie, które sumują się do ilości pikseli zdefiniowana jako szerokość obramowania.
  • groove : Efekt rzeźbiony.
  • wstawka: sprawia, że pudełko pojawiają się osadzone.
  • początek: przeciwieństwo "inset". Sprawia, że pudełko wygląda 3D (tłoczone).
  • grzbiet: Opposite of "groove" Obramowanie pojawia się 3D (coming out).
  • solid: Single, prosta, solidna linia.

Poza tymi wyborami, nie ma sposobu, aby wpłynąć na styl standard border.

Jeśli możliwości tam nie są do Twoich potrzeb, można używać CSS3 ' s border-image Należy jednak pamiętać, że obsługa przeglądarki jest nadal bardzo spotty.

 17
Author: Pekka 웃,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-04 22:25:18

Używa standardowej granicy CSS i pseudo elementu + overflow: hidden. W przykładzie otrzymasz trzy różne ramki 2px: normal, spaced like a 5px, spaced like a 10px. Jest rzeczywiście 10px z tylko 10-8 = 2px widoczne.

div.two{border:2px dashed #FF0000}

div.five:before {
  content: "";
  position: absolute;
  border: 5px dashed #FF0000;
  top: -3px;
  bottom: -3px;
  left: -3px;
  right: -3px;
}

div.ten:before {
  content: "";
  position: absolute;
  border: 10px dashed #FF0000;
  top: -8px;
  bottom: -8px;
  left: -8px;
  right: -8px;
}

div.odd:before {left:0;right:0;border-radius:60px}

div {
  overflow: hidden;
  position: relative;


  text-align:center;
  padding:10px;
  margin-bottom:20px;
}
<div class="two">Kupo nuts here</div>
<div class="five">Kupo nuts<br/>here</div>
<div class="ten">Kupo<br/>nuts<br/>here</div>
<div class="ten odd">Kupo<br/>nuts<br/>here</div>

Zastosowane do małych elementów z dużymi zaokrąglonymi rogami może sprawić, że efekty będą zabawne.

 13
Author: lenioia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-15 01:44:41

To naprawdę stare pytanie, ale ma wysoką pozycję w Google, więc dorzucę moją metodę, która może działać w zależności od twoich potrzeb.

W moim przypadku, chciałem grubą granicę przerywaną, która miała minimalne przerwy między myślnikami. Użyłem CSS pattern generator (jak ten: http://www.patternify.com / ), Aby utworzyć wzór 10px szeroki przez 1px wysoki. 9px z tego jest jednolity kolor kreski, 1px jest biały.

W moim CSS umieściłem ten wzór jako obrazek tła i następnie przeskaluj go używając atrybutu background-size. I skończyło się z 20px przez 2px powtórzony dash, 18px to jest solid line i 2px biały. Można ją jeszcze bardziej powiększyć, aby uzyskać naprawdę grubą linię przerywaną.

Fajne jest to, że ponieważ obraz jest zakodowany jako dane, nie masz dodatkowego zewnętrznego żądania HTTP, więc nie ma obciążenia wydajności. Zapisałem mój obraz jako zmienną SASS, więc mogłem go ponownie wykorzystać w mojej witrynie.

 6
Author: Nick Angiolillo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-10 16:12:00

Więc zaczynając od odpowiedzi i stosując fakt, że CSS3 pozwala na wiele ustawień-poniższy kod jest przydatny do tworzenia pełnego pola:

#border {
  width: 200px;
  height: 100px;
  background: yellow;
  text-align: center;
  line-height: 100px;
  background: linear-gradient(to right, orange 50%, rgba(255, 255, 255, 0) 0%), linear-gradient(blue 50%, rgba(255, 255, 255, 0) 0%), linear-gradient(to right, green 50%, rgba(255, 255, 255, 0) 0%), linear-gradient(red 50%, rgba(255, 255, 255, 0) 0%);
  background-position: top, right, bottom, left;
  background-repeat: repeat-x, repeat-y;
  background-size: 10px 1px, 1px 10px;
}
<div id="border">
  bordered area
</div>

Warto zauważyć, że 10px w rozmiarze tła daje obszar, który kreska i szczelina pokryją. 50% tagu tła to szerokość kreski. Dlatego możliwe jest posiadanie różnej długości kresek na każdej stronie granicy.

 3
Author: Ukuser32,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 10:45:28

Krótka odpowiedź: nie możesz.

Będziesz musiał użyć border-image nieruchomość i kilka zdjęć.

 2
Author: Crozin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-06 10:04:28

Jeśli celujesz tylko w nowoczesne przeglądarki i możesz mieć obramowanie na oddzielnym elemencie od zawartości, możesz użyć transformacji skali CSS, aby uzyskać większą kropkę lub myślnik:

border: 1px dashed black;
border-radius: 10px;
-webkit-transform: scale(8);
transform: scale(8);
To wymaga wielu poprawek pozycyjnych, aby go ustawić, ale to działa. Zmieniając Grubość obramowania, rozmiar wyjściowy i współczynnik skali, możesz uzyskać tylko o stosunku grubości do długości, który chcesz. Jedyną rzeczą, której nie możesz dotknąć, jest stosunek dash-to-gap.
 2
Author: Dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-06 19:16:39

Tak wiele osób mówi "nie możesz". Możesz. To prawda, że nie ma reguły css do kontrolowania przestrzeni rynien między myślnikami, ale css ma inne możliwości. Nie mów tak szybko, że czegoś nie da się zrobić.

.hr {
    border-top: 5px dashed #CFCBCC;
    margin: 30px 0;
    position: relative;
}

.hr:before {
    background-color: #FFFFFF;
    content: "";
    height: 10px;
    position: absolute;
    top: -2px;
    width: 100%;
}

.hr:after {
    background-color: #FFFFFF;
    content: "";
    height: 10px;
    position: absolute;
    top: -13px;
    width: 100%;
}

Zasadniczo wysokość obramowania (w tym przypadku 5px) jest regułą określającą "szerokość"rynny. Oczywiście musisz dostosować kolory do swoich potrzeb. Jest to również mały przykład dla linii poziomej, Użyj lewej i prawej, aby linia pionowa.

 2
Author: devinfd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-01 17:23:21

AFAIK nie ma na to sposobu. Możesz użyć przerywanej ramki lub zwiększyć jej szerokość, ale po prostu bardziej rozmieszczone kropki są niemożliwe dzięki CSS.

 0
Author: Bojangles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-06 10:03:33

Możesz utworzyć kanwę (za pomocą javascript) i narysować w niej przerywaną linię. W obszarze roboczym możesz kontrolować długość kreski i odstępu pomiędzy nimi.

 0
Author: velop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-25 13:39:44