12

I was wondering if any of you knew if it was possible to make anything looking like this :

side by side slanted paragraphs

I know about http://www.infimum.dk/HTML/slantinfo.html but I can't put any text in the slanted areas.

web-tiki
  • 99,765
  • 32
  • 217
  • 249
user684142
  • 123
  • 5
  • 1
    In the [Eric Meyer's Slantastic Demo](http://meyerweb.com/eric/css/edge/slantastic/demo.html) you can see there is text in the slant... – Kyone Mar 30 '11 at 14:57
  • You can't make this work with a dynamic amount of text unless you use JavaScript. Is that an option for you? – thirtydot Mar 30 '11 at 15:00
  • Well looking at the source of eric's demo it is pretty hard to automatically reproduce such an effect because the background is specially forged and the text is an overlay also specially designed to fit perfectly into it. doing this dynamically could get pretty messy. – ITroubs Mar 30 '11 at 15:01
  • I will use Javascript to have it more flexible. – user684142 Apr 01 '11 at 07:59

3 Answers3

8

Did it with a bit of javascript: http://jsfiddle.net/billymoon/AvmE8/

But that is just for convenience, you can do the same with HTML.

Will not apply to all circumstances, and will need a little tweaking, but can be made to work for things you know the approximate length of - or know the upper bound of.

html:

<div id='left'>whatever text</div><div id='right'>random text</div>

css:

#left, #right{
    text-align: justify;
    position: absolute;
    width:60%;
    right:0;
}
#right{
    right:auto;
    left:0;
}

js:

for (i = 1; i < 40; i++) {
    $('<div />').css({
        border: '1px solid silver',
        height: 10,
        width: (5 * i),
        float: 'left',
        clear: 'left'
    }).prependTo($('#left'))
    $('<div />').css({
        border: '1px solid gold',
        height: 10,
        width: (200 - (5 * i)),
        float: 'right',
        clear: 'right'
    }).prependTo($('#right'))
}
Billy Moon
  • 57,113
  • 24
  • 136
  • 237
  • of course you need to remove the silver and gold borders for the divs - I left them in so you can see how it works. I like this question - deserves the 5 up-votes!! We need more diagonal lines on the web! – Billy Moon Mar 30 '11 at 15:33
  • Thanks for your quick answer. I think your option is the most flexible (using js) so i'll try it and send you a message when done. Thanks again. – user684142 Apr 01 '11 at 08:01
  • I would like to see this idea built upon and developed into more flexible solution. It can be done with css/html only - and therefore server side scripting, but js is very convenient. Just needs a way to determine what to do for different amounts of text etc... I am interested in where you take this. cheers. – Billy Moon Apr 01 '11 at 11:35
  • we're done, here is what it look like ! thanks again billy moon – user684142 Apr 29 '11 at 06:58
  • There might be a better way soon using CSS shapes: http://alistapart.com/article/css-shapes-101 – Billy Moon May 04 '14 at 19:08
4

Here is an example of the desired layout using the CSS shape-outside property even though it has the status of "candidate recommendation" and should not be used as it may change at any moment and has poor browser support :

DEMO (only modern webkit browsers)

side by side slanted text containers

Note : this layout would be much easier to make by combining shape-outside and shape-inside (i.e. no absolute positioning) but currently no browsers I know of support shape-inside.

