新时代创意布局不完全指南

简介: 新时代创意布局不完全指南

依稀记得,某年广东语文高考作文的相关描述 -- “有时,常识虽易知而难行,有时,常识须推陈而出新”。人的想象力和创造力很容易在对常识的一贯认知中被削弱。

CSS 更新之快,只能不断鞭策自己持续学习,一直呆在舒适区中,很容易就跟不上节奏。当然,不仅仅是 CSS,对于任何技术任何行业也可以套用这句话。


回归本文的主题 -- 新时代布局。运用现有的 CSS 技术,我们是否可以大胆的跳出常规思维,不再局限于矩形框框一块一块,试着更加艺术一些?


像是下面这几个这样


不拘一格的线条:


65594561-a3baf200-dfc5-11e9-9443-13485aae6fcb.png

文字随图片的边缘排列:

6c2b33a2c08745a7a99ae703fc9b33cf_tplv-k3u1fbpfcp-zoom-1.png

不再是横平竖直:

65595328-1e384180-dfc7-11e9-8ec2-51dd03a99003.png


又或者造型怪异的网格:

be066f286b0d46bd8ba59bf3d56f178a_tplv-k3u1fbpfcp-zoom-1.png


是不是很有意思?不拘一格的布局能够给页面吸引更多的目光和流量,当然这也需要我对 CSS 掌握的足够好,才能在有限的属性中创造更多不同的可能性。


grid 布局



说到新时代布局和创意布局,就不得不提到 Grid 的布局。


CSS Grid 布局的二维特性,让我们相较于传统的float布局、定位布局、flex 布局有了对页面更强大的掌控力。


利用 Grid 布局,切割页面进行分块


这里,我们利用 Grid 布局的特性,可以将页面按照我们的所想任意切割成不同的块状区域。


这里推荐一些能够方便我们进行 Grid 布局的工具:



利用这个工具,可以快速创建得到自己想要 Grid 布局,并且拿到对应的 CSS,非常的简单便捷。


这里我利用工具,将页面切割成了 A、B、C、D、E、F 6 块区域:

ba58dc2a25e4413b96102dbdffe8782f_tplv-k3u1fbpfcp-zoom-1.png


复制右侧的 HTML 和 CSS,可以快速的得到这样一个布局,我把代码拷贝到了 CodePen,简单添加了一下底色,我们就可以基于这个布局再去做任何事情:

f6bbaa214f044342b5b470376c780e4f_tplv-k3u1fbpfcp-zoom-1.png

CodePen Demo -- Grid Layout Demo


利用 Grid 布局配合 clip-path 实现 GTA5 封面


这里,我们可以利用 Grid 布局配合 clip-path 实现 GTA5 封面,像是这样:


c2eff9d5c39b4995b0eff7c4304e87c4_tplv-k3u1fbpfcp-zoom-1.png

我们将一个 4x4 的 Grid 网格,分割为 9 个不同的部分:


7eb2b9c6f9604105b24d849081d9d204_tplv-k3u1fbpfcp-zoom-1.png

再利用 clip-path,根据封面图片的的造型,对每一块 Gird item 进行二次裁剪:

bbe143a2fcc44b9eb99e7f80c60026ed_tplv-k3u1fbpfcp-zoom-1.png


ok,最后把里面的色块替换成具体的图片即可:

119248659-3d84d900-bbc5-11eb-987a-d3ebe0569bd5.png


CodePen Demo -- GTA 5 poster ( Grid and Clip Path)


当然这里有一个槽点,最终还是用了 9 张图片,那为什么不一开始直接用一张图片呢?😃


Grid 是在进行复杂布局的过程中非常好的帮手,它非常适合各种不规则网格块的布局,这里再提供一个 DEMO:


29401e086f6c41a78508d62c23600fe9_tplv-k3u1fbpfcp-zoom-1.png

作者是 Olivia Ng,Demo 的链接 -- CodePen Demo -- CSS Grid: Train Ticket


瀑布流布局



瀑布流布局在现代布局中也非常常见,通常在一些照片墙中使用。像是这样:


image.png


