Proprietatea shape-outside

Proprietatea shape-outside permite definirea unor forme nestandard pentru fluxul elementelor flotante. Elementele adiacente vor fluxa în jurul formei definite, și nu în jurul containerului rectangular.

Sintaxă

cssselector {
  shape-outside: valoare;
}

Valori

Valoare Descriere
circle() Formă circulară pentru flux
ellipse() Formă eliptică pentru flux
polygon() Formă poligonală arbitrară
url() Formă bazată pe canalul alfa al imaginii
margin-box Utilizează marginile margin (valoarea implicită)

Exemplu

Să creăm o formă circulară pentru flux pentru un element flotant. Folosim proprietățile shape-outside și clip-path:

html<div class="shape"></div>
<p>
  some long text
</p>
css.shape {
  width: 150px;
  height: 150px;
  float: left;
  shape-outside: circle(50%);
  clip-path: circle(50%);
  background: #3498db;
}

p {
  width: 500px;
  text-align: justify;
}

Результат:

Exemplu

Să definim un spațiu (margin) folosind proprietatea shape-margin:

html<div class="shape"></div>
<p>
  some long text
</p>
css.shape {
  width: 150px;
  height: 150px;
  float: left;
  shape-outside: circle(50%);
  shape-margin: 10px;
  clip-path: circle(50%);
  background: #3498db;
}

p {
  width: 500px;
  text-align: justify;
}

Результат:

Exemplu

Fără proprietatea clip-path textul va fluxa în jurul cercului, dar elementul nu va avea forma circulară:

html<div class="shape"></div>
<p>
  some long text
</p>
css.shape {
  width: 150px;
  height: 150px;
  float: left;
  shape-outside: circle(50%);
  background: #3498db;
}

p {
  width: 500px;
  text-align: justify;
}

Результат:

Exemplu

O altă formă a elementului:

html<div class="shape"></div>
<p>
  some long text
</p>
css.shape {
  width: 200px;
  height: 200px;
  background-color: #4CAF50;
  float: left;
  shape-outside: polygon(0% 0%, 100% 50%, 0% 100%);
  clip-path: polygon(0% 0%, 100% 50%, 0% 100%);
  margin-right: 20px;
  margin-bottom: 20px;
}

p {
  width: 500px;
  text-align: justify;
}

Результат:

Exemplu

O altă formă a elementului:

html<div class="shape"></div>
<p>
  some long text
</p>
css.shape {
  width: 200px;
  height: 200px;
  background-color: #4CAF50;
  float: left;
  shape-outside: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
  clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
  margin-right: 20px;
  margin-bottom: 20px;
}

p {
  width: 500px;
  text-align: justify;
}

Результат:

Vezi și

  • proprietatea clip-path,
    care creează forma vizibilă a elementului
  • proprietatea float,
    necesară pentru funcționarea shape-outside
  • proprietatea shape-margin,
    care adaugă un spațiu în jurul formei