热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用网络构建复杂布局超实用的技巧,赶紧收藏吧

前端开发工程师必读书籍有哪些值得推荐?我们直接进入代码复杂版式设置,如下所示,先写些标签,源码在这个链接里面:https://codepen.io/Shadid

前端开发工程师必读书籍有哪些值得推荐?我们直接进入代码复杂版式设置,如下所示,先写些标签,源码在这个链接里面:https://codepen.io/Shadid/pen/zYqNvgv

  Header  

  
Section
    
Footer
在上面,我们创建了一个header、两个aside和一个footer元素,并将它们包装在一个container 元素中复杂版式设置。我们为容器元素中的所有元素添加背景色和字体大小。

.container > * {  background: aquamarine;  font-size: 30px;}运行的网页如下:

使用网络构建复杂布局超实用的技巧<strong>复杂版式设置</strong>,赶紧收藏吧

现在我们添加一些网格属性:

.container {  display: grid;  grid-gap: 5px;  grid-template-areas:     "header"    "aside-1"    "aside-2"    "section"    "footer"}/* Assign grid areas to elements */header {  grid-area: header;}aside:nth-of-type(1) {  grid-area: aside-1;}aside:nth-of-type(2) {  grid-area: aside-2;}section {  grid-area: section;}footer {  grid-area: footer;}首先,我们定义了display:grid,它将启用网格布局,然后我们使用grid-gap在网格元素中增加间隙复杂版式设置

接下来,我们为每个html元素分配了一个网格区域名称复杂版式设置。在container 类中,我们可以使用grid-template-areas`属性定 义html 模板的外观,注意网格模板区域是如何排列的。

grid-template-areas:     "header"    "aside-1"    "aside-2"    "section"    "footer" 元素的顺序与 dom 结构不同复杂版式设置。但是,最终按我们网络区域的顺序来展示。

使用网络构建复杂布局超实用的技巧<strong>复杂版式设置</strong>,赶紧收藏吧

下一步是使我们的页面具有响应性复杂版式设置。我们希望在更大的屏幕上使用不同的布局。CSS网格使得处理媒体查询和创建响应式布局变得非常容易。看下面代码:

@media (min-width: 670px) {  .container {    grid-template-areas:       "header  header  header"      "aside-1 section  aside-2"      "footer    footer    footer"  }}我们所要做的就是在媒体查询中重新排序网格模板区域复杂版式设置

使用网络构建复杂布局超实用的技巧<strong>复杂版式设置</strong>,赶紧收藏吧

网格列和行如何使用 CSS 网格来组织列和复杂版式设置?先从下面的代码开始:

  One

  Two
  Three  Four  Five  Six添加一些基本的 css

.container {  display: grid;  height: 100vh;  grid-gap: 10px;}.item {  background: lightcoral;}我们为上面的 dom 结构使用了网格布局,并使用grid-gap增加了风格之间的间距复杂版式设置。现在,我们使用grid-template-columns属性来添加一些列。

.container {    display: grid;    height: 100vh;    grid-gap: 10px;    grid-template-columns: 100px 200px auto auto;}就像这样,我们使用了列复杂版式设置。我们指定第一列为100px,第二列为200px。由于我们在第3列和第4列中应用了auto,因此剩余的屏幕长度将在其中分成两半。

使用网络构建复杂布局超实用的技巧<strong>复杂版式设置</strong>,赶紧收藏吧

可以看到现在页面中有一个空白复杂版式设置。如果我想将第六列移至第三列和第四列怎么办?为此,我们可以使用grid-column-start和grid-column-end属性。

.item:nth-of-type(6) {  grid-column-start: 3;  grid-column-end: 5;}注意,我们使用grid-column-end: 5,值5指向列线复杂版式设置。第四列在网格的第五行结束。grid-column-start和grid-column-end值是指网格线。

如果你觉得网格线的值让人困惑复杂版式设置,你也可以使用span,下面的效果与上面一样:

.item:nth-of-type(6) {  grid-column-start: 3;  grid-column-end: span 2;}对于span 2,指定div占用网格中的两个插槽复杂版式设置。现在,假设要扩展第二列填充下面的空白区域。我们也可以通过grid-column-start属性轻松地做到这一点。

.item:nth-of-type(2) {  grid-row-start: span 2;}我们使用span和grid-row-start来指定我们想要占据两个插槽复杂版式设置

使用网络构建复杂布局超实用的技巧<strong>复杂版式设置</strong>,赶紧收藏吧

如上所见,我们已经能够使用少量的CSS网格属性来构建非常复杂的布局复杂版式设置

有效地使用 grid-templates现在来看看grid-templates,在本节中,我们将讨论如何为不同的屏幕大小创建不同的布局复杂版式设置

首先复杂版式设置,还是先来一段 dom 结构:

  header  

  
Section
    
Footer
接着复杂版式设置,添加一些样式:

`` .container { display: grid; height: 100vh; grid-gap: 10px; }

.container > * { background: coral; display: flex; justify-content: center; align-items: center; }` ``

