Este truque funciona para bordas horizontais e verticais:
/*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;
Você pode ajustar o tamanho com o tamanho do plano de fundo e a proporção com as porcentagens de gradiente linear. Neste exemplo, tenho uma linha pontilhada de pontos 1px e espaçamento 2px. Dessa forma, você também pode ter várias bordas pontilhadas usando vários fundos.
Experimente neste JSFiddle ou dê uma olhada no exemplo de trecho de código:
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>
Aqui está um truque que usei em um projeto recente para obter quase tudo o que desejo com bordas horizontais. Uso
<hr/>
sempre que preciso de uma borda horizontal. A maneira básica de adicionar uma borda a essa hora é algo comoMas se você quiser controlar a borda e, por exemplo, aumentar o espaço entre os pontos, tente algo como isto:
E a seguir, você cria sua borda (aqui está um exemplo com pontos)
Isso também significa que você pode adicionar sombra de texto aos pontos, gradientes etc. Tudo o que quiser ...
Bem, funciona muito bem para bordas horizontais. Se você precisar de verticais, poderá especificar uma classe para outra hora e usar a
rotation
propriedade CSS3 .fonte
Você não pode fazer isso com CSS puro - a especificação CSS3 ainda tem uma citação específica sobre isso:
No entanto, você pode usar uma imagem de borda ou uma imagem de fundo que faça o truque.
fonte
border: dotted
, mas é possível fazê-lo usando gradientes, como a resposta de Eagorajose mostrou.Isso usa a borda CSS padrão e um pseudo-elemento + estouro: oculto. No exemplo, você obtém três bordas tracejadas 2px diferentes: normal, espaçada como 5px, espaçada como 10px. Na verdade, é 10px com apenas 10-8 = 2px visível.
A aplicação em pequenos elementos com grandes cantos arredondados pode resultar em alguns efeitos divertidos.
fonte
Então, começando com a resposta dada e aplicando o fato de que o CSS3 permite várias configurações - o código abaixo é útil para criar uma caixa completa:
Vale a pena notar que os 10 px no tamanho do plano de fundo fornecem a área que o traço e o espaço cobrirão. Os 50% da marca de segundo plano são a largura do traço. Portanto, é possível ter traços de comprimento diferentes em cada lado da borda.
fonte
Consulte os documentos MDN para obter os valores disponíveis para
border-style
:Além dessas opções, não há como influenciar o estilo da borda padrão.
Se as possibilidades não são do seu agrado, você pode usar o CSS3,
border-image
mas observe que o suporte ao navegador para isso ainda é muito irregular.fonte
Solução de construção de 4 arestas com base na resposta de @ Eagorajose com sintaxe abreviada:
fonte
Este é um tópico antigo, mas ainda muito relevante. A resposta superior atual funciona bem, mas apenas para pontos muito pequenos. Como Bhojendra Rauniyar já apontou nos comentários, para pontos maiores (> 2px), os pontos aparecem quadrados, não redondos. Encontrei esta página procurando pontos espaçados , não quadrados espaçados (ou até traços, como algumas respostas aqui usam).
Com base nisso, eu usei
radial-gradient
. Além disso, usando a resposta do Ukuser32 , as propriedades do ponto podem ser facilmente repetidas para todas as quatro bordas. Apenas os cantos não são perfeitos.O
radial-gradient
espera :Aqui, eu queria um ponto de 5 pixels de diâmetro (raio de 2,5px), com 2 vezes o diâmetro (10px) entre os pontos, totalizando 15px. O
background-size
deve corresponder a estes.As duas paradas são definidas de modo que o ponto seja agradável e suave: preto sólido por metade do raio e um gradiente para o raio completo.
fonte
Esta é uma pergunta muito antiga, mas tem uma classificação alta no Google, então vou usar meu método que pode funcionar dependendo de suas necessidades.
No meu caso, eu queria uma borda espessa e tracejada que tivesse um intervalo mínimo entre os traços. Eu usei um gerador de padrões CSS (como este: http://www.patternify.com/ ) para criar um padrão de 10px de largura por 1px de altura. 9px dessa cor é sólida, e 1px é branco.
No meu CSS, incluí esse padrão como imagem de plano de fundo e o ampliei usando o atributo de tamanho do plano de fundo. Acabei com um traço repetido de 20 por 2 pixels, sendo 18 em linhas sólidas e 2 em branco. Você pode escalá-lo ainda mais para uma linha tracejada muito grossa.
O bom é que, como a imagem é codificada como dados, você não possui a solicitação HTTP externa adicional, portanto, não há ônus no desempenho. Armazenei minha imagem como uma variável SASS para poder reutilizá-la no meu site.
fonte
Resposta curta: você não pode.
Você terá que usar a
border-image
propriedade e algumas imagens.fonte
Tantas pessoas dizem "Você não pode". Sim você pode. É verdade que não existe uma regra de CSS para controlar o espaço da sarjeta entre os traços, mas o CSS tem outras habilidades. Não seja tão rápido em dizer que nada pode ser feito.
Basicamente, a altura do topo da borda (5px neste caso) é a regra que determina a "largura" da sarjeta. Claro que você precisaria ajustar as cores para atender às suas necessidades. Este também é um pequeno exemplo para uma linha horizontal, use esquerda e direita para fazer a linha vertical.
fonte
Eu fiz uma função javascript para criar pontos com um svg. Você pode ajustar o espaçamento e o tamanho dos pontos no código javascript.
fonte
Se você está segmentando apenas navegadores modernos, E pode ter sua borda em um elemento separado do seu conteúdo, use a transformação de escala CSS para obter um ponto ou traço maior:
É preciso muito ajuste posicional para alinhar, mas funciona. Alterando a espessura da borda, o tamanho inicial e o fator de escala, você pode obter a proporção de espessura e comprimento desejada. A única coisa que você não pode tocar é na proporção entre traços e intervalos.
fonte
scale(8)
isto é o que eu fiz - use uma imagem, digite a descrição da imagem aqui
fonte
AFAIK não existe uma maneira de fazer isso. Você pode usar uma borda tracejada ou talvez aumentar um pouco a largura da borda, mas é impossível obter mais pontos espaçados com CSS.
fonte
Você pode criar uma tela (via javascript) e desenhar uma linha pontilhada dentro. Dentro da tela, você pode controlar quanto tempo o traço e o espaço intermediário deverão ser.
fonte