在之前,不借助 JavaScript,我们有 3 种纯 CSS 的方式可以实现伪瀑布流布局(注意,这里是伪瀑布流),分别是:



你可以点进 Demo 看看,利用上述三种方式实现的瀑布流布局,缺点比较明显:


  • 对于 flex 和 column 布局而言,只能实现竖直排布的瀑布流布局,第一列填充满了填充第二列,以此类推
  • 对于 Grid 布局而言,缺点则是无法自动适配不同的高度,需要手动指定每一个元素区块大小


而在未来,标准基于 Grid 布局实现了 grid-template-rows: masonry,利用该标准,我们可以快速利用 Grid 实现水平排布的瀑布流布局,目前,你可以在 Firefox 体验该功能。


使用 grid-template-rows: masonry 实现水平方向排布的瀑布流布局


grid-template-rows: masonry 是 firefox 在 firefox 87 开始支持的一种基于 grid 布局快速创建瀑布流布局的方式。并且 firefox 一直在推动该属性进入标准当中。


从 firefox 87 开始,在浏览器输入网址栏输入 about:config 并且开启 layout.css.grid-template-masonry-value.enabled 配置使用。Can i use -- grid-template-rows: masonry

0ccadd3e85094e0f9524af86673b6fe4_tplv-k3u1fbpfcp-zoom-1.png


正常而言,我们想要实现瀑布流布局还是需要花费一定的功夫的,即便是基于 grid 布局。在之前,我们通过 grid 布局,通过精细化控制每一个 grid item,可以实现竖直方向的瀑布流布局:


<div class="g-container">
  <div class="g-item">1</div>
  <div class="g-item">2</div>
  <div class="g-item">3</div>
  <div class="g-item">4</div>
  <div class="g-item">5</div>
  <div class="g-item">6</div>
  <div class="g-item">7</div>
  <div class="g-item">8</div>
</div>
.g-container {
    height: 100vh;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(8, 1fr);
}
.g-item {
    &:nth-child(1) {
        grid-column: 1;
        grid-row: 1 / 3;
    }
    &:nth-child(2) {
        grid-column: 2;
        grid-row: 1 / 4;
    }
    &:nth-child(3) {
        grid-column: 3;
        grid-row: 1 / 5;
    }
    &:nth-child(4) {
        grid-column: 4;
        grid-row: 1 / 6;
    }
    &:nth-child(5) {
        grid-column: 1;
        grid-row: 3 / 9;
    }
    &:nth-child(6) {
        grid-column: 2;
        grid-row: 4 / 9;
    }
    &:nth-child(7) {
        grid-column: 3;
        grid-row: 5 / 9;
    }
    &:nth-child(8) {
        grid-column: 4;
        grid-row: 6 / 9;
    }
}


效果如下:

b7bfd1ed8d5b458f82ed2713ee200316_tplv-k3u1fbpfcp-zoom-1.png

CodePen Demo -- CSS Grid 实现伪瀑布流布局


在上述 Demo 中,使用 grid-template-columns、grid-template-rows 分割行列,使用 grid-row控制每个 grid item 的所占格子的大小,但是这样做的成本太高了,元素一多,计算量也非常大,并且还是在我们提前知道每个元素的高宽的前提下。


而在有了 grid-template-rows: masonry 之后,一切都会变得简单许多,对于一个不确定每个元素高度的 4 列的 grid 布局:


.container {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}


正常而言,看到的会是这样:

98ab4e14ea214afaba3c0239326d38cd_tplv-k3u1fbpfcp-zoom-1.png


简单的给容器加上 grid-template-rows: masonry,表示竖方向上,采用瀑布流布局:


.container {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
+ grid-template-rows: masonry;
}


便可以轻松的得到这样一种水平方向顺序排布元素的瀑布流布局:

efe6d64f41a14f8bbecf30aef0e3ea60_tplv-k3u1fbpfcp-zoom-1.png


如果你在使用 firefox,并且开启了 layout.css.grid-template-masonry-value.enabled 配置,可以戳进下面的 DEMO 感受一下:


