web 页面布局:(二)float 浮动布局

news2024/11/24 11:45:32

web 页面布局:(二)float 浮动布局

  • 页面宽度
    • 使用样式居中
  • 使用浮动
    • 浮动元素外的剩余空间
    • 使用浮动的高度细节

页面宽度

在很早很早的时期,各大网站的底部都会有这么类似的一句声明:最佳分辨率 sss x ttt,比如 648 * 480、800 x 600、1024*768 之类的。这通常是因为网站制作方,仅仅针对一种分辨率进行了页面制作,并且,由于当时各种浏览器对于样式解析的各种不同标准,造成了对各种宽度、各种浏览器的适配存在着根本困难,所以,通常是用 csshacker 的方式来实现不同的浏览器适配之后,就再没有耐心毅力去实现不同分辨率的适配了。所以,在出现弹性布局之前,对页面设置一个同一的宽度,用来适配最多的分辨率是一个通用的方式。

CSDN 文盲老顾的博客,https://blog.csdn.net/superwfei
老顾的个人社区,https://bbs.csdn.net/forums/bfba6c5031e64c13aa7c60eebe858a5f?category=10003&typeId=3364713

嗯,现在各位小伙伴的电脑,那怕笔记本,分辨率也不会太低了,那么,我们就以1200宽度作为我们 html 主体的宽度,超出的宽度,则直接用空白进行填充好了。

使用样式居中

在样式引入到 html 页面后,越来越多的渲染效果设置,被放到了样式中,而将原有的和渲染相关的属性都渐渐弃用了。比如,现在的人们制作页面,已经很少再使用的 font 标签,被 span 代替。除了正文内容外,很少使用的段落标签 p,被 div 代替,嗯。。。。这个有其他原因,因为段落标签不支持嵌套。

而div就是代替 p 进行布局的另一个块级元素了。

  <p style="border:1px solid #ccc;">
	第一段段落
	<p style="border:1px solid #ccc;">第二段落</p>
	被切开的第一段落,形成了第三段落
  </p>
  <div style="border:1px solid #ccc;padding:5px;">
	外层 div
	<div style="border:1px solid #ccc;padding:5px;">内层 div</div>
  </div>

在这里插入图片描述
嗯,现在,我们来实现 div 的居中,包括设置宽度,一个很常见的样式 margin ,也就是外边距,将横向距离设置为 auto 即可。

  <div style="border:1px solid #ccc;padding:5px;width:1200px;margin:0px auto;">
	外层 div
	<div style="border:1px solid #ccc;padding:5px;">内层 div</div>
  </div>

在这里插入图片描述
在样式设置中,margin(外边距)和 padding(内边距)这样的,都是四个样式的统一缩写,展开的话,可以写作 margin-top、margin-right、margin-bottom、margin-left。margin 这种统一的写法则是省略的写法,当只有一个值的时候,表示四个方向的设置是一致的。当有两个值的时候,分别表示纵向设置(top 和 bottom)和横向设置(right 和 left)。当具有三个值的时候,表示 top ,横向,bottom。四个值。。。。嗯不说了。

margin:0px auto; 这里的设置方式,就表示纵向外边距为0像素,横向外边距为自动,左边和右边边距一样。。。这样就达成了居中效果。

使用浮动

在使用浮动布局之前,我们首先要明确一个概念,就是之前表格布局文章中提到的,html 的内容,是自上而下的顺序渲染的,而块级元素,则会铺满整个行。

使用浮动,则是将块级元素,自动变成了行内元素方式,但是,这里说一个但是,他所占用的高度,不会少,而是根据元素,或指定的高度,强制占用了一整个高度。同时,float 设置的浮动,是在同一个层深的,也就是说,不管嵌套了几层元素,只要设置 float,他们单独是一个层。嗯。。。说的可能比较绕,咱们看个实例:

  <div style="border:1px solid #ccc;width:600px;">
	<div style="padding:5px;margin:5px;float:left;border:1px solid #ccc;">第一个 float 向左</div>
	<div style="padding:5px;margin:5px;float:left;border:1px solid #ccc;">第二个 float 向左</div>
	<div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;">第三个 float 向右</div>
	<div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;">第四个 float 向右</div>
	<div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;">第五个 float 向右</div>
  </div>
  <div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;">第N个 float 向右</div>
  <div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;clear:both;">第N + 1个 float 向右</div>

