九宫格布局方式有哪些,有什么优缺点?

这里是修真院前端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析前端知识/技能,本篇分享的是:

【九宫格布局方式有哪些,有什么优缺点?】

1.背景介绍

盒子模型与元素水平

九宫格对于一个初学者来说,只需要了解标准盒模型,盒模型由内至外分别是content、padding、border、margin, 其中可以使用百分比的有content,padding,margin,边框border则不可以用%单位。

元素水平分为3种:block水平,inline-block水平,inline水平,3种元素各有不同的表现。

            block水平默认情况下,继承父级宽度,铺满整行。多个元素竖直方向排列,可以设置宽高,竖直方向上的padding,margin有效。

             inline元素水平排列,多个inline水平的元素,会在一行里排列,不可以设置宽高,竖直方向上的padding,margin无效。

             inline-block水平元素,用时具有block水平和inline水平的特点,多个元素水平排列成一行。可以设置宽高,竖直方向上的padding,margin有效。

2.知识剖析

既然这样,实现九宫格效果,必然不能是9个block水平的元素或者是9个inline水平的元素,只能是inline-block的元素。

 所以引出第一种九宫格布局。inline-block布局。固定尺寸的九宫格布局。

关于九宫格的自适应,什么叫自适应,九宫格的自适应指的又是什么,认识css单位,px,%,与vw。

px,%,vw的不同之处

vw:viewpoint-width,视窗宽度,1vw等于视窗宽度的1%。

vh:viewpoint-height,视窗高度,1vh等于视窗高度的1%。

%:百分比,以父级元素的尺寸为基准,乘以%后得到相应的尺寸。

既然这样就可以轻松的写出第一个九宫格展示图。

b、float布局

关于浮动

float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

c、vw布局

d、flex布局

e、grid布局

f、position布局

g、line-height布局

3.常见问题

display:inline-block后的九宫格会折行?

4.解决方案

分析原因:

解决办法:

1、父级设置font-size为0

2、标签闭合

5.编码实战

6.扩展思考

9宫格必须使用9个div吗?

不一定

直接看demo。

3个div实现宫格

1个div实现9宫格

7.参考文献

参考一:w3c

参考二:知乎

8.更多讨论

 

讨论点1:以上提到的九宫格布局实现方案,还有别的实现方案吗?

       table布局方案,纯position定位方案 

讨论点2:选择哪种方案好?

         考虑兼容性的话float布局与inline-block布局最好,其他的布局方案或多或少不兼容低版本浏览器

讨论点3:初学者实现九宫格要注意的问题

inline-block布局的问题,有必要清楚浮动吗?

问题:

1.display:inline-block后的九宫格会折行?

答:

a、父级设置font-size为0

b、标签闭合

2.为什么绝对定位知识设置相对方向值,就能实现width或者height具有尺寸?

答:这是绝对定位的特性,假如我们在一个相对定位的容器有一个子元素,我们直接设置这个子元素是绝对定位,然后设置left:0;right:0;top:0;bottom:0;此时子元素的宽度就是父级的宽度,子级的高度就是父级的高度,这就是绝对定位的特性,拉伸特性。

3.为什么九宫格布局不能使用height的百分比。

答:

Web浏览器在计算有效宽度时会考虑浏览器窗口的打开宽度。如果你不给宽度设定任何缺省值,那浏览器会自动将页面内容平铺填满整个横向宽度。

(即块级元素的宽度)

但是高度的计算方式完全不一样。事实上,浏览器根本就不计算内容的高度,除非内容超出了视窗范围(导致滚动条出现)。或者你给整个页面设置一个绝对高度。否则,浏览器就会简单的让内容往下堆砌,页面的高度根本就无需考虑。

因为页面并没有缺省的高度值,所以,当你让一个元素的高度设定为百分比高度时,无法根据获取父元素的高度,也就无法计算自己的高度。换句话说,父元素的高度只是一个缺省值:height: auto。当你要求浏览器根据这样一个缺省值来计算百分比高度时,只能得到undefined的结果。也就是一个null值,浏览器不会对这个值有任何的反应。

因为父级元素的高度是由该元素里面的内容撑起的,在不设置该圆素高度的前提下。

于是子元素的高度height: 50% 也不会起作用。解决办法就是给html和body加上height: 100%。

 

 

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,学习的路上不再迷茫。

这里是技能树.IT修真院:http://www.jnshu.com,初学者转行到互联网行业的聚集地。"

欢迎加IT交流群565734203与大家一起讨论交流

转载于:https://www.cnblogs.com/jnshu/p/10129523.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值