J'ai une forme avec un bord comme celui-ci dans Photoshop:
Est-il possible de faire les triangles répétés comme une frontière avec CSS?
Vous pouvez utiliser les dégradés CSS3 pour créer un arrière-plan à motifs en zig-zag. Utilisez le pseudo after
css pour l’appliquer comme une bordure.
HTML:
<div class="header"><h1>This is a header</h1></div>
CSS:
.header{
color:white;
background-color:#2B3A48;
text-align:center;
}
.header:after {
content: " ";
display:block;
position: relative;
top:0px;left:0px;
width:100%;
height:36px;
background: linear-gradient(#2B3A48 0%, transparent 0%), linear-gradient(135deg, #272220 33.33%, transparent 33.33%) 0 0%, #272220 linear-gradient(45deg, #272220 33.33%, #2B3A48 33.33%) 0 0%;
background: -webkit-linear-gradient(#2B3A48 0%, transparent 0%), -webkit-linear-gradient(135deg, #272220 33.33%, transparent 33.33%) 0 0%, #272220 -webkit-linear-gradient(45deg, #272220 33.33%, #2B3A48 33.33%) 0 0%;
background: -o-linear-gradient(#2B3A48 0%, transparent 0%), -o-linear-gradient(135deg, #272220 33.33%, transparent 33.33%) 0 0%, #272220 -o-linear-gradient(45deg, #272220 33.33%, #2B3A48 33.33%) 0 0%;
background: -moz-linear-gradient(#2B3A48 0%, transparent 0%), -moz-linear-gradient(135deg, #272220 33.33%, transparent 33.33%) 0 0%, #272220 -moz-linear-gradient(45deg, #272220 33.33%, #2B3A48 33.33%) 0 0%;
background-repeat: repeat-x;
background-size: 0px 100%, 9px 27px, 9px 27px;
}
Source: CSS Zigzag Border avec un fond texturé
JSFiddle: http://jsfiddle.net/kA4zK/
Pour les futurs téléspectateurs, j’ai trouvé cette adaptation de la réponse de @ extramaster un peu plus simple.
C'est essentiellement la même chose, mais il utilise un moins de dégradés d'arrière-plan et permet à l'objet de support (.navbar
dans mon balisage) de s'afficher au lieu de coder en dur la deuxième couleur dans le zig-zag.
JsFiddle:http://jsfiddle.net/861gjx0b/2/
html:
<div class="header"><h1>This is a header</h1></div>
<nav class="navbar"></nav>
css:
.header{
position:relative;
color:white;
background-color:#2B3A48;
text-align:center;
}
.navbar {
background: #272220;
height:20px;
}
.header:after {
content: "";
position: absolute;
display: block;
height: 10px;
bottom: -10px; /* -height */
left:0;
right:0;
/* TODO Add browser prefixes */
background:
linear-gradient(
45deg, transparent 33.333%,
#2B3A48 33.333%, #2B3A48 66.667%,
transparent 66.667%
),linear-gradient(
-45deg, transparent 33.333%,
#2B3A48 33.333%, #2B3A48 66.667%,
transparent 66.667%
);
background-size: 8px 20px; /* toothSize doubleHeight */
background-position: 0 -10px; /* horizontalOffset -height */
}
Vous pouvez créer un triangle individuel en utilisant CSS assez facilement (il suffit de modifier les propriétés de la bordure). Pour que cela fonctionne, vous devrez générer vous-même un peu de balisage. Je recommanderais contre cette approche.
Il vaut mieux utiliser une image individuelle contenant un seul triangle (de préférence un fichier .png transparent), puis utiliser les propriétés background-image
et background-repeat
(repeat-x
) pour les lier à un div (votre "bordure").
Malheureusement, il n'y a pas encore de solution simple pour y parvenir en utilisant du CSS pur.
Il existe une propriété border-image dans CSS3 . Vous pouvez peut-être résoudre le problème comme vous le souhaitez. Plus ici http://www.w3schools.com/cssref/css3_pr_border-image.asp
Personnellement, je pense que clip-path est plus facile à utiliser/comprendre que les dégradés de fond complexes.
body {
font-family:Roboto,'Open Sans',Helvetica,sans-serif;
}
.container {
background:#ddd;
margin:0 auto;
max-width:800px;
padding:30px;
}
h1:first-child {margin:0;}
.jagged-bottom {
position:relative;
}
.jagged-bottom:after {
background:#ddd;
content:"";
height:2vw;
position:absolute;
top:100%;
left:0;
right:0;
clip-path:polygon(
0 0, 2.5% 100%, 5% 0, 7.5% 100%,
10% 0,12.5% 100%,15% 0, 17.5% 100%,
20% 0,22.5% 100%,25% 0, 27.5% 100%,
30% 0,32.5% 100%,35% 0, 37.5% 100%,
40% 0,42.5% 100%,45% 0, 47.5% 100%,
50% 0,52.5% 100%,55% 0, 57.5% 100%,
60% 0,62.5% 100%,65% 0, 67.5% 100%,
70% 0,72.5% 100%,75% 0, 77.5% 100%,
80% 0,82.5% 100%,85% 0, 87.5% 100%,
90% 0,92.5% 100%,95% 0, 97.5% 100%, 100% 0);
}
}
<div class="container jagged-bottom">
<h1>Looks Like A Receipt</h1>
<p>Simply adjust the clip path on the pseudo-element if you want more or fewer spikes, and the height if you want them to be taller or shorter.</p>
</div>