汇总css布局的发展史,就属第四代css布局技术最牛掰

我也是在前端行业混过几年的老人了,css网页布局也变的丰富起来,致使我也在不断的学习进步,不然真的跟不上时代的潮流啊,当第四代css布局技术网格布局呈现在我眼前的时候,好似似曾相识呢,但是又很陌生,不得不重新学习,之前的每一个开发者的电脑上还都装着一个frontpage,就连dreamwaver8都觉得很精美。时代在变,来一起看看第四代css布局技术吧。apache php mysql1.png

2006年注定是一个不平凡的一年,那一年微软判了fontpage死刑,那一年XMLHttpRequest被W3C正式纳入标准 ,那一年谷歌最性感的妞儿gmail已经两岁了,重点是曾经统治PC网站90%以上的jquery 被 John Resig发布了jQuery ,js一哥横空出世,从此,前端工程师这个让大量人荣耀与惆怅的职业如雨后春笋般成长起来,直到现在依然火爆,当然还有dreamwaver 8 发布了。

一切都那么美好,除了让人恶心的初代table布局。

1.png

初代table布局

正如table的最早使用者所说,我把炸酱和面倒在一起,并且没法分开他。翻译成人话就是,随着业务的越来越复杂,做好的网页你想改就是扯淡的事儿,特别难改。
1.png

立即学习“前端免费学习笔记(深入)”;

然后第二代布局css+p布局登场了,

准确的说这玩意10几年前就有了,但是现在才长成大姑娘,然后一出世就完全宠爱于一身,直接把table布局打入冷宫了。从此正式开启了p+css时代。

这货火起来是有原因的,应为灵活修改,如果说table布局是半永久纹眉的话,p+css布局就是画眉,想怎么变就怎么变,还不用削骨(动DOM),当然目前这货也是很主流的,但是我觉得css这货也不是没啥缺点,个人觉得这破玩意对非程序员太复杂了,即使对于程序员也太磨叽了,一个一个元素去控制,就跟一个女孩要化妆,尼玛呀有20只眉笔,三十色口红,怎么配合?太麻烦了……

要是啪啪啪,有个贴膜多好,网上一贴眉毛就画好了,再啪啪啪一贴,脸蛋红润了。别让我一笔笔的描,一下一下的铺粉底弄什么腮红。

是的你懂得,因为css布局的墨迹,尤其是float布局各种清除浮动之类的东西,就跟挖完鼻屎得擦一个道理,真恶心。

基于这些恶心的问题,css,(放心目前就这哥们一统江湖了,没有别的什么玩意,这点我还是很欣慰的,不像html 尝试搞什么XHTML2.0什么html5,js更过分,搞什么typescript什么的)一拍大腿,什么float什么嘛,什么恶心人的位置宽高物体水平垂直居中,什么float元素内部元素居中,这都啥恶心不垃圾的玩意啊,哥有更简单的方法解决你,

第三代网络布局系统flex。

flex的应用有两个简单到让人发指的地方

第一个,元素垂直水平居中。

看这里,看这里,瞅哪呢,看图!

1.png

大家看 网易云音乐APP 用css布局实现,如果传统的左右图标 分别float向两侧,那么中间三个元素图标等距居中是一个问题,给宽度或者不给宽度都不好处理,如果我们使用绝对定位,不仅考虑绝对定位不占空间,我们需要占位,又涉及到左边间距和垂直间距的处理,要保证不同分辨率屏幕下永远水平垂直都在那个位置就必须使用 rem布局+js动态计算,rem又要考虑视网膜屏,大家心里想骂娘了,我特么就想让几个图标垂直居中,水平有间距,每一个屏幕上一样。怎么特么那么费事。还好我们有flex布局。

#toolbar{    display: flex;    align-items: center;    justify-content: space-between;}

好了,两个图标规规矩矩的各自靠边占了。

#iconTool {    display: flex;    justify-content: center;}

没毛病,中间部分规规矩中分了。

不用学很多没用的东西大家就记住父元素,

#toolbar{    display: flex;    align-items: center;//这个负责纵向居中    justify-content: space-between;//这个负责横向居中或者两边站}

我想让#iconTool 占满除了两个图标之外的空间咋办,

flex-grow:1;

有同学会说老师为啥不用

flex:1;

你用个屁用啊,你就是想太多了,flex里面包含flex-grow、flex-shrink、flex-basis ,你想把自己搞晕吗?

别整没用的,就记住刚才那两个货,你flex布局大部分问题都解决了,不会你再google,别动不动就想大而全的学东西,到时候啥都不会。

