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

html显示表格很扁,需要为CSSGrid使用扁平化HTML结构?

昨天我在AnEventApart上看了RachelAndrew分享的CSSGridLayout。Grid是CSS一个强大的特性,而且离到来的一天越来越近,

昨天我在An Event Apart上看了@Rachel Andrew分享的CSS Grid Layout。Grid是CSS一个强大的特性,而且离到来的一天越来越近,它将是一个强大的Web布局模式。当然,那一天还没到,到目前没有稳定的浏览器支持Grid规范。

不过有一个好消息,就在前几天,W3C官方组织已经确定Grid规范已非常稳定了,并且已经进入了“候选推荐”的状态。因为所有浏览器都开启了对Grid规范的支持,而且浏览器对Grid的支持不需要添加私有前缀。

坏消息是可能浏览器不支持子网格(subgrid),这一点@Rachel Andrew在她的分享中特意提到。

下面是一些典型的页面布局:

上面代码中四个元素都是

的子元素,因此是网格以及这四个元素在这个网格中布局。下图是@Rachel写的一个网格示例:

67ac62e032f61b4aa6305ba4f289ec24.png

但是...

假设我们想建立的一个网格不是一个扁平(Flat HTML)的HTML结构,正如我们下面所示的代码:

I want to use the grid.

Me too!

  • Me three!
  • Me four!

...

我们可以使用嵌套网格,就像我们在单元格中嵌套一个Flexbox容器或者在Flexbox容器中嵌套另一个Flexbox,但是在上面的例子中,不能让这些子元素在同一个网格中。

你可以在Jen Simmon写的海报示例看到相应的效果。如果这些元素可以放在相同的网格替代放在不同的网格,能看到DOM中的一些元素,这样就好了。

1bf6909550fd854b4f34eeb0d9838f00.png

子网格可能有点乏味,因为需要一路嵌套下来。前面的示例,我们就得像下面这样做:

body {

display: grid;

}

.site-header {

/* current spec way... */

display: subgrid;

/* old way... */

display: grid;

grid: subgrid;

}

.main-content {

display: subgrid;

}

.main-content > ul {

display: subgrid;

}

这实际上就是没有定义网格该如何工作。

Eric Meyer也强调需要子网格

Without subgrids, you’d either have to make every element you want to lay out a child of the body element (or whatever you used to create the page grid), or you’d have to recreate segments of the page grid in each nested grid, and give up any hope of columns that can flex with the contents of multiple page sections. Neither solution is appealing.

他使用

标记写了一个案例,其中和是成对出现的,并且它必须要放在一个容器元素中分组显示,这意味着他们不能在同一个网格中运行。

d82379833cfde9cd8d9bc7395f109273.png

他也呼吁,如果子网格得不到支持,可以将他们按单元分割出来使用网格布局:

subgrids are a major component of grid layout, and should be a part of any grid layout implementation when it emerges from developer-preview status. If that means delaying the emergence of grids, I think it’s worth it.

分割运行

前面说到,如果不支持子网格,但可以将它他们分割成多个网格。但最终还是有一天子网格会得到支持的一天。但它可能会需要很长的一段讨论阶段(就比如这篇文章),来阐述子网格还是相当重要的,应该在CSS Grid Layout规范中得到支持。这不是我的想法,需要Jen Simmons在Mozilla推动。

不过有一个潜在的风险,子网格可能会被认为是一种高危(at-risk)功能,也有可能会在CSS Grid的CR时期被抛弃。

存在的风险

是的,我们非常喜欢网格布局,但需要刻意使HTML结构来配合网格工作。这将使我们的HTML更不容易。为了能更好的配合网格布局更好工作,我们将忽略HTML的语义化以及简洁的HTML结构。或许没有人会这么做。但CSS Grid Layout真的非常强大,为了使用这样的好东西,做出一点让步和牺牲也是值得的。

8b555b46c6d95b49f226e7c33d8b94bf.png

常用昵称“大漠”,W3CPlus创始人,目前就职于手淘。对HTML5、CSS3和Sass等前端脚本语言有非常深入的认识和丰富的实践经验,尤其专注对CSS3的研究,是国内最早研究和使用CSS3技术的一批人。CSS3、Sass和Drupal中国布道者。2014年出版《图解CSS3:核心技术与案例实战》。



推荐阅读
  • 前端开发工程师必读书籍有哪些值得推荐?我们直接进入代码复杂版式设置,如下所示,先写些标签,源码在这个链接里面:https://codepen.io/Shadid ... [详细]
  • 本文介绍了Python字典视图对象的示例和用法。通过对示例代码的解释,展示了字典视图对象的基本操作和特点。字典视图对象可以通过迭代或转换为列表来获取字典的键或值。同时,字典视图对象也是动态的,可以反映字典的变化。通过学习字典视图对象的用法,可以更好地理解和处理字典数据。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • android:EditText属性去边框EditText继承关系:View--TextView--EditTextEditText的属性很多,这里介绍几个:android:h ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 第8章 使用外部和内部链接
    8.1使用web地址LearnAboutafricanelephants. ... [详细]
  • Problemexplanation: ... [详细]
author-avatar
岁月静好198838
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有