Cette astuce fonctionne pour les bordures horizontales et 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;
Vous pouvez ajuster la taille avec la taille d'arrière-plan et la proportion avec les pourcentages de gradient linéaire. Dans cet exemple, j'ai une ligne pointillée de points 1px et un espacement de 2px. De cette façon, vous pouvez également avoir plusieurs bordures en pointillés en utilisant plusieurs arrière-plans.
Essayez-le dans ce JSFiddle ou jetez un œil à l'exemple d'extrait de code:
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>
Voici une astuce que j'ai utilisée sur un projet récent pour réaliser presque tout ce que je veux avec des bordures horizontales. J'utilise
<hr/>
chaque fois que j'ai besoin d'une bordure horizontale. La façon de base pour ajouter une bordure à cette heure est quelque chose commeMais si vous voulez prendre le contrôle de la frontière et, par exemple, augmenter l'espace entre les points, vous pouvez essayer quelque chose comme ceci:
Et dans ce qui suit, vous créez votre bordure (voici un exemple avec des points)
Cela signifie également que vous pouvez ajouter du texte-ombre aux points, dégradés, etc. Tout ce que vous voulez ...
Eh bien, cela fonctionne vraiment bien pour les bordures horizontales. Si vous en avez besoin, vous pouvez spécifier une classe pour une autre heure et utiliser la
rotation
propriété CSS3 .la source
Vous ne pouvez pas le faire avec du CSS pur - la spécification CSS3 a même une citation spécifique à ce sujet:
Vous pouvez cependant utiliser une image de bordure ou une image d'arrière-plan qui fait l'affaire.
la source
border: dotted
, mais il est possible de le faire en utilisant des dégradés comme l'a montré la réponse d'Eagorajose.Celui-ci utilise la bordure CSS standard et un pseudo élément + débordement: caché. Dans l'exemple, vous obtenez trois bordures en pointillés 2px différentes: normales, espacées comme un 5px, espacées comme un 10px. Est en fait 10px avec seulement 10-8 = 2px visibles.
Appliqué à de petits éléments avec de grands coins arrondis, cela peut créer des effets amusants.
la source
Donc, en commençant par la réponse donnée et en appliquant le fait que CSS3 autorise plusieurs paramètres - le code ci-dessous est utile pour créer une boîte complète:
Il convient de noter que la taille de 10 pixels de l'arrière-plan donne la zone que le tiret et l'écart couvriront. Le 50% de la balise d'arrière-plan est la largeur réelle du tiret. Il est donc possible d'avoir des tirets de longueur différente de chaque côté de la bordure.
la source
Voir les documents MDN pour les valeurs disponibles pour
border-style
:En dehors de ces choix, il n'y a aucun moyen d'influencer le style de la bordure standard.
Si les possibilités ne sont pas à votre goût, vous pouvez utiliser CSS3
border-image
mais notez que la prise en charge du navigateur pour cela est encore très inégale.la source
Construire une solution à 4 arêtes basée sur la réponse de @ Eagorajose avec une syntaxe abrégée:
la source
C'est un sujet ancien, mais toujours très pertinent. La première réponse actuelle fonctionne bien, mais uniquement pour les très petits points. Comme Bhojendra Rauniyar l'a déjà souligné dans les commentaires, pour les points plus grands (> 2px), les points apparaissent carrés, pas ronds. J'ai trouvé cette page en recherchant des points espacés , pas des carrés espacés (ou même des tirets, comme certaines réponses ici utilisent).
Sur cette base, j'ai utilisé
radial-gradient
. En outre, en utilisant la réponse de Ukuser32 , les propriétés de point peuvent facilement être répétées pour les quatre bordures. Seuls les coins ne sont pas parfaits.L'
radial-gradient
attend :Ici, je voulais un point de 5 pixels de diamètre (2,5 pixels de rayon), avec 2 fois le diamètre (10 pixels) entre les points, totalisant jusqu'à 15 pixels. Le
background-size
devrait correspondre à ceux-ci.Les deux arrêts sont définis de telle sorte que le point est agréable et lisse: noir uni pour la moitié du rayon et qu'un dégradé pour le rayon complet.
la source
C'est une très vieille question mais elle a un rang élevé dans Google, donc je vais ajouter ma méthode qui pourrait fonctionner en fonction de vos besoins.
Dans mon cas, je voulais une bordure en pointillés épaisse qui avait une pause minimale entre les tirets. J'ai utilisé un générateur de motifs CSS (comme celui-ci: http://www.patternify.com/ ) pour créer un motif de 10 pixels de large par 1 px de haut. 9 pixels sont de couleur unie, 1 pixel est blanc.
Dans mon CSS, j'ai inclus ce modèle en tant qu'image d'arrière-plan, puis je l'ai mis à l'échelle en utilisant l'attribut background-size. Je me suis retrouvé avec un tiret répété de 20 pixels par 2 pixels, dont 18 pixels en trait plein et 2 pixels blancs. Vous pouvez le redimensionner encore plus pour une ligne pointillée très épaisse.
La bonne chose est que l'image est codée en tant que données, vous n'avez pas la demande HTTP externe supplémentaire, donc il n'y a pas de charge de performance. J'ai stocké mon image en tant que variable SASS afin de pouvoir la réutiliser dans mon site.
la source
Réponse courte: vous ne pouvez pas.
Vous devrez utiliser la
border-image
propriété et quelques images.la source
Tant de gens disent "Vous ne pouvez pas". Oui, vous pouvez. Il est vrai qu'il n'y a pas de règle CSS pour contrôler l'espace de gouttière entre les tirets mais CSS a d'autres capacités. Ne soyez pas si rapide à dire qu'une chose ne peut pas être faite.
Fondamentalement, la hauteur du bord supérieur (5px dans ce cas) est la règle qui détermine la "largeur" de la gouttière. Si vous devez bien sûr ajuster les couleurs en fonction de vos besoins. C'est aussi un petit exemple pour une ligne horizontale, utilisez gauche et droite pour faire la ligne verticale.
la source
J'ai fait une fonction javascript pour créer des points avec un svg. Vous pouvez ajuster l'espacement et la taille des points dans le code javascript.
la source
SI vous ne ciblez que les navigateurs modernes ET que vous pouvez avoir votre bordure sur un élément distinct de votre contenu, vous pouvez utiliser la transformation d'échelle CSS pour obtenir un point ou un tiret plus grand:
Il faut beaucoup de réglages de position pour l'aligner, mais cela fonctionne. En modifiant l'épaisseur de la bordure, la taille de départ et le facteur d'échelle, vous pouvez obtenir à peu près le rapport épaisseur-longueur souhaité. La seule chose que vous ne pouvez pas toucher est le rapport tiret-écart.
la source
scale(8)
c'est ce que j'ai fait - utilisez une image entrez la description de l'image ici
la source
AFAIK il n'y a pas moyen de le faire. Vous pouvez utiliser une bordure en pointillés ou peut-être augmenter légèrement la largeur de la bordure, mais obtenir des points plus espacés est impossible avec CSS.
la source
Vous pouvez créer une toile (via javascript) et dessiner une ligne pointillée à l'intérieur. Dans le canevas, vous pouvez contrôler la durée du tiret et l'espace entre les deux.
la source