p{
  width:550px;
  text-align:justify;
  overflow:hidden;
}
#right{
  position:absolute;
  top:0; left:355px;
}
p:before{
  content:'';
  width:40%;
  height:710px;
}
#left:before{
  float:right;
  shape-outside: polygon(100% 0, 100% 100%, 20% 100%);
}
#right:before{
  float:left;
  shape-outside: polygon(0 0, 100% 0, 20% 100%);
}
<p id="left">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac quam dignissim, tristique eros eget, aliquam nulla. Pellentesque dapibus mattis massa, eu dapibus arcu commodo vel. Vestibulum id suscipit felis, nec malesuada lacus. Nam lacinia elementum mauris ut lacinia. Nulla sed congue mi, in vehicula sapien. Nulla at ipsum sed metus feugiat interdum. In ultricies sem nec facilisis tincidunt. Suspendisse commodo ex sed ullamcorper gravida. Mauris velit mauris, egestas et est sit amet, ultricies mollis ipsum. Nunc sit amet quam ac nibh molestie porttitor sit amet sit amet ante. Mauris sollicitudin sit amet ligula non gravida.Curabitur auctor sollicitudin ante, ut rhoncus massa. Ut eu iaculis orci. Aliquam sit amet tortor tellus. Quisque iaculis tellus varius pellentesque blandit. Aenean sed sapien et ex vehicula bibendum. Proin nec orci id mauris semper facilisis. Vivamus massa purus, commodo et ullamcorper dignissim, dictum vitae tellus. Duis vel lacus posuere, pulvinar felis sit amet, viverra enim. Sed elementum eros et sem luctus, sed volutpat metus finibus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam sodales tincidunt rhoncus.Pellentesque felis dolor, tempus ac ex ac, dictum lacinia ligula. Quisque ornare hendrerit erat, tincidunt dignissim quam auctor id. Duis pellentesque enim in ante pretium luctus. Morbi dignissim enim sollicitudin augue venenatis, porta sodales tortor auctor. Mauris tincidunt dui at lectus commodo cursus. In bibendum ac nunc accumsan porta. Aliquam ac sem vitae ligula pellentesque pulvinar non in velit. In molestie diam eu vulputate iaculis. Mauris fermentum, elit sit amet tincidunt tempor, lorem arcu iaculis leo, aliquam feugiat nulla eros eu enim. Pellentesque hendrerit magna ut ligula ultricies, in euismod sapien luctus. Suspendisse potenti. Vestibulum porta malesuada egestas. Cras vehicula est a purus tempus, eu volutpat diam tempus.Integer eu est faucibus, pulvinar eros at, porta enim. Aenean nec lorem nec arcu fringilla lacinia vitae non quam. Nullam ultrices, felis vitae hendrerit luctus, mi turpis tincidunt ex, eget pulvinar nulla turpis quis tellus. Phasellus nec lorem vel turpis consectetur viverra. Cras a tellus mi. Pellentesque congue sodales orci. Curabitur at facilisis nunc. Donec vel congue metus. Suspendisse id dui leo. Aenean sed dolor aliquet, molestie justo et, sodales risus. Proin ornare sagittis lectus quis condimentum.</p>
<p id="right">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac quam dignissim, tristique eros eget, aliquam nulla. Pellentesque dapibus mattis massa, eu dapibus arcu commodo vel. Vestibulum id suscipit felis, nec malesuada lacus. Nam lacinia elementum mauris ut lacinia. Nulla sed congue mi, in vehicula sapien. Nulla at ipsum sed metus feugiat interdum. In ultricies sem nec facilisis tincidunt. Suspendisse commodo ex sed ullamcorper gravida. Mauris velit mauris, egestas et est sit amet, ultricies mollis ipsum. Nunc sit amet quam ac nibh molestie porttitor sit amet sit amet ante. Mauris sollicitudin sit amet ligula non gravida.Curabitur auctor sollicitudin ante, ut rhoncus massa. Ut eu iaculis orci. Aliquam sit amet tortor tellus. Quisque iaculis tellus varius pellentesque blandit. Aenean sed sapien et ex vehicula bibendum. Proin nec orci id mauris semper facilisis. Vivamus massa purus, commodo et ullamcorper dignissim, dictum vitae tellus. Duis vel lacus posuere, pulvinar felis sit amet, viverra enim. Sed elementum eros et sem luctus, sed volutpat metus finibus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam sodales tincidunt rhoncus.Pellentesque felis dolor, tempus ac ex ac, dictum lacinia ligula. Quisque ornare hendrerit erat, tincidunt dignissim quam auctor id. Duis pellentesque enim in ante pretium luctus. Morbi dignissim enim sollicitudin augue venenatis, porta sodales tortor auctor. Mauris tincidunt dui at lectus commodo cursus. In bibendum ac nunc accumsan porta. Aliquam ac sem vitae ligula pellentesque pulvinar non in velit. In molestie diam eu vulputate iaculis. Mauris fermentum, elit sit amet tincidunt tempor, lorem arcu iaculis leo, aliquam feugiat nulla eros eu enim. Pellentesque hendrerit magna ut ligula ultricies, in euismod sapien luctus. Suspendisse potenti. Vestibulum porta malesuada egestas. Cras vehicula est a purus tempus, eu volutpat diam tempus.Integer eu est faucibus, pulvinar eros at, porta enim. Aenean nec lorem nec arcu fringilla lacinia vitae non quam. Nullam ultrices, felis vitae hendrerit luctus, mi turpis tincidunt ex, eget pulvinar nulla turpis quis tellus. Phasellus nec lorem vel turpis consectetur viverra. Cras a tellus mi. Pellentesque congue sodales orci. Curabitur at facilisis nunc. Donec vel congue metus. Suspendisse id dui leo. Aenean sed dolor aliquet, molestie justo et, sodales risus. Proin ornare sagittis lectus quis condimentum.</p>

This property can also (combined with the clip-path) alow you to slant text next to a cliped image:

DEMO (modern webkit browsers only)

slanted text area next to image

References:

web-tiki
  • 99,765
  • 32
  • 217
  • 249
0

Thinking out loud here, but what if you have 2 side by side vertical divs. In the left div use Eric Meyer's Slantastic technique on the right side. In the right div use it on the left side.

dnagirl
  • 20,196
  • 13
  • 80
  • 123