页面布局基础知识

news2024/9/28 15:33:00

一、布局方案

1、什么是静态布局

概念

        静态布局,也称为固定布局,是一种传统网页设计。页面布局使用绝对长度单位,采用固定宽度。忽略浏览器实际,网页布局始终按照最初写代码时的布局来显示。

优点:简单

缺点:缺少变化,不能根据屏幕尺寸自适应

适用场景:针对固定分辨率开发特定网页,最简单的方法

2、什么是流体布局

概念

        流体布局,也称为流式布局或流动布局,是一种等比例缩放布局方式,在CSS代码中使用百分比来设置宽度,也称百分比自适应的布局。

优点

        页面中的元素会按照屏幕分辨率、尺寸自动进行适配调整,但整体布局不变。流式布局是移动端开发常用的一种布局方式。

缺点

  • 屏幕尺度跨度太大,则相对于其原始设计而言,过大或过小的屏幕上均不能正常显示
  • 文字均是用px固定的,无法自适应不同分辨率,可能会显示不协调

适用场景

        针对类似设备不同分辨率之间的兼容(分辨率差异较小)

概念扩展

        利用文档流的特性实现的各类布局效果,均可称为流体布局,普遍具有自适应特性。例如在width:auto或者格式化宽/高中,通过设定margin/border/padding来影响content的布局

        流体布局虽具有自适应特性,但并不等同于自适应布局,这么说吧,流体布局一定是自适应布局,但自适应布局不一定是流体布局。例如,table布局可以设置为100%自适应,但表格不符合流的特性,所以并不属于流体布局

3、什么是自适应布局

概念

        针对不同分辨率的屏幕,单独为其创建静态布局,每个静态布局对应一个分辨率范围,这种布局称为自适应布局。
        检测屏幕分辨率,切换到对应的静态布局,可以把自适应布局看做是静态布局的集合。

优点

        自适应布局需要开发多套界面来适应不同的终端,可以使页面在不同大小终端设备上自适应的显示。

        创建多个静态布局,每个静态布局对应一个屏幕分辨率范围。

缺点针对不同分辨率,需要多套设计,设计和开发的工作量都很大。

适用场景

        明确需要适配固定分辨率的屏幕,其余分辨率不作考虑。

概念扩展:

        自适应布局也可以是一个很大的概念,凡是具有自适应特性的布局均可以称为自适应布局。

4、什么是响应式布局

概念

        开发一套页面,适配不同屏幕分辨率的终端。一套页面兼容多个终端,而非为每一个终端单独做一个特定版本。

优点:一套页面,多端通用,如果足够耐心,效果完美

缺点:要匹配足够多的屏幕,工作量不小,设计也需要多个版本

适用场景

        解决不同设备之间、不同分辨率之间的兼容问题。一般用于解决分辨率跨度很大的情况,如PC,平板,手机等设备之间较大的分辨率差异。

5、响应式布局与自适应布局的区别

相同点:都会检测视口分辨率,对展示的页面进行调整

不同点:

  • 自适应须开发多套页面,响应式只需要开发一套
  • 自适应对屏幕适配是在一定的范围(如pc端>1024px/平板768~1024px/手机端<768px),通过检测视口分辨率,判断使用不同的静态页面
  • 响应式是一套页面同时兼容不同分辨率,通过检测视口分辨率,对同一套页面的布局和内容进行调整,而不是为每个终端做一个特定的版本,所以需要考虑的状态非常多

 结论

        总体来说,响应式布局优于自适应布局。但自适应布局更贴近实际,因为你只需要考虑固定几个分辨率即可,而响应式布局需要考虑非常多的状态。

6、什么是rem+js布局

什么是rem

        rem是一个相对长度单位,相对于根标签即html标签的字体大小,常用来做移动端适配(一份css+一份js调节font-size),PC端不推荐使用。

rem适配原理

举例如下:

  • 设计稿宽度:600px | 移动设备:600px
1)设置根标签字体大小 = 移动设备 / 设计稿高度 * 100 = 100px, 则1rem = 100px
2)设置一个盒子的宽度: width = 1rem(即100px),此时这个盒子屏占比为:1/6
  • 当相同代码运行在屏幕为300px的设备上时,JS需动态设置html的字体大小 = 移动设备 / 设计稿宽度 * 100 = 50px,即1rem = 50px, 这个盒子屏占比同样为1/6,以此达到移动适配的效果。

        可以看出适配的的关键就在于JS设置html的字体大小: font-size= 移动设备 / 设计稿宽度 * 100。那么这个公式怎么来的呢?

  • 首先,移动设备 / 设计稿宽度,是渲染效果相对于设计稿的缩放比
  • 然后,移动设备 / 设计稿宽度 * 100
  • 乘以100是为了把font-size(=rem)放大100倍,因为当font-size小于浏览器支持最小字体大小时,浏览器会把font-size设置为默认最小字体。也可以乘以其它值如50,但是为了好计算,一般设置为10或100,这样,我们只需要把设计稿宽度如 width=50px,除以10或100,改为5rem或0.5rem就好了