CodePen Demo -- grid-template-rows: masonry 实现瀑布流布局


多栏布局



多栏布局也属于现在我们能够掌控的布局之一,利用 CSS 较为新的特性 Multiple-column Layout Properties


最简单的多栏布局,我们只需要用到 column-count 或者 column-width。

假设我们有如下 HTML:


<p>Lorem ipsum dolor sit amet consectetur adipisicing elit...</p>


简单的 3 列布局:

p {
    width: 800px;
    column-count: 3;
    font-size: 16px;
    line-height: 2;
}


通过 column-count: 3 指定 3 栏。

92087343e4e34890b7b3f2024c37177d_tplv-k3u1fbpfcp-zoom-1.png

column-gap 控制间距 & column-rule 控制列与列间样式


接下来,我们再了解下 column-gap 和 column-rule


  • column-gap:控制列与列之间的间隔,默认为关键字 normal,数值上为 1em
  • column-rule:控制列与列之间的样式规则,其写法与 border 类似,指定列之间的装饰线


还是如下 HTML:


<p>Lorem ipsum dolor sit amet consectetur adipisicing elit...</p>

简单的 3 列布局:


p {
    width: 800px;
    column-count: 3;
    font-size: 16px;
    line-height: 2;
+   column: 1px solid #999;
+   column-gap: 2em;
}


98fd8ee4b9684358af9a6a0ea86935b5_tplv-k3u1fbpfcp-zoom-1.png

CodePen Demo -- CSS multi column Layout Demo


column-span 设置跨列


接着,还有一个很有意思的属性 column-span,用于设置元素的跨列展示。


我们首先利用多列布局,实现这样一个类似于报纸排版的布局样式。


<div class="g-container">
    <p>Lorem ipsum dolor sit amet ... </p>
    <h2>Title Lorem ipsum dolor sit amet consectetur adipisicing elit title</h2>
    <p>Lorem ipsum dolor sit amet ... </p>
</div>


.g-container {
    width: 800px;
    column-count: 3;
    column-rule: 1px solid #aaa;
    column-gap: 2em;
}
h2 {
    margin: 14px 0;
    font-size: 24px;
    line-height: 1.4;
}


大概就是多列布局中嵌套标题,标题的加粗并且字号大一点:

bf8c7947c8a74d0db7142c9ad40b3afd_tplv-k3u1fbpfcp-zoom-1.png

通过给 h2 设置 column-span: all,让 h2 标题跨列多列进行展示,改动一下 CSS:


h2 {
    margin: 14px 0;
    font-size: 24px;
    line-height: 1.4;
+   column-span: all;
+   text-align: center;
}


即可得到这样一个布局:

f26e03db685247bb9b7612ea27f38fe0_tplv-k3u1fbpfcp-zoom-1.png

CodePen Demo -- CSS multi column Layout Demo 2


多栏布局搭配其他布局实现更复杂的布局


当然,column-span 有个缺陷,就是它的取值只有 column-span: all 或者是 column-span: none,也就是要么横跨所有的列,要么不跨列。


如果现在我有一个 3 列布局,但是只希望其中的标题横跨两列,column-span: all 就无法实现了。


但是,通过嵌套其他布局,我们可以巧妙的对多列布局再进行升华,譬如 rachelandrew 就实现了这样一种嵌套布局:

<div class="container">
  <article>
    <p>By way of precaution ...</p>
    <h2>the first that ever burst Into that silent sea;</h2>
    <p>and with what ...</p>
  </article>
  <aside>
      <img src="demo.jpg">
      <figcaption>The Authoress, her Father and Mr. Spencer making an ascent</figcaption>
  </aside>
</div>


通过一个 2 列的 Grid 布局,嵌套一个两列的 multi-column 布局,大致的 CSS 如下:

.container {
  max-width: 800px;
  display: grid;
  grid-gap: 1em;
  grid-template-columns: 2fr 1fr;
  align-items: start;
}
h2 {
  column-span: all;
  text-align: center;
}
.container article {
  column-count: 2;
  column-gap: 2em;
  column-rule: 1px solid #ccc;
}
.container aside {
  border-left: 1px solid #ccc;
  padding: 0 1em;
}


