制作漫画
为证明这个理论,我制作了个简单的论据---一张Mai An Noa的图画。 用PhoteShop切成了三部分,每一份是一个独立的JPEG图片。
整合成HTML代码如下:
<div id="strip">
<figure id="panel1">
<img src="/images/flexbox/5main-1.webp" alt="A photograph of a man kneeling in a parking garage, pleading for his life">
<figcaption>“WAIT…”</figcaption>
</figure>
<img src="/images/flexbox/5miain-mid.webp" alt id="panel2">
<figure id="panel3">
<img src="/images/flexbox/5main-2.webp" alt="A backlit photograph of a man pointing a gun">
<figcaption>CLICK</figcaption>
</figure>
</div>
为使连续的图画水平放置,我将图画的容器设制成flex,几张分离的图像进行垂直排列。
#strip { display: flex; justify-content: space-between; align-items: center; }
(注意:为了简单起见,在上面的示例中只显示最终的flexbox属性。)
一般情况下,这几张图片会水平占满容器空间。为了改变这种情况,并在每张画上加上字幕 我们给每张画加上width和position属性。
#panel1 { width: 40%; position: relative; }
#panel3 { width: 33%; position: relative; }
此时也想到可以用border-image属性给大量的字幕加上边框。
#strip img {
border-image: url('frame.png') 22 16 16 22;
background: #000;
border-width: 12px;
border-style: solid;
}
最终,给字幕加上给应景的Sequentialist字体。
#strip figcaption {
background: #fff;
font-size: 1.2rem;
padding: 1rem;
display: inline-block;
position: absolute;
top: 2rem;
right: -2rem;
font-family: Sequentialist BB, Comic Sans, cursive;
border-image: url('lettering-frame.png') 11 10 14 12;
border-width: 6px;
background-clip: padding-box;
}
给每个字幕的视觉效果稍作处理。
#panel1 figcaption { letter-spacing: .3rem; }
#panel3 figcaption { left: -2rem; width: 4rem; font-style: italic; }
flexbox的内容是自适应的。在较窄的窗口下,中间的的图画在设计上不再显示(没有字幕的不重要),所以把它隐藏掉。
@media screen and (max-width: 45rem) {
#panel2 {
display: none;
}
}
某种情况下,垂直排列能够更方便的阅读
@media screen and (max-width: 40rem) {
#strip {
flex-direction: column;
}
#panel1,
#panel3 {
width: 60%;
}
#panel3 {
align-self: flex-end;
}
}
可以通过flexbox改变漫画的显示顺序来讲述一个不同的故事,这也是件很有趣的事。
@media screen and (max-width: 40rem) {
#panel1 {
order: 3;
}
#panel3 figcaption {
display: none;
}
}