Este truco funciona tanto para bordes horizontales como verticales:
/*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;
Puede ajustar el tamaño con el tamaño de fondo y la proporción con los porcentajes de gradiente lineal. En este ejemplo, tengo una línea punteada de puntos de 1 px y espaciado de 2 px. De esta manera, también puede tener múltiples bordes punteados utilizando múltiples fondos.
Pruébelo en este JSFiddle o eche un vistazo al ejemplo de fragmento 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>
Aquí hay un truco que he usado en un proyecto reciente para lograr casi todo lo que quiero con bordes horizontales. Uso
<hr/>
cada vez que necesito un borde horizontal. La forma básica de agregar un borde a esta hora es algo así comoPero si desea tomar el control del borde y, por ejemplo, aumentar el espacio entre puntos, puede intentar algo como esto:
Y a continuación, crea su borde (aquí hay un ejemplo con puntos)
Esto también significa que puede agregar sombras de texto a los puntos, gradientes, etc. Cualquier cosa que desee ...
Bueno, funciona muy bien para bordes horizontales. Si necesita verticales, puede especificar una clase para otra hora y usar la
rotation
propiedad CSS3 .fuente
No puede hacerlo con CSS puro: la especificación CSS3 incluso tiene una cita específica sobre esto:
Sin embargo, puede usar una imagen de borde o una imagen de fondo que haga el truco.
fuente
border: dotted
, pero es posible hacerlo usando gradientes como lo ha demostrado la respuesta de Eagorajose.Utiliza el borde CSS estándar y un pseudo elemento + desbordamiento: oculto. En el ejemplo, obtienes tres bordes discontinuos de 2px diferentes: normal, espaciado como un 5px, espaciado como un 10px. En realidad, es 10px con solo 10-8 = 2px visibles.
Aplicado a elementos pequeños con grandes esquinas redondeadas puede hacer algunos efectos divertidos.
fuente
Entonces, comenzando con la respuesta dada y aplicando el hecho de que CSS3 permite múltiples configuraciones, el siguiente código es útil para crear un cuadro completo:
Vale la pena señalar que el tamaño de fondo de 10px da el área que cubrirá el guión y el espacio. El 50% de la etiqueta de fondo es qué tan ancho es realmente el guión. Por lo tanto, es posible tener guiones de diferentes longitudes en cada lado del borde.
fuente
Consulte los documentos de MDN para conocer los valores disponibles para
border-style
:Aparte de esas opciones, no hay forma de influir en el estilo del borde estándar.
Si las posibilidades no son de su agrado, puede usar CSS3,
border-image
pero tenga en cuenta que el soporte del navegador para esto todavía es muy irregular.fuente
Construyendo una solución de 4 bordes basada en la respuesta de @ Eagorajose con sintaxis abreviada:
fuente
Este es un tema antiguo, pero aún muy relevante. La respuesta principal actual funciona bien, pero solo para puntos muy pequeños. Como Bhojendra Rauniyar ya señaló en los comentarios, para puntos más grandes (> 2px), los puntos aparecen cuadrados, no redondos. Encontré esta página buscando puntos espaciados , no cuadrados espaciados (o incluso guiones, como algunas respuestas aquí usan).
Sobre la base de esto, solía
radial-gradient
. Además, utilizando la respuesta de Ukuser32 , las propiedades de punto se pueden repetir fácilmente para los cuatro bordes. Solo las esquinas no son perfectas.El
radial-gradient
espera :Aquí, quería un punto de 5 píxeles de diámetro (radio de 2.5 píxeles), con 2 veces el diámetro (10 píxeles) entre los puntos, sumando hasta 15 píxeles. El
background-size
debe coincidir con estos.Las dos paradas se definen de modo que el punto sea agradable y suave: negro sólido para la mitad del radio y que un gradiente al radio completo.
fuente
Esta es una pregunta muy antigua, pero tiene una clasificación alta en Google, por lo que voy a incluir mi método, que podría funcionar según sus necesidades.
En mi caso, quería un borde de trazos gruesos que tuviera una ruptura mínima entre guiones. Utilicé un generador de patrones CSS (como este: http://www.patternify.com/ ) para crear un patrón de 10 px de ancho por 1 px de alto. 9px de eso es color de guión sólido, 1px es blanco.
En mi CSS, incluí ese patrón como imagen de fondo, y luego lo amplié usando el atributo de tamaño de fondo. Terminé con un tablero repetido de 20 px por 2 px, 18 px de esa línea continua y 2 px blancos. Puede ampliarlo aún más para obtener una línea discontinua muy gruesa.
Lo bueno es que, dado que la imagen está codificada como datos, no tiene la solicitud HTTP externa adicional, por lo que no hay una carga de rendimiento. Almacené mi imagen como una variable SASS para poder reutilizarla en mi sitio.
fuente
Respuesta corta: no puedes.
Tendrá que usar la
border-image
propiedad y algunas imágenes.fuente
Mucha gente dice "No puedes". Sí tu puedes. Es cierto que no existe una regla css para controlar el espacio entre los guiones, pero css tiene otras habilidades. No se apresure a decir que algo no se puede hacer.
Básicamente, la altura del borde superior (5px en este caso) es la regla que determina el "ancho" de la canaleta. O Por supuesto, necesitaría ajustar los colores para que coincidan con sus necesidades. Este también es un pequeño ejemplo para una línea horizontal, use izquierda y derecha para hacer la línea vertical.
fuente
Hice una función de JavaScript para crear puntos con un svg. Puede ajustar el espacio entre puntos y el tamaño en el código de JavaScript.
fuente
SI solo está apuntando a navegadores modernos, Y puede tener su borde en un elemento separado de su contenido, entonces puede usar la transformación de escala CSS para obtener un punto o guión más grande:
Se necesitan muchos ajustes posicionales para alinearse, pero funciona. Al cambiar el grosor del borde, el tamaño inicial y el factor de escala, puede obtener la relación grosor-longitud que desee. Lo único que no puedes tocar es la relación de tablero a espacio.
fuente
scale(8)
esto es lo que hice: use una imagen ingrese la descripción de la imagen aquí
fuente
AFAIK no hay una manera de hacer esto. Podría usar un borde punteado o tal vez aumentar un poco el ancho del borde, pero con CSS es imposible obtener puntos más espaciados.
fuente
Puede crear un lienzo (a través de javascript) y dibujar una línea de puntos dentro. Dentro del lienzo, puede controlar cuánto durará el guión y el espacio intermedio.
fuente