2017-01-06 12 views
8

Udało mi się z powodzeniem użyć shape-outside: polygon(...) i clip-path: polygon(...) do utworzenia pożądanego kształtu wielokąta.Jak dopasować akapit wewnątrz wieloboku css

Widziałem wiele stron odnoszących się do korzystania z shape-inside, a jednak przeczytałem, że shape-inside został wycofany i nie ma zamiany. Zostały również napisane w 2014 roku, więc mam nadzieję, że od tego czasu CSS3 się zmienił.

Po obejrzeniu w Internecie, udało mi się złożyć w całość coś, co działa pod prawie. Podoba mi się kształt, ale teraz potrzebuję zawijania tekstu wewnątrz kształtu z ukrytym przelewem.

Widziałem wskazówki dotyczące ::before, ale nadal nie rozumiem, w jaki sposób to pomoże. Testowanie nie przyniosło żadnych rezultatów.

Niezależnie od tego, czy jest to proste, czy skomplikowane, jak mogę użyć CSS do zawijania tekstu w wielokącie? A może rozwiązanie leży poza CSS? Czy muszę zastosować inne podejście, takie jak jQuery?

This is the polygon with text clipped off.

CSS

/* 
For reference:  
@vertex1: 120px; 
@vertex2: @vertex1*2; 
*/ 

.diamondContainer { 
    display: block;  
    position: absolute; 
    text-align: center; 
    width: @vertex2; 
    height: @vertex2; 
    overflow: hidden; /* hide anything longer than allowed string length */ 

    /* This is a diamond shape */  
    shape-outside: polygon(@vertex1 0, @vertex2 @vertex1, @vertex1 @vertex2, 0 @vertex1);  
    clip-path: polygon(@vertex1 0, @vertex2 @vertex1, @vertex1 @vertex2, 0 @vertex1); 
} 

HTML

<div class="diamondOuter"> 
    <div class="diamondWrapper"> 
     <div class="diamondContainer diamondCell2"> 
      <span><strong>Title Text</strong><br />Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.</span> 
     </div> 
    </div> 
</div> 

Odpowiedz

5

ponownie przyjrzeć shape-outside.

Nie ustawia się go na kontenerze tekstowym, ale na innych elementach wokół tekstu.

W twoim przypadku możesz potrzebować co najmniej 2 div, aby tekst mógł się swobodnie poruszać.

Istnieje przykład tekstu przepływającego między 2 polygon s na tej stronie.

https://www.html5rocks.com/en/tutorials/shapes/getting-started/

Nadzieja to pomaga.

enter image description here

+0

Pomogło to. Musiałem ponownie przemyśleć mój paradygmat, używając lewych i prawych div jak formy. – RandomHandle

+0

cieszymy się z pomocy. pls nie zapomnij zaznaczyć odpowiedzi na pytanie: D –

Powiązane problemy