首页 > 其他分享 >前端某些属性的灵活应用场景

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

时间:2024-09-30 21:53:18浏览次数:10  
标签:float hash 前端 布局 场景 开发者 属性 CSS 页面

在前端的发展过程中,因为部分属性的灵活性而发展更多应用场景,下面介绍两个

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 等)逐渐替代了那些被滥用的早期方案,使得网页开发更加高效和易维护。

标签:float,hash,前端,布局,场景,开发者,属性,CSS,页面
From: https://blog.csdn.net/youxinm24/article/details/142664418

相关文章

  • 65结构体-结构体数组。在C++中,结构体的定义是什么呢?如何新建一个结构体呢?新建好的结构
    问题描述:根据下列代码和结果回答下列问题。//Createdby黑马程序员.#include"iostream"usingnamespacestd;#include<string>//结构体定义structstudent{//成员列表stringname;//姓名intage;//年龄intscore;//分数}stu3;/......
  • 2024最新前端八股文
    近期整理了一下高频的前端面试题,分享给大家一起来学习。如有问题,欢迎指正!如需完整版可以【点此获取】【1】CSS面试真题【2】ES6面试真题【3】Git面试真题【4】HTTP面试真题【5】JavaScript面试真题【6】Linux面试真题【7】Node.js面试真题【8】React面试真题【9】Typ......
  • C# 匿名对象、动态属性
    以下代码基于Unity,放置在Editor文件夹下#ifUNITY_EDITORusingUnityEditor;usingUnityEngine;publicclassEditorTest:Editor{[MenuItem("Tools/EditorTest",true)]privatestaticboolValidateMenuItem(){return!EditorApplication.isP......
  • WPF MVVM入门系列教程(二、依赖属性)
    说明:本文是介绍WPF中的依赖属性功能,如果对依赖属性已经有了解了,可以浏览后面的文章。 为什么要介绍依赖属性在WPF的数据绑定中,密不可分的就是依赖属性。而MVVM又是跟数据绑定紧密相连的,所以在学习MVVM之前,很有必须先学习一下依赖属性。 依赖属性(DepencencyProperty)是什......
  • 从手机发布会的现场测试谈“用户使用场景”
    一红米Note14发布会的现场测试前几天红米Note14发布,现场测试手机防摔、防水、防油触摸以及长时间续航。先不管测试结果怎么样,能不能让大多目标用户满意。单说这种介绍形式,就足够吸引人。这种形式站在了目标用户的使用场景之中,提炼出用户使用中的痛点,针对痛点提出自己的解决方......
  • 谨防火灾!电瓶车检测AI算法助力城市/小区/园区多场景安全管理精细化、智能化
    随着人工智能技术的快速发展,AI智能分析网关V4在电瓶车检测领域的应用日益广泛。这一技术通过深度学习、计算机视觉等先进算法,实现了对电瓶车及其相关行为的智能识别和分析,为电瓶车的管理和应用提供了强大的技术支持。一、电瓶车检测算法的工作原理电瓶车检测AI算法主要基于计算......
  • XD6500S LoRa SIP模块芯片 集成了射频前端和LoRa射频收发器SX1262 动能世纪
    ​XD6500S是一系列LoRaSIP模块,集成了射频前端和LoRa射频收发器SX1262系列,支持LoRa和FSK调制。  收发器SX1262系列,支持LoRa和FSK调制。LoRa技术是一种扩频协议,针对LPWAN应用的低数据速率、超远距离和超低功耗通信进行了优化。通信进行了优化。  XD6500S的主动接收电流......
  • 只写后台管理的前端要怎么提升自己
    本人写了五年的后台管理。每次面试前就会头疼,因为写的页面除了表单就是表格。抱怨过苦恼过也后悔过,但是站在现在的时间点回想以前,发现有很多事情可以做的更好,于是有了这篇文章。本文首发在https://juejin.cn/post/7360528073631318027写优雅的代码一道面试题大概两年以前,面试......
  • 《循序渐进Vue.js 3.x前端开发实践》:前端开发者的必备指南
    文章目录......
  • 【前端】-jQuery(带你让你深入了解学习使用jQuery)
    引言: jQuery是一个轻量级的JavaScript库,自2006年发布以来,它迅速成为Web开发中不可或缺的工具。它通过提供简洁的语法和强大的功能,简化了HTML文档操作、事件处理、动画效果以及AJAX请求的实现。jQuery允许开发者以更少的代码实现复杂的任务,提升开发效率。此外,jQu......