我们给元素添加了背景色复杂版式设置。从上面的代码中可以看到,我们也使用了flex属性。我们可以将flex和grid结合在一起。在这个特殊的例子中,我们使用flex属性中心对齐内容。

使用网络构建复杂布局超实用的技巧<strong>复杂版式设置</strong>,赶紧收藏吧

对于移动端,我们希望section在header下面,right 在 section下面,我们可以使用网格区域来完成复杂版式设置。首先,我们定义网格区域:

.container {  display: grid;  height: 100vh;  grid-gap: 10px;  grid-template-areas:    "header"    "section"    "right"    "left"    "footer"}aside:nth-of-type(1) {  grid-area: left;}aside:nth-of-type(2) {  grid-area: right;}section {  grid-area: section;}footer {  grid-area: footer;}header {  grid-area: header;}在 grid-template-areas 中可以看到,我们先有header ,然后是section,然后是right,最后是left复杂版式设置。此外,我们希望我们的section比 left 和 right都大点。为了实现这一点,我们可以使用rid-template-rows属性

.container {  display: grid;  height: 100vh;  grid-gap: 10px;  grid-template-areas:     "header"    "section"    "right"    "left"    "footer";  grid-template-rows: 1fr 6fr 2fr 2fr 1fr;}少了一张图片

使用网络构建复杂布局超实用的技巧<strong>复杂版式设置</strong>,赶紧收藏吧

我们可以根据需要设置移动端的视图复杂版式设置,接下我们使用媒体查询来适配一下大屏幕:

@media (min-width: 500px)  {  .container {    grid-template-areas:       "header header  header"      "left   section right"      "footer footer  right";    grid-template-rows: 1fr 6fr 1fr;    grid-template-columns: 1fr 6fr 1fr;  }}如何使用minmax函数动态跟踪元素的大小假设我们有两列,它们均匀地占据了屏幕上的可用空间复杂版式设置。通过使用 grid-template-columns,我们可以很容易地做到这一点。但是,如果我们想要其中一个在200px到500px之间呢?我们的列可以适应不同的屏幕尺寸,但其中一个永远不会大于500px或小于200px。

对于这些类型的场景,我们使用minmax函数复杂版式设置。让我们来看看它的实际效果。

  One  Two.container {  display: grid;  height: 100vh;  grid-template-columns: minmax(200px, 500px) minmax(100px, auto);}.one {  background: cyan;}.two {  background: pink;}在这个例子中,第一列总是在200px到500px之间复杂版式设置。然而,第二列的最小值可以是100px,对于更大的屏幕,它将覆盖屏幕的其余部分。

如何使用 repeat 函数?我们讨论一下元素中的重复模式复杂版式设置。我们如何处理它们?我们可以重复我们的代码或使用Javascript。不过,还有另一种方法可以用css来实现。repeat函数表示轨道列表的一个重复片段,允许以更紧凑的形式编写显示重复模式的大量列或行。

  

    This item is 50 pixels wide.  
  
    Item with flexible width.  
  
    This item is 50 pixels wide.  
  
    Item with flexible width.  
  
    Inflexible item of 100 pixels width.  
#container {  display: grid;  grid-template-columns: repeat(2, 50px 1fr) 100px;  grid-gap: 5px;  box-sizing: border-box;  height: 200px;  width: 100%;  background-color: #8cffa0;  padding: 10px;}#container > div {  background-color: #8ca0ff;  padding: 5px;}使用网络构建复杂布局超实用的技巧<strong>复杂版式设置</strong>,赶紧收藏吧

嵌套网格我还可以将网格嵌套在另一个网格中复杂版式设置, 来看看如何实现这一点:

  One  Two  Three      i    ii    iii    iv    v    vi    Five  Six我们首先在外部container上声明网格:

.container {  display: grid;  height: 100vh;  grid-gap: 10px;  grid-template-columns: repeat(auto-fill, minmax(200px, auto))}注意,我们在网格模板中有一个repeat函数,并将其与一个minmax函数组合在一起复杂版式设置。我们现在也可以将网格属性应用到内部网格。

.inner-grid {  display: grid;  background: white;  height: 100%;  grid-gap: 5px;  grid-template-columns: repeat(3, auto);}这样,我们网格中嵌套了一个网格复杂版式设置

使用网络构建复杂布局超实用的技巧<strong>复杂版式设置</strong>,赶紧收藏吧

今天就跟大家分享到这里复杂版式设置,感谢大家的观看,我们下期再见!

作者:Shadid Haque 译者:前端小智 来源:soshace

原文:https://blog.soshace.com/how-to-build-complex-layouts-with-css-grid/


推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 广度优先遍历(BFS)算法的概述、代码实现和应用
    本文介绍了广度优先遍历(BFS)算法的概述、邻接矩阵和邻接表的代码实现,并讨论了BFS在求解最短路径或最短步数问题上的应用。以LeetCode中的934.最短的桥为例,详细阐述了BFS的具体思路和代码实现。最后,推荐了一些相关的BFS算法题目供大家练习。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
author-avatar
小辣椒jie
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有