当前位置:首页 » 《随便一记》 » 正文

前端某些属性的灵活应用场景

8 人参与  2024年10月20日 10:40  分类 : 《随便一记》  评论

点击全文阅读


在前端发展的早期阶段,由于技术的发展无法完全满足快速增长的需求,许多基础属性被灵活应用,甚至可以说是“滥用”它们的副作用来实现布局功能。例如,CSS2 早期的设计主要围绕内容展示(如图片和文字),但随着需求的提升,布局变得更加复杂。因此,开发者开始使用 floatpositiondisplay 等属性组合,来实现更加灵活和精确的布局方式。

1. CSS float 属性的演变:

最初的目的:CSS float 属性在 CSS2.1 中的设计最初是为了文字环绕图像。这意味着,你可以让文字围绕在一个浮动的图像旁边,使页面内容更具美观性。演变为布局工具:随着时间的推移,开发者发现 float 非常适合用作页面布局的一部分。开发者开始使用 float 来实现多列布局,侧边栏、导航栏等常见的页面元素布局也可以通过 float 来实现。这种做法在 flexboxgrid 等现代布局模型出现之前非常常见。虽然 float 并非为布局设计,但由于早期 CSS 没有其他更好控制复杂布局的方式,float 被广泛应用于此。

演变的原因

早期 CSS 布局能力不足,开发者需要通过各种现有工具来满足复杂的布局需求。虽然 float 的本意并不是布局工具,但其特性使其成为了一个巧妙的布局解决方案,尤其是在多列布局中。CSS2.1早期也是以内容为主(图片和文字),但是随着发展,中间需要更巧妙的布局

缺陷

使用 float 进行布局有不少问题,比如清除浮动clear: both;),有时需要添加额外的 HTML 标签来修复布局问题。随着 CSS 发展,float 在布局中的作用逐渐被 flexboxgrid 替代。

2. URL Hash(锚点)的演变:

最初的目的:URL 的 hash 值(例如 #section1)最初是为了页面内的定位,即允许用户通过点击链接快速跳转到页面的某个特定元素,通常用于长文档或内容繁多的页面。它不影响页面的重新加载,仅是浏览器内的定位功能。演变为单页应用(SPA)中的导航工具:随着 JavaScript 和 AJAX 技术的发展,开发者开始利用 hash 值实现无刷新页面的导航。通过监听 hash 的变化,JavaScript 可以根据不同的 hash 值加载不同的页面内容,从而实现类似于传统多页面应用的效果。这种技术成为了单页应用(SPA)的早期基础,因为它允许开发者创建流畅的导航体验,而无需真正重新加载页面。

演变的原因

hash 值变化不会触发页面刷新,这对单页应用来说非常重要,因为它减少了服务器请求和页面重载的开销。在单页应用中,URL hash 用来表示应用的当前状态或路由,开发者可以根据不同的 hash 值加载不同的内容部分,实现无刷新导航。

现代替代技术

现代的前端框架(如 React、Vue 等)引入了HTML5 History API,该 API 可以更好地控制浏览器的历史记录并更新 URL,而不依赖 hash。虽然 hash 仍然在许多 SPA 中使用,但 History API 更加灵活和优雅,能完全控制 URL 和历史记录。

3. 类似演变的其他例子

position: absolute 的演变:最初用于在页面中的特定位置固定元素,但开发者也利用它来制作各种复杂的布局方案,虽然这种方法也不完全违背其设计目的。表格布局的演变:在 CSS 引入之前,开发者使用 HTML 表格来布局整个页面,虽然表格的设计本意是用于展示表格数据。表格布局由于其僵硬性和冗余代码问题,最终被更为灵活的 CSS 布局所取代(如 floatflexboxgrid)。display: inline-block 的应用:虽然 inline-block 最初的用途是为内联元素提供块级样式,但开发者也发现它可以用于多列布局,直到 flexboxgrid 的出现,它在布局中被广泛使用。<input> 元素的 type="checkbox"type="radio" :这些本来用于表单数据选择的控件,开发者逐渐通过 JavaScript 对其进行了扩展,用来创建复杂的 UI 组件,超越了它们最初的设计。

总结:

随着前端生态的成熟,新的布局和路由管理方案(如 flexboxgridHistory API 等)逐渐替代了那些被滥用的早期方案,使得网页开发更加高效和易维护。


点击全文阅读


本文链接:http://zhangshiyu.com/post/174464.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1