这样,我们就能实现视觉上的横跨任意列的标题:

f472720a809a4b21903bfbfdae7cd7be_tplv-k3u1fbpfcp-zoom-1.png

完整的 Demo 代码你可以戳这里:CodePen Demo -- Smashing Multicol: mixing layout methods -- By rachelandrew


shape-outside 让布局插上想象的翅膀


OK,进入下一个模块,主角是 shape-outside。


在之前,我也有写过一篇关于 shape-outside 的文章 奇妙的 CSS shapes,感兴趣的同学也可以先看看。


shape-outside CSS 属性定义了一个可以是非矩形的形状,相邻的内联内容应围绕该形状进行包装。


利用它,我们就能够很好的实现各种非横平竖直的布局,让布局真正的活起来。

图文排列的交界处,可以是斜的,像是这样:

8ef47ffc479141288940cf177179a5e5_tplv-k3u1fbpfcp-zoom-1.png


CodePen Demo -- FCC: Build a Tribute Page - Michel Thomas by Stephanie

也可以是弯曲的,像是这样:


eec5e84709c64d87bcdac25cceb65b3c_tplv-k3u1fbpfcp-zoom-1.png


CodePen Demo -- shape-outside: circle Demo

甚至,它是还可以动态变化的不规则容器:

119656970-ee0d0a00-be5d-11eb-8b4b-9152ce0c0348.gif

CodePen Demo -- shape-outside animation

合理使用,我们就可以如报纸版创造各种花式布局效果:

image.png


不仅如此,袁川老师 甚至使用了 shape-outside 进行了一些 CSS 艺术创作,一起欣赏一下:


119364875-f50f0d80-bce1-11eb-8765-2153174f02cb.gif

CodePen Demo -- shape-outside -- Face By yuanchuan

以开篇的这张图为例子:

e6548b7067fa48b5906d7a17975afec7_tplv-k3u1fbpfcp-zoom-1.png


就是巧妙的运用 shape-outside 的例子,它将整个布局分为了 7 块,每一块分别使用 shape-outside 进行精细化的控制,实际上完整的布局是这样的:

528370c5d5714c7da556bf9a774852e3_tplv-k3u1fbpfcp-zoom-1.png




在这篇文章中,对这个 DEMO 进行了非常详细的阐述:A CSS Venn Diagram

如果你也对 shape-outside 感兴趣,在这份收藏夹里,收藏了 CodePen 上非常多精良的 shape-outside 布局 DEMO,不妨一看学习学习 -- CSS Shapes Experiments


总结一下



在今天,实现有创意的布局也需要我们掌握更多的 CSS 属性与技巧,本文粗略的介绍了几种在今天实现创意布局的有益属性:


  • Grid 布局全家桶以及利用 Grid 实现瀑布流布局
  • 多栏布局 multiple-column 及多栏布局嵌套其他布局
  • shape-outside 的各种应用
  • 在上述布局中穿插使用 clip-path、transform 等属性以增强各种布局


当然,CSS 能实现的远不止如此,像是滚动视差、3D 变换等等都是可以利用 CSS 实现并且再融合进布局当中的属性。当然这也需要我们有创造和发现美的眼睛和思维。