在这里插入图片描述
在本例里,前边5个 div 嵌套在一个父级元素内,各自浮动,这都好理解,但是,注意第 N 个 div,他是和父级元素同级的,但同样浮动在第五个 div 旁边了,只有 N + 1,因为设置了清除浮动 clear:both;所以他从新开了一行,开始浮动。当该行放不下浮动的元素时,浮动元素就会再开一行去进行渲染。

浮动布局,在某些场景,使用是非常方便的,比如,我们列出所有文件及其图标、文件名,也就是 windows 的小图标模式,就是这样的例子。

float:left/right; 设置元素左右浮动,在浮动时,自动将块级元素修正为行内元素。
clear:both; 清除所有浮动效果,即从当前元素开始,所有浮动从新计算,从新开辟占用的行。

对于不确定数量的内容,我们通常都是使用一个可增加滚动轴的父级元素,内部使用浮动方式存放其子项,来满足我们的 ui 设计。

浮动元素外的剩余空间

对于浮动元素外的剩余空间,是非浮动内容可以利用的空间,比如上边的例子中,我们可以在第五个浮动前,追加一些文本内容,可以看出一些效果来。

  <div style="border:1px solid #ccc;width:600px;">
	<div style="padding:5px;margin:5px;float:left;border:1px solid #ccc;">第一个 float 向左</div>
	<div style="padding:5px;margin:5px;float:left;border:1px solid #ccc;">第二个 float 向左</div>
	<div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;">第三个 float 向右</div>
	<div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;">第四个 float 向右</div>
	这里放一些纯文本,这里放一些纯文本,这里放一些纯文本,这里放一些纯文本,这里放一些纯文本,
	<div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;">第五个 float 向右</div>
  </div>
  <div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;">第N个 float 向右</div>
  <div style="padding:5px;margin:5px;float:right;border:1px solid #ccc;clear:both;">第N + 1个 float 向右</div>

在这里插入图片描述
可以看到,剩余的空位被文字内容占满了,而文字换行,也会影响到浮动布局,第五个浮动,就是在文字内容的最后一行上进行的。

同时,可以对比上下两个截图,有文字内容的,父级 div 被撑开高度了,而没有文字内容的,父级 div 的高度为0,因为浮动元素时单独在一个渲染层上进行的。。。。

使用浮动的高度细节

在使用浮动布局的时候,需要注意每个浮动元素的高度,这次用一个带有高度设置的浮动布局,来更深的了解一下浮动的机制。

  <div style="border:1px solid #ccc;width:600px;">
	<div style="padding:5px;float:left;border:1px solid #ccc;height:110px;">第一个 float 向左</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;">第二个 float 向左</div>
	<div style="padding:5px;float:right;border:1px solid #ccc;">第三个 float 向右</div>
	<div style="padding:5px;float:right;border:1px solid #ccc;">第四个 float 向右</div>
	<div style="padding:5px;float:right;border:1px solid #ccc;height:40px;">第五个 float 向右</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;">第六个 float 向左</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;">第七个 float 向左</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;">第八个 float 向左</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;">第九个 float 向左</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;">第十个 float 向左</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;">第11个 float 向左</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;height:30px;">第12个 float 向左</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;">第13个 float 向左</div>
	<div style="padding:5px;float:left;border:1px solid #ccc;">第14个 float 向左</div>
  </div>
  <div style="padding:5px;float:left;border:1px solid #ccc;">第15个 float 向左</div>
  <div style="padding:5px;float:left;border:1px solid #ccc;">第16个 float 向左</div>
  <div style="padding:5px;float:left;border:1px solid #ccc;">第17个 float 向左</div>
  <div style="padding:5px;float:left;border:1px solid #ccc;">第18个 float 向左</div>
  <div style="padding:5px;float:right;border:1px solid #ccc;">第N个 float 向右</div>
  <div style="padding:5px;float:right;border:1px solid #ccc;clear:both;">第N + 1个 float 向右</div>

加粗样式
这次放了一大片 div ,其中有三个 div 高度进行了一点点调整,第一个,第五个,第12个,然后就可以看出浮动时根据最后的可以最靠近页面顶部的位置顺序渲染的。