根标签font-size: 62.5%

  • 浏览器默认字体大小16px*62.5%=10px,这样1rem便是10px,方便了计算
  • 不将字体直接设置为10px是因为,有些浏览器默认的不是16px,或者用户修改了浏览器默认的字体大小
  • PC端设置成 font-size: 62.5%可能会出现问题,因为chrome不支持小于12px的字体,计算小于12px的时候,会默认取12px去计算,导致chrome的em/rem计算不准确
  • 可以尝试设置html字体为100px,body 修正为16px,这样 0.1rem 就是 10px,而body的字体仍然是默认大小,不影响未设置大小的元素的默认字体的大小

为什么PC端不推荐使用rem

  • 兼容性问题
  • PC端中的浏览器对字体大小有限制,谷歌默认最小12px
  • 其它......

7、怎么选择合适的布局

 二、布局技术

1、浮动

概念

        设置浮动后,元素会脱离文档流,被称为浮动元素。浮动元素按照指定方向发生移动,遇到父级的边界或相邻浮动元素就会停下来。

特点

        浮动元素会产生浮动流,所有产生浮动流的元素,对块级元素不可见。BFC元素、行级元素以及文本都能看到浮动元素,例如,浮动元素会被其它块级元素无视,但块级盒子中文本依然会为浮动元素让出位置。浮动元素彼此能被看到。

        浮动流会对它前/后的元素产生影响,必要时记得清除浮动

怎么解决块级盒子包不住子级浮动元素的问题(浮动元素对块级元素不可见)

方法1:父级盒子也设置浮动
方法2:清除浮动
方法3:父级盒子设置为inline-block
方法4:父级盒子设置为BFC元素,BFC可以改变块级元素无视浮动元素的特性

怎么清除浮动

  • 方法1:在浮动元素后面增加一个标签,为其添加clear:both属性
<p style="clear:both"></p>
  • 方法2:利用父级盒子的伪元素after(浮动元素自身的伪元素无效)
.wrapper::after {
    content: "";
    display: block;
    clear: both;
}
  • 注意,只有块级元素、行级块元素才能使clear属性生效

浮动元素的贴靠现象

  • 如果父元素的宽度能够显示所有浮动元素, 那么浮动的元素会并排显示
  • 如果父元素的宽度不能显示所有浮动元素, 那么会从最后一个元开始往前贴靠
  • 如果贴靠了前面所有浮动元素之后都不能显示, 最终会贴靠到父元素的左边或者右边

浮动元素与margin负值使用

        圣杯布局中,浮动元素设置左外边距为-100%,浮动元素出现上浮的现象。我是这样理解的,同向浮动元素之间会紧挨着排列,不会出现遮盖,且当前行空间不足时,会出现折行现象。

        如果当前行空间足够,同向的浮动元素肯定在一行显示。

2、vertical-align知识点

  • 一行中有多个内容时,默认基线对齐
  • 各种字体、图片、行内标签等可展示的内容都有各自的基线,小写字母x的最下方恰好是基线的位置
  • vertical-align只针对行内元素,改变了行内元素的对齐方式,默认基线对齐

3、绝对定位是否具有流动性

对立方向同时发生定位的时候,且该方向上没有具体的宽或高时,绝对定位具有流动特性。

4、浮动和绝对定位脱离文档流的区别

  • 浮动虽脱离了文档流,但仍占据位置,属于半脱离文档流。如果对所有元素设置浮动,则它们会顺序排列。
  • 浮动对块级盒子不可见,但块级盒子中的内容是可以看见浮动元素的
  • 绝对定位是完全脱离文档流

5、圣杯布局与浮动、浮动与margin负值

        学浮动,肯定要了解圣杯布局的。

        左栏外边距设置为 -100%,这样一来,由于浮动的关系,左侧栏就能上位,与中间栏交叠在一起,并占据了左边。而右侧栏由于左侧栏的上位,自动向前浮动到了原来左侧栏的位置

6、圣杯布局

  • 特点:中间宽度自适应,两边内容定宽,dom结构先写中间列部分,中间内容优先渲染
  • 优点:优先渲染主内容区域,不需要添加额外的dom节点
  • 缺点:中间部分的最小宽度不能小于左侧部分的宽度,否则左侧部分掉到下一行

