美文网首页
CSS Grid Game

CSS Grid Game

作者: JunChow520 | 来源:发表于2020-05-21 22:59 被阅读0次

网格布局可使用智能回流元素(Intelligently Reflow Elements),比如典型游戏界面五大区块:标题、统计、主面板、得分、控制区。

区域 描述
title 标题区,标题区和主面板对齐。
stats 统计区,统计区显示在标题区之下。
score 得分区,得分区和统计区在列方向对齐。
board 主面板区,主面板在统计区和标题区右侧。
ctrls 控制区,控制区集中放置在主面板下方。

当游戏页面达到最低高度时,主面板底部和统计区底部对齐,否则主面板将扩展到屏幕可用空间。

横屏布局

横屏时界面被划分为2列3行的网格

横屏时列宽设置

grid-template-columns:auto minmax(min-content, 1fr);
列号 列宽 描述
第1列 auto 根据内容自动控制列宽
第2列 minmax(min-content, 1fr) 使用剩余空间,列宽不小于主面板区和控制区的最小宽度。

横屏时行高设置

 grid-template-rows:auto minmax(min-content, 1fr) auto;
行号 行宽 描述
第1行 auto 根据内容自动控制列宽
第2行 minmax(min-content, 1fr) 使用剩余空间,列宽不小于主面板区和控制区的最小行高。
第3行 auto 根据内容自动控制列宽

横屏时的区块分布

使用grid-template-areas定义区域,取值中每个字符串表示一行,字符串中每个单词用于定义区域名称,字符串中单词的数量则用于确定列的数量,每个字符串中单词数量必须相同。

grid-template-areas:
  "title board" 
  "stats board" 
  "score ctls";
横屏

竖屏布局

竖屏时的区块分布

grid-template-areas:
  "title stats" 
  "score stats" 
  "board board" 
  "ctrls ctrls";
竖屏

完整代码

<div class="flex">
  <div class="layout">
    <div class="title flex box">title</div>
    <div class="score flex box">score</div>
    <div class="stats flex box">stats</div>
    <div class="board flex box">board</div>
    <div class="control flex box">control</div>
  </div>
</div>
  • 通过网格布局和媒体查询结合,无需修改文档结构即可实现重新排列布局的顺序。
  • 游戏界面中每个区块采用网格线来定义,若占用多行或多列则采取跨行或跨列的方式来实现。
*, *:before, *:after{box-sizing:border-box; margin:0; padding:0;}
.flex{display:flex; justify-content:center; align-items:center;}
.box{border:1px dashed #ddd; padding:.5em;}
.area{background-color:rgba(255, 0, 0, .5); padding:1em; border-radius:.5em; color:#fff; text-align:center; height:100%;}

.layout{background-color:#f9f9f9; margin:1em;}
.title{grid-area:title;}
.stats{grid-area:stats;}
.score{grid-area:score;}
.board{grid-area:board; height:50vh;}
.ctrls{grid-area:ctrls;}

@media (orientation:landscape){
  .layout{
    display:grid;
    grid-template-columns:auto minmax(min-content, 1fr);
    grid-template-rows:auto minmax(min-content, 1fr) auto;
    grid-template-areas:"title board" "stats board" "score ctls";
  }
.title{gird-column:1; grid-row:1;}
.stats{grid-column:1; grid-row:2;}
.score{grid-column:1; grid-row:3;}
.board{grid-column:2; grid-row:1 / span 2;}
.ctrls{grid-column:2; grid-row:3 / span 2;}
}

@media (orientation:portrait){
  .layout{
    display:grid;
    grid-template-columns: auto minmax(min-content, 1fr);
    grid-template-rows: auto auto minmax(min-content, 1fr) auto;
    grid-template-areas:"title stats" "score stats" "board board" "ctrls ctrls";
  }
}

相关文章

  • CSS Grid Game

    网格布局可使用智能回流元素(Intelligently Reflow Elements),比如典型游戏界面五大区块...

  • CSS Grid 布局

    参考资料 CSS Grid 布局完全指南(图解 Grid 详细教程) CSS Grid 系列(上)-Grid布局完...

  • CSS Grid 布局完全指南1-grid基础知识

    CSS Grid 布局是 CSS 中最强大的布局系统。与 flexbox 的一维布局系统不同,CSS Grid 布...

  • 网格布局

    CSS Grid现在已经被W3C纳入到CSS3的一个布局模块当中,被称为**CSS Grid Layout Mod...

  • 快速开始grid布局

    Grid布局概念 CSS Gird已经被W3C纳入到css3的一个布局模块中,被称为CSS Grid Layout...

  • CSS Grid 网格布局

    CSS Grid 网格布局教程

  • Creating Your Own CSS Grid Syste

    Creating Your Own CSS Grid System CSS Grids have been aro...

  • 为什么要使用CSS Grid?

    关注的几个博客上最近关于CSS Grid的文章挺多。今天看了Jen Simmons关于CSS Grid的一个演讲之...

  • CSS Grid网格布局

    参考资料 CSS Grid 网格布局教程 - 阮一峰 概述 网格布局(Grid)是最强大的 CSS 布局方案。 它...

  • 2019-03-17学了啥

    CSS Grid布局https://cssgridgarden.com/

网友评论

      本文标题:CSS Grid Game

      本文链接:https://www.haomeiwen.com/subject/nhdaohtx.html