比如第12个之后的 div ,都只能渲染在右侧,左侧就成为了死角,无法再次利用了,直到新的浮动元素开辟新的行时,已经不在与第12个div发生交集时,才能在左侧浮动了。

具体的浮动效果,依实际情况而定,这里粗略的提一下,高度的设置,会严重影响浮动效果,在实际应用的过程中,应尽量避免因高度问题产生的浮动偏差。

在这里插入图片描述

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

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

相关文章

web前端设计师的具体职责

web前端设计师的具体职责 web前端设计师负责将设计图转化成页面&#xff0c;并实现页面动态效果&#xff0c;并配合后端程序员嵌入数据。下面是学习啦小编整理的web前端设计师的具体职责。 web前端设计师的具体职责1 职责&#xff1a; 1.负责网站页面的整体美工创意、设计与…

redis 笔记

文章学习参考&#xff1a;Redis 教程 | 菜鸟教程 (runoob.com) 1、安装并执行 1.1 安装 下载地址&#xff1a;https://github.com/tporadowski/redis/releases 点击下面的压缩文件下载&#xff0c;版本不一定是这个。 1.2 执行redis 打开cmd窗口&#xff0c;跳转到redis解压的…

void QWidget::stackUnder(QWidget *w)

Places the widget under w in the parent widgets stack. To make this work, the widget itself and w must be siblings. 在父窗口的栈中&#xff0c;放置widget在w下面。 为了生效&#xff0c;widget和w必须是兄弟。 什么意思呢&#xff1f; widget和w的父窗口必须是同一个…

计算机与网络发展的7个阶段【图解TCP/IP(笔记一)】

文章目录 计算机与网络发展的7个阶段批处理分时系统计算机之间的通信计算机网络的产生互联网的普及以互联网技术为中心的时代从“单纯建立连接”到“安全建立连接” 计算机与网络发展的7个阶段 批处理 所谓批处理&#xff0c;是指事先将用户程序和数据装入卡带或磁带&#xf…

从小白到大神:可能是最全的前端学习大纲

导读 俗话说得好&#xff1a;“不谋全局者不足谋一域。”前端开发是一个广泛而复杂的领域&#xff0c;需要掌握多方面的知识。 在之前的文章中&#xff0c;我们介绍了计算机领域的各种方向&#xff0c;以及前端在公司中的地位和日常工作内容&#xff0c;相信你对前端开发已经…

冰冰学习笔记:初识网络

欢迎各位大佬光临本文章&#xff01;&#xff01;&#xff01; 还请各位大佬提出宝贵的意见&#xff0c;如发现文章错误请联系冰冰&#xff0c;冰冰一定会虚心接受&#xff0c;及时改正。 本系列文章为冰冰学习编程的学习笔记&#xff0c;如果对您也有帮助&#xff0c;还请各位…

剑指offer30天打卡活动

文章目录 Day1: 用两个栈实现队列包含min函数的栈 一、用两个栈实现队列OJ链接 本题思路&#xff1a;定义两个栈&#xff0c;&#xff08;Enqueue&#xff09;是用来存储入队的元素&#xff0c;&#xff08;Cnqueue&#xff09;用来出队的&#xff0c;那么如何进行操作呢&am…

Win10 显示WLAN不安全,并且链路速度54/54 (Mbps),通过K3C路由器修改协议解决,无线网卡连接速度只有54Mbps

省流 换个安全协议就好了。 使用有线等同隐私(WEP)或临时密钥完整性协议(TKIP)加密配置时&#xff0c;客户端设备的WiFi数据传输速率不会超过54Mbps&#xff0c; 问题 我用的是K3C路由器&#xff0c;今天跑百度网盘感觉很奇怪&#xff0c;突然就只有10MB/s了&#xff0c;感觉…

盖子的c++小课堂——第十八讲:栈

前言 OK呀&#xff0c;说到做到&#xff0c;我们的粉丝们也是很给力呀&#xff0c;终于破了400粉~~ 我太感动了aaaaaaaaaaaaaaaaaaaaaaaa 话不多说&#xff0c;我们直接开始&#xff01; 栈的定义 栈&#xff0c;是什么&#xff1f; 例1-弹夹 你见过手枪吗&#xff1f;它…

安装Node.js和创建Vue-cli工程

