文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-03 10:10

关注

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

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

https://harmonyos.51cto.com

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

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

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

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

display属性

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

  1. "container"
  2.    "item"
  3.    
 
  •     "item"
  •     
  •  
  •     "item"
  •      
  •  
  •     "item"
  •      
  •     "item"
  •      
  •     "item"
  •      
  •  

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

    布局效果如下:

    特别注意

    grid-template-columns和 grid-template-rows

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

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

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

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

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

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

    1页面视图部分代码:

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

    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.     } 

    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.     
    29.     display: flex; 
    30.     justify-content: center; 
    31.     align-items: center; 
    32. .boxtxt{ 
    33.     width: 100%; 
    34.     height: 100%; 
    35.     
    36.     display: flex; 
    37.     justify-content: center; 
    38. .topimg{ 
    39.     width: 65px; 
    40.     height: 65px; 
    41.  

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

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

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

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

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

    1. "container"
    2.     "item1"
    3.         1 
    4.      
    5.     "item1"
    6.         2 
    7.      
    8.     "item1"
    9.         3 
    10.      
    11.     "item1"
    12.         4 
    13.      
    14.     "item1"
    15.         5 
    16.      
    17.     "item1"
    18.         6 
    19.      
    20.  
    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

     

    来源:鸿蒙社区内容投诉

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    软考中级精品资料免费领

    • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

      难度     813人已做
      查看
    • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

      难度     354人已做
      查看
    • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

      难度     318人已做
      查看
    • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

      难度     435人已做
      查看
    • 2024年上半年系统架构设计师考试综合知识真题

      难度     224人已做
      查看

    相关文章

    发现更多好内容

    猜你喜欢

    AI推送时光机
    位置:首页-资讯-后端开发
    咦!没有更多了?去看看其它编程学习网 内容吧
    首页课程
    资料下载
    问答资讯