鸿蒙的JS开发部模式16:鸿蒙布局Grid网格布局的应用一

开发
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com

[[383854]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

1.目前鸿蒙css布局方案中,除了Flex布局 ,网格布局Grid可以算得上是最强大的布局方案了。它可以将网页分为一个个网格,然后利用这些网格组合做出各种各样的布局。

容器里面的水平区域称为“行”,垂直区域称为“列”,行列重叠出来的空间组成单元格

划分网格的线,称为”网格线“

黄色的代表是列的网格线,绿色代表的是行的网格线。Grid和flex类似,布局的属性都是分为两类,一类定义在容器上,称为容器属性,一类定义在项目上,称为项目属性。

display属性

display:grid指定一个容器为网格布局,

  1. <div class="container"
  2.    <div  class="item"
  3.    </div> 
  4.     <div  class="item"
  5.     </div> 
  6.     <div  class="item"
  7.     </div> 
  8.  
  9.     <div  class="item"
  10.     </div> 
  11.     <div  class="item"
  12.     </div> 
  13.     <div  class="item"
  14.     </div> 
  15. </div> 

  1. .container { 
  2.     width: 100%; 
  3.     display: grid;  /**采用grid布局**/ 
  4.     background-color: palevioletred; 
  5.    /** grid-template-columns: 100px  200px  300px; 
  6.     grid-template-rows: 200px  200px;**/ 
  7.     grid-template-columns: 1fr  1fr  1fr; 
  8.     grid-template-rows: 200px  300px ; 
  9. .item 
  10.     border: 5px  solid   white; 
  11.     width: 100%; 
  12.     height: 100%; 
  13.  

布局效果如下:

特别注意

grid-template-columns和 grid-template-rows

grid-template-columns:用来指定行的宽度

grid-template-rows:用来指定行的高度

1.1也可以使用百分比来表示

1.2 网格提供了fr关键字(fraction的缩写,意为“片段”),如果两列的宽度分别为1fr和2fr,就表示后者是前者的2倍

1.3 可以使用具体的像素单位。

2.使用Grid布局构建底部菜单栏和整体页面的分割控制,实现的效果如下:

2.1页面视图部分代码:

  1. <div class="container"
  2.     <div  class="contentview"
  3.  
  4.     </div> 
  5.     <div class="bottomview"
  6.        <block  for="{{menus}}"
  7.           <div  class="box"
  8.               <div  class="boximg"
  9.                  <image   class="topimg" src="{{$item.path}}"></image> 
  10.               </div> 
  11.               <div class="boxtxt"
  12.                   <text>{{$item.name}}</text> 
  13.               </div> 
  14.            
  15.           </div> 
  16.         
  17.        </block> 
  18.     </div> 
  19. </div> 

2.2 业务逻辑js代码,数据构建

  1. export default { 
  2.     data: { 
  3.         title: 'World'
  4.         menus:[{"name":"首页","path":"common/fs.png"},{"name":"分类","path":"common/cs.png"}, 
  5.                {"name":"旅游","path":"common/ls.png"},{"name":"我的","path":"common/ms.png"}] 
  6.     } 

2.3 css采用 Grid布局,

  1. .container { 
  2.     width: 100%; 
  3.     display: grid; 
  4.     grid-template-columns: 1fr; 
  5.     grid-template-rows: 88%  12%; 
  6. .contentview{ 
  7.     width: 100%; 
  8.     height: 100%; 
  9.     border: 5px  solid  powderblue; 
  10. .bottomview{ 
  11.     width: 100%; 
  12.     height: 100%; 
  13.     border: 5px  solid  cadetblue; 
  14.     display: grid; 
  15.     grid-template-columns: 1fr  1fr 1fr 1fr; 
  16.     grid-template-rows: 100%; 
  17. .box{ 
  18.     width: 100%; 
  19.     height: 100%; 
  20.     border: 8px  solid  green; 
  21.     display: grid; 
  22.     grid-template-columns: 1fr; 
  23.     grid-template-rows: 70%  30%; 
  24.  
  25. .boximg{ 
  26.     width: 80%; 
  27.     height: 100%; 
  28.    /** border:2px  solid  red;**/ 
  29.     display: flex; 
  30.     justify-content: center; 
  31.     align-items: center; 
  32. .boxtxt{ 
  33.     width: 100%; 
  34.     height: 100%; 
  35.    /** border:2px  solid  blue;**/ 
  36.     display: flex; 
  37.     justify-content: center; 
  38. .topimg{ 
  39.     width: 65px; 
  40.     height: 65px; 
  41.  

这个是Grid布局构建底部菜单栏的具体实现,可以和Flex布局做个技术的对比。

3.grid-row-gap和grid-colunm-gap属性

grid-row-gap:设置行与行之间的间隔

grid-colunm-gap:设置列于列之间的间隔

grid-row-gap和grid-colunms-gap合并简写的话,格式为grid-gap

  1. <div class="container"
  2.     <div class="item1"
  3.         <text>1</text> 
  4.     </div> 
  5.     <div class="item1"
  6.         <text>2</text> 
  7.     </div> 
  8.     <div class="item1"
  9.         <text>3</text> 
  10.     </div> 
  11.     <div class="item1"
  12.         <text>4</text> 
  13.     </div> 
  14.     <div class="item1"
  15.         <text>5</text> 
  16.     </div> 
  17.     <div class="item1"
  18.         <text>6</text> 
  19.     </div> 
  20. </div> 
  1. .container { 
  2.     width:100%; 
  3.     background-color: #f3f3f3; 
  4.     display: grid; 
  5.     grid-template-columns: 33% 33% 33%; 
  6.     grid-template-rows: 200px 300px ; 
  7.     grid-columns-gap: 20px; 
  8.     grid-rows-gap: 20px; 
  9. .item1{ 
  10.  
  11.     width: 100%; 
  12.     height: 100%; 
  13.     border:1px solid #fff; 
  14.     color:#fff; 
  15.     font-weight: bold; 
  16.     background-color: powderblue; 
  17.     display: flex; 
  18.     justify-content: center; 
  19.     align-items: center; 
  20.  
  21.  

设置间隔效果如下:

Grid布局和Flex布局在鸿蒙,PC,小程序都有非常广泛的应用,也是布局标准,入门的同学,可以选择从这里起步,能够够好的掌握鸿蒙的应用开发,然后在切入到鸿蒙的Java开发。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-03-02 14:34:48

鸿蒙HarmonyOS应用开发

2021-03-09 09:35:09

鸿蒙HarmonyOS应用开发

2021-02-22 09:49:25

鸿蒙HarmonyOS应用开发

2023-08-14 18:25:31

CSSJavaScript业务

2020-07-14 08:31:42

CSS网格布局项目

2020-12-24 12:01:16

鸿蒙HarmonyOS应用开发

2011-12-01 15:51:35

JavaJavaFX

2024-04-09 10:10:23

GridCSS网格

2021-02-04 13:49:41

鸿蒙HarmonyOS应用开发

2022-10-13 09:01:24

GridCSS二维布局

2021-04-23 16:08:08

鸿蒙HarmonyOS应用

2023-02-07 09:01:22

CSS

2022-03-23 08:01:36

CSSGrid小游戏

2020-11-30 14:09:17

HarmonyOS

2020-11-17 11:48:44

HarmonyOS

2020-12-03 10:05:07

鸿蒙OS

2021-12-01 09:53:46

CSS 技巧代码重构

2021-01-28 14:34:35

鸿蒙HarmonyOS应用开发

2022-10-08 00:02:00

CSS工具系统
点赞
收藏

51CTO技术栈公众号