目录
相关文章
|
7月前
|
人工智能 搜索推荐 程序员
AIGC时代创意的发展方向
【2月更文挑战第13天】AIGC时代创意的发展方向
55 2
AIGC时代创意的发展方向
|
1月前
|
前端开发 UED 开发者
前端界的新潮流:掌握这些设计趋势,让你的作品引领时尚!
前端设计从技术边缘走向数字时代的前沿,带来了暗黑模式、流体布局和玻璃效果等新趋势。暗黑模式以优雅的视觉风格和节能优势赢得用户喜爱;流体布局使网页自适应各种屏幕尺寸,提升用户体验;玻璃效果通过模糊和透明度的结合,为应用增添时尚感。这些趋势不仅美化了界面,还提升了功能性和互动性。
28 3
|
2月前
|
人工智能 区块链 vr&ar
元宇宙中的艺术与文化:虚拟画廊的崛起
【10月更文挑战第28天】随着科技的发展,元宇宙逐渐成为现实,为文化艺术领域带来了巨大潜力。虚拟画廊作为数字艺术的展示平台,利用3D建模、VR、AR等技术,打破物理空间限制,提供沉浸式艺术体验。观众可通过虚拟现实设备自由浏览、欣赏和互动,促进艺术传播和社交交流,未来还将结合AI和区块链等技术,进一步提升用户体验和版权保护,成为文化艺术的重要发展方向。
|
5月前
|
机器学习/深度学习 设计模式 人工智能
AIGC到底如何改变创意设计?
**AIGC技术正重塑创意设计行业,提升效率,拓宽创意边界。设计师通过与AI协作,产生更多元设计方案,同时高质量的图像生成加强了与客户沟通。Adobe国际认证成为掌握AIGC技术的关键,助力设计师适应变革,提升竞争力,并推动行业标准发展。随着技术发展,持续学习变得至关重要,Adobe认证为此提供平台,支持设计师的职业成长。**
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI与创意产业:艺术与技术的交叉点
【10月更文挑战第10天】AI与创意产业的融合是未来的必然趋势。这种融合不仅改变了艺术创作的方式,还提升了创意产业的效率和创新能力。然而,我们也需要认识到AI在创意产业中的应用所面临的挑战和问题,并寻找解决方案。通过科技与艺术的跨界合作,我们可以共同推动创意产业的创新发展,为人类社会带来更多的美好和惊喜。 AI与创意产业的交叉点既是机遇也是挑战。只有不断探索和创新,我们才能在这个充满变革的时代中立于不败之地。
|
5月前
|
人工智能
[AI 快手 LivePortrait] 引领高效肖像动画新时代
快手推出了 LivePortrait,具备拼接与重定向控制的高效肖像动画,下载代码,准备环境,下载预训练权重并开始推理。
[AI 快手 LivePortrait] 引领高效肖像动画新时代
|
4月前
|
存储 人工智能 弹性计算
探索艺术的无限可能 —— AI绘画,让创意触手可及
现在就来体验AI绘画方案,让我们一起唤醒沉睡的艺术灵魂,释放你的创意小宇宙,让你的涂鸦和人像照,从此不再平凡!
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC在创意产业的应用与影响
【7月更文第27天】近年来,人工智能生成内容(AI-Generated Content, AIGC)的发展为创意产业带来了前所未有的机遇。从艺术创作到音乐制作,再到游戏设计和广告营销,AIGC正在以惊人的速度改变着这些领域的面貌。本文将探讨AIGC在创意产业中的应用,并通过具体的代码示例来展示如何利用Python等工具创建一些基本的生成模型。
115 6
|
5月前
|
人工智能 自然语言处理 搜索推荐
AIGC:重塑创意产业的“未来”力量
在2024世界人工智能大会上,AI生成内容(AIGC)成为焦点。快手宣布将推出首部全AI制作的奇幻短剧《山海奇镜之劈波斩浪》,标志AIGC在影视领域的突破。AIGC不仅提高效率,也正深度影响千行百业,包括工程设计,推动行业智能化转型。设计师借助AIGC增强效率,但创新和情感表达仍至关重要。出门问问展示的AIGC产品矩阵展示了技术在短视频、直播等领域的应用。大会揭示了AIGC如何拓展创意设计边界,同时强调保持技术与创意的平衡。
|
6月前
|
人工智能
创意设计师,如何在AIGC时代寻找价值?
在AIGC时代,创意设计师面临AI带来的挑战与机遇。Adobe国际认证成为衡量设计师技能与适应新时代的关键。通过认证,设计师不仅掌握Adobe软件,还能展现对新技术的洞察力和变革态度。AI辅助设计虽重要,但真正的创意仍需人类设计师的视角与审美。Adobe认证助力设计师提升效率,解锁新思路,保持竞争力,并在全球同行中找寻价值。面对技术变革,设计师应持续学习,以适应行业发展。