105 votes

Forme ondulée avec css

J'essaie de recréer cette image avec CSS :

wayvy shape

Je n'aurais pas besoin de le répéter. C'est ce que j'ai commencé mais il n'y a qu'une ligne droite :

#wave {
  position: absolute;
  height: 70px;
  width: 600px;
  background: #e0efe3;
}

<div id="wave"></div>

109voto

ThomasA Points 1491

Je pense que c'est la bonne façon de faire une forme comme vous le souhaitez. En utilisant les possibilités du SVG, et un conteneur pour garder la forme réactive.

svg {
  display: inline-block;
  position: absolute;
  top: 0;
  left: 0;
}
.container {
  display: inline-block;
  position: relative;
  width: 100%;
  padding-bottom: 100%;
  vertical-align: middle;
  overflow: hidden;
}

<div class="container">
  <svg viewBox="0 0 500 500" preserveAspectRatio="xMinYMin meet">
    <path d="M0,100 C150,200 350,0 500,100 L500,00 L0,0 Z" style="stroke: none; fill:red;"></path>
  </svg>
</div>

93voto

Cameron A Points 345

Je ne suis pas sûr que ce soit votre forme mais c'est proche - vous pouvez jouer avec les valeurs :

https://jsfiddle.net/7fjSc/9/

#wave {
  position: relative;
  height: 70px;
  width: 600px;
  background: #e0efe3;
}
#wave:before {
  content: "";
  display: block;
  position: absolute;
  border-radius: 100% 50%;
  width: 340px;
  height: 80px;
  background-color: white;
  right: -5px;
  top: 40px;
}
#wave:after {
  content: "";
  display: block;
  position: absolute;
  border-radius: 100% 50%;
  width: 300px;
  height: 70px;
  background-color: #e0efe3;
  left: 0;
  top: 27px;
}

<div id="wave"></div>

59voto

Patch92 Points 824

Mon implémentation utilise l'élément svg dans le html et j'ai aussi fait un générateur pour faire la vague que vous voulez :

https://smooth.ie/blogs/news/svg-wavey-transitions-between-sections

<div style="height: 150px; overflow: hidden;">
  <svg viewBox="0 0 500 150" preserveAspectRatio="none" style="height: 100%; width: 100%;">
    <path d="M0.00,92.27 C216.83,192.92 304.30,8.39 500.00,109.03 L500.00,0.00 L0.00,0.00 Z" style="stroke: none;fill: #e1efe3;"></path>
  </svg>
</div>

https://jsfiddle.net/1b8L7nax/5/

41voto

Daniel Danielecki Points 118

Récemment, un outil génial appelé Get Waves a été introduit. À partir de l'interface utilisateur, vous pouvez créer vos propres vagues et les exporter au format SVG. Pour cela, il suffit d'aller dans la section https://getwaves.io/ et je l'apprécie !

Editar:

Récemment, j'ai aussi découvert un nouvel outil https://shapedivider.app/

Edit2 :

Encore une autre, celle-ci semble avancée avec les points quand casser les courbes. https://www.svgwaves.io

27voto

PVermeer Points 662

Mon implémentation CSS pure basée sur ce qui précède avec une largeur de 100%. J'espère que cela vous aidera !

#wave-container {
  width: 100%;
  height: 100px;
  overflow: hidden;
}

#wave {
  display: block;
  position: relative;
  height: 40px;
  background: black;
}

#wave:before {
  content: "";
  display: block;
  position: absolute;
  border-radius: 100%;
  width: 100%;
  height: 300px;
  background-color: white;
  right: -25%;
  top: 20px
}

#wave:after {
  content: "";
  display: block;
  position: absolute;
  border-radius: 100%;
  width: 100%;
  height: 300px;
  background-color: black;
  left: -25%;
  top: -240px;
}

<div id="wave-container">
  <div id="wave">
  </div>
</div>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X