7、双飞翼布局与圣杯布局的联系和区别

  • 和圣杯布局一样,也是把主列放在文档流最前面,使主列优先加载
  • 两种布局方式在实现上也有相同之处,都是让三列浮动,然后通过负外边距形成三列布局
  • 两种布局方式的不同之处在于如何处理中间主列的位置:圣杯布局是利用父容器的左、右内边距+两个从列相对定位; 双飞翼布局是把主列嵌套在一个新的父级块中利用主列的左、右外边距进行布局调整

8、等高布局

  • 分为真等高布局和伪等高布局
  • 正padding+负margin的方式属于伪等高布局

9、CSS属性direction

规定文本的方向。ltr表示从左往右,rtl表示从右往左。

10、盒模型

盒模型的构成

  • 盒模型分为四部分:margin、border、padding、content
  • 如果给盒模型添加一个背景图片,也会作用于padding和border

标准盒模型和IE盒模型的区别

  • 区别在于设置宽高时,所对应的范围不同
  • 标准盒模型宽高属性的范围只包含content,而IE盒模型的宽高属性范围包含了border、padding和content
  • 一般来说,我们可以通过修改元素的box-sizing属性来改变元素的盒模型(content-box、border-box)

11、层模型【定位】

绝对定位

  • 脱离原来的位置进行定位。正常情况下同一个位置不能有两个元素,当一个元素成为绝对定位元素的时候,会脱离原来的层,跑到上面的层,它原来的位置就可以被其他元素占据
  • 相对于最近的有定位的父级进行定位,如果没有那么相对于文档进行定位
  • 如果设置了宽高,那么定位元素出生的位置与原来的位置垂直对应
  • 绝对定位的元素,内部会自动转换为inline-block(包裹性)
  • 绝对定位元素在特定条件下也具有流体特性,即对立方向同时发生定位
  • 与浮动不同,绝对定位完全脱离文档流

相对定位

  • 保留原来的位置进行定位
  • 来到更高一层,并相对于自己原来的水平位置进行定位
  • 定位元素出生的位置与原来的位置垂直对应
  • 通常用relative作为参照物,用absolue进行定位,absolue可以任意调换参照物,定位更灵活
  • 相对定位不会脱离文档流

fixed定位

  • 完全脱离文档流,相对于视口进行定位

z-index

一个定位元素代表一层,z-index用来设置层,数值越大越靠近你。z-index是z轴,出发点是屏幕,正方向向你来延伸

12、BFC

什么是BFC元素

BFC全称Block Formatting Context,翻译为块格式化上下文,是由CSS2.1规范定义的一个关于CSS渲染定位的概念。BFC是页面上一个隔离的独立容器,容器里面的子元素不会影响到外面元素,反之亦然。

特点

  • CSS把html中的每一个元素都当作一个盒子,而且它进一步的认为,每一个盒子里面都有一套渲染规则。正常来说盒子里面的渲染规则都是固定的,但你可以通过设置触发BFC语法,让这个盒子遵循另一套语法规则。
  • 就像一层结界,形成一个封闭空间,内外元素不会互相影响

如何触发一个盒子的bfc,将其转化为bfc元素

  • 方法1:position:absolute
  • 方法2:display:inline-block
  • 方法3:float:left/right
  • 方法4:overflow:hidden

BFC的用途

  • 可以用来解决浮动的影响、可以解决margin塌陷......
  • 最主要的用途是用来实现更健壮、更智能的自适应布局

13、margin塌陷

现象

垂直方向的margin,父子元素(block)是结合到一起的,它俩会取最大的值

解决方案

  • 给父级元素添加border-top:1px solid red;(不推荐,平白多出1px,有误差)
  • 将父元素改变为BFC元素

14、margin合并

现象

兄弟结构的元素(block)垂直方向的margin是合并的,它俩会取最大的值

解决方案

  • 给其中一个元素加一个BFC元素作为父级,或两个单独加父级,但兄弟元素不能处在同一个父级下。不推荐这样解决,html是结构,就相当于大楼的钢筋混凝土结构,不能随便加毫无意义的html
  • 若兄弟中有明确设置宽高,将其中之一转换为行级块元素也可以解决问题,但是不能两个都变

15、CSS选择器的种类

  • id选择器
  • 类选择器
  • 标签选择器(div,h1,p)
  • 后代选择器(h1 p)
  • 相邻后代选择器(子)选择器(ul>li)
  • 兄弟选择器(li~a)
  • 相邻兄弟选择器(li+a)
  • 属性选择器(a[rel="external"])
  • 伪类选择器(a:hover,li:nth-child)
  • 伪元素选择器(::before、::after)
  • 通配符选择器(*)