NodeJs中文网&#xff1a;下载 | Node.js (nodejs.org) 注意事项&#xff1a; 最好下载Node16版本&#xff0c;除非你后续使用的Vue-cli版本比较高&#xff0c;像我使用的Vue-cli3和4.1.1版本去创建工程&#xff0c;然后run运行会报错Error: error:0308010C:digital envelope …

echarts自定义legend样式

转载自&#xff1a; https://blog.csdn.net/changyana/article/details/126281275 目标样式&#xff1a; 使用legend中的formatter以及textStyle.rich legend: { // 对图形的解释部分orient: vertical,right: 10,y: center,icon: circle, // 添加formatter: function(name)…

绘制图形、ROI截取、高斯三角形

1、直线 2、圆形 3、椭圆 4、矩形 5、多边形 6、文字 //图形绘制 void test1() {Mat img Mat::zeros(Size(512, 512), CV_8UC3);//生成一个黑色图像用于绘制几何图形//绘制圆形circle(img, Point(50, 50), 25, Scalar(255, 255, 255), -1);//绘制一个实心圆circle(img, Point(…

Flutter 轮播图 flutter_swiper属性说明使用

今天分享的内容是关于图片轮播的实现&#xff0c;使用到的库是flutter_swiper&#xff0c;如果有出现空检查报错的&#xff0c;可以使用flutter_swiper_null_safety 轮播图效果如下&#xff1a; 先贴出基本参数详解&#xff1a; 参数说明itemBuilder列表的构造indicatorLayou…

Redis持久化之RDB和AOF

6、Redis持久化 6.1、背景 首先Redis作为一种缓存性数据库&#xff0c;如果缓存中有数据&#xff0c;他可以很快的把数据返回给客户&#xff0c;至于为什么他可以很快的将数据返回给客户&#xff0c;主要是因为他是一种内存性数据库&#xff0c;不需要额外的IO操作&#xff0…

报错:Destructuring assignments are not supported by current javaScript version

报错信息&#xff1a;当前JavaScript 版本不支持非结构化赋值 报错示例&#xff1a; 报错的原因是&#xff1a;这种语法是EcmaScript6才有的&#xff0c;以往的版本没有&#xff0c;修改一下javaScript的版本即可&#xff0c;方法如下&#xff1a;找到setting----->Languag…

接口自动化测试项目,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等

项目介绍 接口自动化测试项目2.0 软件架构 本框架主要是基于 Python unittest ddt HTMLTestRunner log excel mysql 企业微信通知 Jenkins 实现的接口自动化框架。 前言 公司突然要求你做自动化&#xff0c;但是没有代码基础不知道怎么做&#xff1f;或者有自动…

解密Vue 3:透过原理看框架,揭开它的神秘面纱

文章目录 1. 响应式系统2. 组件化3. 虚拟 DOM4. 编译器5. 插件系统附录&#xff1a;前后端实战项目&#xff08;简历必备&#xff09; 推荐&#xff1a;★★★★★ Vue 3 是一种用于构建用户界面的现代 JavaScript 框架。它基于响应式编程和虚拟 DOM 技术&#xff0c;并通过组件…

postgresql(一):使用psql导入数据库

使用psql导入数据库 1、概述2、具体问题3、总结 1、概述 大家好&#xff0c;我是欧阳方超。 听说postgresql越来越流行了&#xff1f;psql是一个功能强大的命令行工具&#xff0c;用于管理和操作PostgreSQL数据库。它提供了一个交互式环境&#xff0c;允许用户执行SQL查询、创…

MISA代码配置运行

MISA源码github链接&#xff1a;click here IDE: Pycharm专业版2022.2.2 python3.8 一、创建虚拟环境&#xff1a; 尝试 源码中给了environment.yml,可以用以下命令创建&#xff0c;但可能是由于某些库的版本问题&#xff0c;尝试失败。 conda env create -f environment.…

协议分层与OSI参考模型【图解TCP/IP(笔记三)】

文章目录 协议分层与OSI参考模型协议的分层理解协议的分层OSI参考模型OSI参考模型中各个分层的作用 协议分层与OSI参考模型 协议的分层 OSI参考模型将通信协议中必要的功能分成了7层。通过这些分层&#xff0c;使得那些比较复杂的网络协议更加简单化。 在这一模型中&#xf…