第二个,“豆腐块”布局。

直接看图!
1.png

大家看我红圈圈起来的部分,基本上每一个app都用,但是大家知道的,有时候可恶心了,有时候左边右边间距不一样了,或者左边右边要边,中间又只要一个边,而不是两个边,用first-child 和last-child 选择器还要考虑兼容。另外还要使用box-sizing,里面的图片不同设备宽高比例又不对了,反正怎么搞都特么不爽。还得图片跟文字也得居中,老师想想就得包很多层,是不是还得用dl dd,别想太多,看我怎么做。现在我就告诉你一个好方法解放军叔叔来了,大家看我怎么搞,其实简单的又让人发指了。我已最上面的今日推荐部分举例

#recommend-items {    display: flex;    justify-content: space-around;//横向子元素排列方式,不用记住,用的时候试试就OK    border-bottom: 1px solid #eee;}#recommend-items .item {    flex-grow: 1;    text-align: center;    display: flex;    flex-direction: column;//子元素纵向排列    align-items: center;    justify-content: center;    height: 0.93rem;}

别瞅了,看我生活不要太美好,这样就鸟了,你觉得这样就够了吗?显然不是,

牛掰666的第四代网格布局系统来了。

有同学说老师这个不挺好吗?好,你一定要记住,没有无缘无故的爱也没有无缘无故的恨。翻译成技术的话就是,没有问题就不会有解决方案。技术是为解决问题服务的,flex布局肯定变成怂蛋才会发明更牛掰的玩意。我们看这样一种情况:

1.png