16、CSS权重

17、什么是文档流

流实际上是CSS世界中的一种基本的定位和布局机制,可以理解为现实世界的一套物理规则。文档流就像一条专门用来引导元素排列和定位的水流。

18、table标签

概述

table标签在CSS诞生前就已经出现,table有着自己的世界,流的特性对table不适用。不推荐使用。

缺点

  • table布局的文件k数比DIV+CSS布局多
  • table必须在页面完全加载后才显示,没有加载完毕前,table为一片空白。而div是逐行显示,不需要页面完全加载完毕,就可以一边加载一边显示
  • 非表格内容用table来装,不符合标签语义化要求,不利于SEO
  • table的嵌套性太多,用DIV代码会比较简洁

替代方案

如果确实需要表格布局,使用display:table替代,几乎是和table系的元素相对应的

三、其它

1、适配多分辨率的一种特殊情况

        如果多分辨率之间存在倍数关系,则可以只出一套设计,其余分辨率下用缩放加媒体查询搞定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可视化图表组件体系的构建(内附全套开源文件)

Part01————————前言 EasyV作为一个低代码数字孪生可视化搭建平台&#xff0c;其图表组件作为可视化项目建设的基础构成发挥着重要的作用。 经过多年可视化项目交付经验&#xff0c;沉淀了一套形态多样、样式精细、高配置度的数据可视化图表。 Figma开源文件社区获取入…

【MySQL | 进阶篇】05、MySQL 视图、触发器讲解

目录 一、视图 1.1 介绍 1.2 语法 1.2.1 演示示例 1.3 检查选项 1.3.1 CASCADED 级联 1.3.2 LOCAL 本地 1.3.3 示例演示 1.4 视图的更新 1.4.1 示例演示 1.5 视图作用 1.6 案例 二、触发器 2.1 介绍 2.2 语法 2.3 案例 2.3.1 插入数据触发器 2.3.2 修改数据…

国内版 ChatGPT值不值得上手----PlumGPT测评

前言&#xff1a;什么是PlumGPT&#xff08;国内版的chatgpt&#xff09;&#xff0c;PlumGPT国内版ChatGPT是一个基于GPT-3.5算法的人工智能聊天机器人&#xff0c;能够通过自然语言与用户交互&#xff0c;提供各种服务和解答各种问题。本文将对PlumGPT国内版ChatGPT进行全面测…

NetSuite GPT的辅助编程实践

作为GPT综合症的一种表现&#xff0c;我们今朝来探究下GPT会不会抢了我们SuiteScript的编程饭碗&#xff0c;以及如何与之相处。以下内容来自我个人的实践总结。 我们假设一个功能场景&#xff1a; 为了让用户能够在报价单上实现“一键多行”功能&#xff0c;也就是在报价中可…

【精华】AIGC之文生视频及实践应用

AIGC之文生视频及实践应用 &#xff08;一&#xff09;序言 从 Stable Diffusion 到 Midjourney&#xff0c;再到 DALLE-2&#xff0c;文生图模型已经变得非常流行&#xff0c;并被更广泛的受众使用。随着对多模态模型的不断拓展以及生成式 AI 的研究&#xff0c;业内近期的工…

78-Linux_tcp服务器客户端编程流程

tcp服务器客户端编程流程一.c/s模型1.什么是c/s模型?2.c/s模型的逻辑二.TCP服务器端和TCP客户端的工作流程1.流程2.TCP三次握手3.TCP四次挥手一.c/s模型 1.什么是c/s模型? 答:(c/s)模型即(客户端/服务器端)模型 所有的客户都通过服务器端访问所需资源. 模型如图所示: 2.c…

Python样条插值和坐标映射

文章目录样条插值基本原理scipy实现坐标映射样条插值基本原理 由于数组本身是格点化了的&#xff0c;所以对数组的旋转、平移和缩放&#xff0c;并不像实数空间中那么简单。以一维的平移为例&#xff0c;现有三个点&#xff0c;坐标为0,1,2&#xff0c;值对应为a,b,c&#xff…

小黑子—多媒体技术与运用基础知识二:数字音频处理技术

多媒体技术与运用2.0多媒体系列第二章1. 音频处理概述1.1 什么是声音1.2 声音的基本参数1.3 人的听觉特性1.4 音频信号处理过程2.音频的数字化2.1 音频的采样2.2 音频的量化2.3 声道数2.3 音频的编码与压缩2.4 数字音频的质量3.音频文件格式及标准3.1 波形文件格式3.2 MPEG音频…