大家看这么个破玩意,这个是手机淘宝APP里面的一个布局,别看妹子,看我,我不想墨迹咱们看看flex怎么实现,你不是牛掰么,看代码

        大彬哥666            /** 实战版 **/        .flex-item {            background: #f55;            text-align: center;            vertical-align: middle;        }        .wrap-box {            display: flex;            width: 500px;            border: 1px solid #abc;            margin-bottom: 10px;            margin-left: 10px;        }        .flex-inner {            display: flex;            flex-grow: 1;        }        .flex-item {            flex-grow: 1;            font-size: 0;            position: relative;        }        .wrap-6 {            /* -webkit-box-orient: horizontal; */        }        .wrap-6 .flex-inner {            display: flex;            flex-direction: column;        }        .wrap-6 .flex-inner:first-child {            width: 66.6%;        }        .wrap-6 .flex-inner:last-child {            width: 33.3%;        }        .wrap-6 .flex-item {            padding-top: 100%;        }        .wrap-6 .flex-box2 .flex-item {            padding-top: 50%;        }        .wrap-6 .flex-box2 {            display: flex;        }        .wrap-6 .flex-inner:first-child,        .wrap-6 .flex-box2 .flex-item:first-child {            margin-right: 1px;        }        .wrap-6 .flex-box1,        .wrap-6 .flex-inner:last-child .flex-item:first-child,        .wrap-6 .flex-inner:last-child .flex-item:nth-child(2) {            margin-bottom: 1px;        }        img {            height: 100%;            width: 100%;            position: absolute;            left: 0;            top: 0;        }        

@@##@@

@@##@@

@@##@@

@@##@@

@@##@@

@@##@@

老实说,如果让一些前端开发者 在用flex实现这个布局和闻大彬哥的香之间做个选择的话,很多开发者估计会

痛快的说愿闻其详,因为不闻的话,自己可能卡出香来。

不是flex 怂蛋,是因为人家就是和一维的布局,二维就废了。翻译成人话就是flex布局适合一个方向布局,同时要搞横向和纵向就搞不动了。有些人说flex布局和网格布局还有一个内容优先和布局优先的问题,这里我就要忍不住吐槽了,我们学技术是为了应用到工作中,因为没有工作你吃啥,没有工作了你穿啥,吃穿都没了你还臭嘚瑟啥?你知道不知道内容优先和布局优先对能够更快更好的布局完活儿没有半毛钱关系,程序员头发已经够少了,少学点没用的东西。
汇总css布局的发展史,就属第四代css布局技术最牛掰

那么就开始看看第四代网络布局神奇grid布局的强大之处。

网上有些文章类似于5分钟学会 CSS Grid 布局之类的文章,这些文章入门挺好的但是要想看完这个文章5分钟就能够工作中用还是有点费劲的。我又不是大自然的搬运工,能搜到的东西我就不讲了,咱们不墨迹直接就上来一梭子代码看看刚才的实际手淘布局怎么实现。

                Document    * {        margin: 0;        padding: 0;    }    .wrapper {        display: grid;        width: 500px;        height: 500px;        grid-template-columns: 1fr 1fr 1fr;        grid-template-rows: 1fr 1fr 1fr;        grid-gap: 1px;    }    .item1 {        grid-column: 1 / 3;        grid-row: 1 / 3;    }    img{        width: 100%;        max-height: 100%;    }        

@@##@@

@@##@@

@@##@@

@@##@@

@@##@@

@@##@@

有同学说 老师你不讲讲这玩意,

只讲两点,第一点

.wrapper {        display: grid;        width: 500px;        height: 500px;        grid-template-columns: 1fr 1fr 1fr;//你把他理解成跟像素一样的单位        grid-template-rows: 1fr 1fr 1fr;        grid-gap: 1px;    }    .item1 {        grid-column: 1 / 3;//这里不是三分之一 是第一条线到第三条线        grid-row: 1 / 3;    }

第二点,他很简单千万别想太复杂说什么我要好好学学,系统学学,学你妹啊,拿起来就用别有点新东西就事儿事儿的想大块时间学,到最后也没学,别想了,拿起键盘就是干就对了。

这里有同学会说,老师你瞎忽悠,flex和grid都是新技术,他们没有办法谁替代谁。

首先我告诉你,你说的没错甚至table布局是初代布局系统也有商榷,因为有人觉得从第一个网页出来那个是第一代。我想说的是不管怎么分,你能说的很有道理就行,有自己思考在里面就行,别跟别人屁股后面人家说啥你跟着跑,对了内个词儿叫人云亦云就行。而第四代布局系统也是我总结出来的为什么他是第四代,而flex是第三代呢?

原因:

1.flex对标的是float,本质上还是一维布局,这就跟别人开着夏利,你开奔驰都是地面上跑没啥本质区别一样。但是grid升维了,grid是飞机,在地面马路这条线一维之上让人能够思考高度这个维度,以前是汽车一维交通工具(你只只能在水平方向的人一个方向开),飞机是二维(能俯冲了(横向、纵向同时)),所以grid可以说是拓宽了css布局的维度,不排除将来会有三维布局的出现,不仅仅能css控制 横向布局,纵向布局,还可以深度布局(这个要依赖于三维展示的出现,如VR,AR三维立体的展示设备出现)。

2.grid布局里面采用了“可视化布局(template部分,所见即所得)”,这个颠覆了传统的,写一句代码刷一下浏览器这样的开发方式,不排除以后会出现代码即效果的开发模式。比如你再一个设备上画一个区域,然后画轮播图,

类似于vc++控件但是更智能,更友好的方式。谁说不可能呢,大家不要忘了grid布局的来源是早就废弃的table布局。说到这里我多说一句搞笑的微软,frontpage没火,dreamwaver火了,最早提出“canvas”概念的 VML没火,最后html5的canvas火了,连CSS3网格布局是由微软创建的一个模块 ,最后火起来居然没人认识他。心疼我软一秒钟。

end:

1.了解网格布局的发展历史,以便对未来布局技术的发展有一个客观的判断正确的选择是否学习。

2.学会使用flex布局写实际项目,而不是光就记住几个属性。

3.学会使用grid布局写实际项目,而不是说我找时间研究研究。

4.最后祝大家学习愉快!

相关文章:

解读css发展历史_基础教程

这可能是史上最全的CSS自适应布局总结 

相关视频:

使用DIV+CSS布局一个完整的网站首页

汇总css布局的发展史,就属第四代css布局技术最牛掰汇总css布局的发展史,就属第四代css布局技术最牛掰汇总css布局的发展史,就属第四代css布局技术最牛掰汇总css布局的发展史,就属第四代css布局技术最牛掰汇总css布局的发展史,就属第四代css布局技术最牛掰2.png汇总css布局的发展史,就属第四代css布局技术最牛掰汇总css布局的发展史,就属第四代css布局技术最牛掰汇总css布局的发展史,就属第四代css布局技术最牛掰汇总css布局的发展史,就属第四代css布局技术最牛掰汇总css布局的发展史,就属第四代css布局技术最牛掰汇总css布局的发展史,就属第四代css布局技术最牛掰

以上就是汇总css布局的发展史,就属第四代css布局技术最牛掰的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610934.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CSS中transform-origin属性是做什么的?transform-origin属性的作用
上一篇 2025年12月24日 01:51:56
如何实现单行文字向上滚动的效果(附代码)
下一篇 2025年12月24日 01:52:12

相关推荐

  • 微软免费文件恢复工具介绍

    微软免费文件恢复工具介绍微软免费文件恢复工具介绍微软免费文件恢复工具介绍微软免费文件恢复工具介绍

    现在好了,最近微软在 windows 10 应用商店中上架了一款免费的数据删除恢复工具 windows file recovery,猿妹再也不用担心误删文件了。 Windows File Recovery基于命令行程序设计,大小仅有8.26MB,所有Windows 10用户均可免费下载使用。 无论是…

    2026年9月23日 • 用户投稿
    000
  • VS Code团队协作:共享配置与规范

    通过共享VS Code配置实现团队协作标准化,1. 使用.settings.json统一编辑器行为;2. 集成Prettier与ESLint确保代码风格一致;3. 通过extensions.json推荐必备插件;4. 忽略私有配置文件避免冲突,提升开发效率。 在团队开发中,保持代码风格一致和开发环境…

    2026年9月23日
    000
  • Prestashop分类描述在分页时的显示行为解析与SEO考量

    Prestashop商店中,分类描述通常仅在首个分页页面显示,而在后续分页页面上消失,甚至从第二页返回第一页时也可能不显示。这并非一个技术故障,而是Prestashop的默认行为,且从SEO角度看,只要描述在直接访问的第一页可见,就已满足核心要求,无需在所有分页页面重复显示,以避免潜在的重复内容问题…

    2026年9月23日
    100
  • 处理动态数量问答数据的更新教程

    本教程旨在详细阐述如何有效地管理和更新包含动态数量答案的问题数据。我们将探讨在Web表单中如何设计输入字段以捕获答案内容及其唯一标识符,并通过服务器端(以PHP为例)解析提交的数据,从而实现对现有答案的精确更新和新答案的添加,确保数据一致性和系统健壮性。 场景概述:处理动态数量的问答数据更新 在许多…

    2026年9月23日
    100
  • VSCode 如何自定义编辑器的背景动态效果 VSCode 背景动态效果的自定义创意方法​

    想让vscode编辑器背景动起来,需安装“custom css and js loader”扩展,创建包含gif动图路径的自定义css文件,并在settings.json中配置该css文件路径;2. 启用扩展后重启vscode,允许其注入自定义样式以实现动态背景;3. 实现原理是利用vscode基于…

    2026年9月23日
    600
  • Prestashop分类页描述与分页:SEO考量及前端行为解析

    本文深入探讨Prestashop电商平台中分类页面描述在分页操作时消失的常见现象。我们将解析其背后的技术原理,重点从搜索引擎优化(SEO)角度阐述为何此行为并非核心问题,并强调确保分类描述在首页面加载时的完整性至关重要。同时,文章也提供若需自定义此行为的思路。 Prestashop分类页描述的分页行…

    2026年9月23日
    200
  • VSCode如何管理技术债务 VSCode代码质量跟踪的实用方法

    eslint、pylint等linter类扩展可实时识别代码问题,从源头减少技术债务;2. sonarlint能集成sonarqube规则,深度检测代码异味并提供修复建议;3. code metrics可量化函数圈复杂度等指标,帮助定位高风险代码;4. todo tree将todo、fixme等注释…

    2026年9月23日
    100
  • 使用PHP和Ajax实现搜索结果的A-Z排序

    在PHP搜索结果页面实现A-Z排序功能,可以极大地提升用户体验。结合Ajax技术和PHP后端排序逻辑,我们可以在不刷新页面的情况下实现排序功能。以下将详细介绍实现步骤。 1. 前端:创建排序表单和Ajax请求 首先,需要在 search.php 页面中创建一个表单,用于触发排序操作。这个表单可以包含…

    2026年9月23日
    100
  • VSCode搭建Angular开发环境(企业级前端,配置详解)

    企业级angular开发环境中,vscode必不可少的扩展包括angular language service、prettier、eslint、debugger for chrome/edge、path intellisense、gitlens和sonarlint,关键配置优化包括启用保存时自动格式…

    2026年9月23日
    500
  • HTML中无法链接本地脚本源的问题解析与解决方案

    本文旨在解决在本地HTML文件中无法正确链接JavaScript脚本的问题,尤其是在使用p5.js等库时。我们将探讨常见原因,并提供无需Web服务器即可成功运行HTML、JavaScript和CSS代码的有效方法。通过修改HTML结构,确保脚本正确加载和执行,从而避免页面无法渲染的情况。 在本地开发…

    2026年9月23日
    1100
  • safari浏览器如何开启画中画模式播放视频_safari浏览器画中画模式开启方法

    如果您在观看网页视频时希望同时进行其他操作,可以启用 Safari 浏览器的画中画模式,让视频以浮动小窗形式继续播放。此功能支持大多数主流视频网站,如 YouTube、优酷等。 本文运行环境:MacBook Air,macOS Sonoma 一、通过视频右键菜单开启画中画 此方法适用于正在播放的视频…

    2026年9月23日
    100
  • Java中使用栈验证JSON字符串结构:深入理解与实践

    本文探讨了在Java中利用栈验证JSON字符串结构的核心原理与常见陷阱。我们将分析一种初始实现中处理引号、转义字符及字符串内部结构字符的不足,并提供一个更健壮的栈基方法,以准确判断JSON的括号、方括号和引号是否平衡,同时纠正关于不完整JSON片段有效性的常见误解。 1. JSON结构与验证的重要性…

    2026年9月23日
    100
  • 苹果手机USB调试模式开启方法

    准备工作 在操作前,请确保你的iPhone已连接网络,并升级至最新的iOS系统版本。同时,准备一台安装了最新版iTunes(Windows)或Finder(macOS)的电脑,以确保设备能够被正确识别和管理。 步骤一:开启相关调试功能 打开iPhone上的“设置”应用。 进入“Safari”浏览器设…

    2026年9月23日
    100
  • Java Web项目在无Maven/Eclipse环境下生成WAR包的实践指南

    本文详细介绍了如何在没有Maven或Eclipse等集成开发环境或构建工具的情况下,为Java Web项目手动或通过Apache Ant工具生成WAR文件。教程涵盖了WAR文件的基本结构、使用Ant进行编译和打包的具体步骤,并提供了Ant构建脚本示例,旨在帮助开发者理解并实践WAR包的独立构建过程。…

    2026年9月23日
    100
  • Java中基于栈验证JSON字符串结构有效性的方法

    本文探讨了在Java中利用栈(Stack)数据结构验证JSON字符串结构有效性的方法。我们将分析一个常见的基于栈的实现示例,指出其在处理字符串内部字符、引号平衡以及转义字符方面的潜在缺陷。文章将提供一个改进的解决方案,并强调此方法主要用于结构匹配,而非完整的JSON语法验证,同时建议生产环境中使用专…

    2026年9月23日
    200
  • Java JSON字符串有效性验证:基于栈的实现与常见陷阱

    本文深入探讨了使用Java栈结构验证JSON字符串有效性的方法。通过分析一个常见错误示例,详细阐述了在处理括号、方括号以及字符串引号时的正确逻辑,特别强调了字符串内部字符(包括转义字符)不应影响结构平衡的原则,并提供了改进思路,旨在帮助开发者构建健壮的JSON验证器。 JSON结构与栈的适用性 JS…

    2026年9月23日
    100
  • VSCode 如何自定义编辑器的选中内容颜色 VSCode 编辑器选中内容颜色的自定义教程​

    自定义vscode选中颜色需在settings.json中修改workbench.colorcustomizations,关键属性包括editor.selectionbackground(鼠标拖选色)、editor.wordhighlightbackground(单词高亮色)、editor.word…

    2026年9月23日
    100
  • Vue.js 项目中实现练习进度保存的策略与实践

    本文将探讨在vue.js项目中实现用户练习进度保存的最佳实践。针对需要跨会话保留用户进度的场景,我们将重点介绍如何利用浏览器localstorage进行数据持久化,包括数据的序列化与反序列化、在关键生命周期钩子中加载与保存数据,以及相关的注意事项,确保用户能够从上次中断的地方继续练习。 在开发基于V…

    2026年9月23日
    100
  • Karate框架中处理带方括号和日期范围的GET请求参数

    本文旨在解决Karate框架中构建包含复杂、带方括号(如filters[start_date])及日期范围的GET请求参数时遇到的URL编码问题。通过对比直接定义查询对象和使用param关键字的方法,详细阐述了如何正确地构造URL,确保参数格式符合预期,从而有效进行API测试。 1. 问题背景与挑战…

    2026年9月22日
    200
  • ​​VSCode的终极骚操作!学会这些让你的编程效率无人能敌

    掌握VSCode的高效技巧能显著提升编程效率。首先利用代码片段(Snippets)避免重复输入,如设置“rcomp”快速生成React组件结构;接着通过Emmet缩写大幅提升HTML/CSS编写速度,如“ul>li*3”生成列表;再结合Prettier、ESLint等插件优化代码质量与格式;自…

    2026年9月22日
    500

发表回复

登录后才能评论
关注微信