打造高效Android应用,从Hilt注入框架开始

概述 在 Android 开发中&#xff0c;注入解耦是一种设计模式&#xff0c;用于解决代码耦合的问题。通过使用注入技术&#xff0c;可以将应用程序中的不同部分解耦&#xff0c;从而使得代码更加灵活、易于维护和升级。 在 Android 中&#xff0c;注入解耦通常使用依赖注入&…

R -- 如何处理缺失数据

brief 识别缺失值 当传入向量&#xff0c;返回的是包含逻辑向量的等长向量。complete.cases()用来识别矩阵或者数据框有没有包含缺失值的行&#xff0c;若整行数据完整则返回TRUE&#xff0c;若行数据包含缺失值&#xff0c;不管几个缺失值则返回FALSE。 探索缺失值模式 列表图…

高速存储器

由于CPU和主存储器之间的速度上的不匹配限制了计算机系统的工作速度&#xff0c;为了提高CPU和主存之间的数据传输率&#xff0c;可以采用并行技术的存储器&#xff1a; 双端口存储器多模块交叉存储器 双端口存储器 同一个存储器具有两组相互独立的读写控制线路&#xff0c;…

Direct3D 12——灯光——聚光灯光

一个与聚光灯光源&#xff08;spotlight&#xff09;相近的现实实例是手电筒。从本质上来说&#xff0c;聚光灯由位置Q向方向d 照射出范围呈圆锥体的光。 一个聚光灯以位置Q向方向d发射出半顶角为Φmax 的圆锥体范围的光 其中&#xff0c;P为被照点的位置&#xff0c;Q是聚光…

基于html+css的盒子展示8

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

一文4000字使用JavaScript+Selenium玩转Web应用自动化测试

自动化测试 在软件开发过程中, 测试是功能验收的必要过程, 这个过程往往有测试人员参与, 提前编写测试用例, 然后再手动对测试用例进行测试, 测试用例都通过之后则可以认为该功能通过验收. 但是软件中多个功能之间往往存在关联或依赖关系, 某一个功能的新增或修改可能或影响到…

手把手教你搭建ROS阿克曼转向小车之(霍尔编码器数据读取与速度计算)

上一篇文章已经介绍了如何驱动直流有刷电机转动起来&#xff0c;这篇文章讲解如何获取编码器的计数值&#xff0c;并且计算出速度信息。在实际的运行中&#xff0c;随着机器的重量不一样&#xff0c;电机受到的阻力就会不一样&#xff0c;给定同样的PWM在不同载重的情况下速度会…

Alien Skin ExposureX8最新ps中文版调色滤镜插件

Exposure是用于创意照片编辑的最佳图像编辑器。Exposure结合了专业级照片调整&#xff0c;庞大的华丽照片外观库以及高效的设计&#xff0c;使其使用起来很愉悦。新的自动调整功能可简化您的工作流程&#xff0c;并使您进入创意区。 Alien Skin Exposure 拥有超过500种预设效果…

基于线性支持向量机的词嵌入文本分类torch案例

一、前言 简介线性支持向量机,并使用线性支持向量机实现文本分类, 输入文本通过词嵌入方法转换成浮点张量,给出torch案例 线性支持向量机&#xff08;Linear Support Vector Machine&#xff0c;简称Linear SVM&#xff09;是一种常用的分类算法&#xff0c;它通过一个超平面来…

TiDB实战篇-TiDB Cluster部署

简介 部署TiDB Cluster部署&#xff0c;熟系集群的基础操作。 集群规划 机器拓扑 3pd,3tikv,1tidb_server.1tiflash,监控。 192.168.66.10192.168.66.20192.168.66.21 pd_servers tikv_servers tidb_servers tiflash_servers pd_servers tikv_servers monitoring_servers…

MySQL中使用IN()查询到底走不走索引?

MySQL中使用IN&#xff08;&#xff09;查询到底走不走索引&#xff1f; 看数据量 EXPLAIN SELECT * from users WHERE is_doctor in (0,1); 很明显没走索引&#xff0c;下面再看一个sql。 EXPLAIN SELECT * from users WHERE is_doctor in (2,1);又走索引了&#xff0c;所以…

Yolov5一些知识

1 Yolov5四种网络模型 Yolov5官方代码中&#xff0c;给出的目标检测网络中一共有4个版本&#xff0c;分别是Yolov5s、Yolov5m、Yolov5l、Yolov5x四个模型。 1.1Yolov5网络结构图 eg:Yolov5s 2.1 Yolov3&Yolov4网络结构图 2.1.1 Yolov3网络结构图 Yolov3的网络结构是…