CSS浮动&定位&布局
浮动简介
浮动最早起设计出来是为了实现文字环绕图片或者文字环绕的效果,现在浮动是主流的页面布局方式之一
float:浮动属性,值可以是left、right对应向左和向右浮动
元素浮动之后的特点
- 脱离文档流
- 不管浮动前是什么元素,浮动后,默认宽高都是被内容撑开,而且可以设置宽高
- 不会独占一行,可以与其他元素共用一行
- 不会margin合并,也不会margin塌陷,能够完美设置四个方向的padding和margin
- 不会像行内块一样被当做文本处理(没有行内块的空白问题)
浮动后的影响及解决方式
浮动影响
- 对兄弟元素的影响:后面的兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面,对前面兄弟无影响
- 对父元素的影响:不能撑起父元素的高度,导致父元素高度塌陷,但父元素的宽度依然束缚浮动的元素
解决影响(清除浮动)
/* 清除左浮动影响*/
clear:left;
/* 清除右浮动影响*/
clear:right;
/* 清除左右浮动影响*/
clear:both;
解决方案:
给父元素指定高度
给父元素也设置浮动,带来其他影响
给父元素设置
overflow:hidden在所有元素的嘴后面,添加一个块级元素,并给该块级元素设置
clear:both给浮动元素的父元素,设置伪元素,通过伪元素清除浮动,原理与方案4相同,推荐使用
.parent::after {
content:"";
display:block;
clear:both;
}
布局中的一个原则:设置浮动的时候,兄弟元素要么全都浮动,要么全都不浮动
CSS相对定位
如何开启相对定位
- 给元素设置
postion:relative设置相对定位 - 可以使用
left、right、top、bottom四十属性调整位置 - 相对定位是相对自己原来的位置进行调整
相对定位的特点
不会脱离文档流,元素位置的变化,只是视觉效果上的变化,不会对其他元素产生影响
定位元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的
默认规则是定位的元素会盖在普通元素智商,如果是定位的两个元素,后IE的元素会盖在先写的元素上面
left和right不能一起设置,bottom和top不能一起设置相对定位的匀速,也可以继续浮动、设置margin调整位置,但是不推荐
相对定位和绝对定位一般配合使用
CSS绝对定位
如何开启绝对定位
- 给元素设置
postion:absolute;可以实现绝对定位 - 可以使用
left、right、top、bottom四个属性调整位置
绝对定位的参考点
包含块
- 对于没有脱离文档流的元素:包含块就是父元素
- 对于脱离文档流的元素:包含块就是第一个拥有定位属性的祖先元素,如果所有祖先元素都没有定位,那么包含块就是整个页面
绝对定位是根据包含块来调整位置
绝对定位的特点
脱离文档流,会对后面的兄弟元素、父元素有影响
left不能喝right一起设置,top和bottom不能一起设置
绝对定位、浮动不能同时设置,如果同时设置则浮动失效以定位为主
绝对定位的元素也能通过margin调整位置,不推荐
无论是什么元素(行内、行内块、块),设置了绝对定位之后,都变成了定位元素
定位元素:默认宽、高点都被内容所撑开,且能自由设置宽高
固定定位
如何设置固定定位
- 给元素设置
postion:fixed;可以实现固定定位 - 可以使用
left、right、top、bottom四个属性调整位置 - 固定定位的参考点是视口
固定定位元素的特点
- 脱离文档流,会对后面的兄弟元素、父元素有影响
- left不能和right一起设置,top和bottom不能一起设置
- 固定定位和浮动不能同时设置,如果同时设置,浮动失效,以固定定位为主
- 固定定位的元素,也能通过margin调整位置,但是不推荐
- 无论是什么元素(行内、行内块、块),设置了绝对定位之后,都变成了定位元素
粘性定位
如何设置粘性定位
- 给元素设置
postion:sticky;可以实现粘性定位 - 可以使用
left、right、top、bottom四个属性调整位置 - 粘性定位的参考点是离它最近的一个拥有滚动机制的祖先元素,即便这个祖先不是最近的真实的可滚动祖先
粘性定位的特点
- 不会脱离文档流,它是一种专门用于窗口滚动时的新的定位方式
- 最常用的是top值
- 粘性定位可以同时设置浮动、margin,但是不推荐
- 粘性定位和相对定位的特点基本一致,不同的是:粘性定位可以在元素到达某个位置时将其固定
定位的层级
- 定位元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的
- 如果发生重叠,默认的情况是:后面的元素会显示在前面元素智商
- 可以通过css属性
z-index调整元素的显示层级 z-index的属性值是数字,没有单位,值越大显示层级越高- 只有定位的元素设置
z-index才有效 - 如果
z-index值大的元素,依然没有覆盖掉z-index值小的元素,可以检查其包含块的层级大小
定位的特殊应用
定位可以越过父元素的padding
发生固定定位、绝对定位后,元素都变成了定位元素,默认宽高被内容撑开,且依然可以设置管靠
发生相对定位后,元素依然是之前的显示模式
以下所说两种元素处理↓,只针对绝对定位和固定定位的元素,不包括相对定位的元素
让定位元素的宽高充满包含块
- 块宽高想与包含块一只,ky给定位元素同时设置left和right为0
- 高度想与包含块一只,top和bottom设置为0
让定位元素在包含块中居中
/* 方案一 */
left:0;
right:0;
top:0;
bottom:0;
margin:auto;
/* 方案二 该定位元素必须设置宽高*/
left:50%;
top:50%;
margin-left:负的宽度的一半;
margin-top:负的高度的一半;
布局-版心
- 在PC端网页中,一般都会有一个固定宽度且水平居中的盒子,来显示网页的主要内容,这是网页的版心
- 版心的宽度一般是960~1200像素之间
- 版心可以是一个,也可以是多个
- 版心的作用是为了适配不同分辨率的屏幕,使其内容在固定的一个区域,如果分辨率过小会出现滚动条,分辨率过高,页面两边会留白,内容区固定在版心内
- 除了版心,还有响应式布局,根据分辨率、操作等来决定页面怎么显示,解决分辨率适配问题
布局-重置默认样式
- 很多元素都有默认样式,例如h1~h6有上下margin,且字体加粗,超链接默认的文字颜色和下划线、p元素的上下margin等
- 在早期,元素的默认样式能够快速的绘制网页,但是如今网页的设计越来越复杂,内容越来越多且精细,这些默认样式会给绘制网页带来一定麻烦,而且这些默认样式在不同的浏览器上呈现出来的效果也不一样,所以我们需要重置这些默认样式
方案一 使用全局选择器
* {
margin:0;
padding:0;
}
此方法一般在简单案例中使用,实际开发中不使用,因为*选择的所有元素,而并不是所有的元素都有默认样式,而且所有的默认样式要重置的效果不一样,且重置的时候有时候可能需要对元素做特定的处理
方案二 reset.css
选择到具有默认样式的元素,清空其默认的样式,经过reset后的网页,可以比如成一张白纸,开发可以根据设计稿,精细的添加具体的样式,每个公司几乎都有自己定制的适合自己的reset.css,其实就相当于一个css文件中,使用元素去选中,设置其样式
方案三 Normalize.css
- Normalize.css是一种新方案,在清除默认样式的基础上,保留了一些有价值的默认样式
- Normalize.css官网地址
和reset.css相比,Normalize.css的优点
- 保护了有价值的默认样式,而不是完全清除他们,例如一个h1标签,可能火狐浏览器边距是10,谷歌是8,Normalize.css会设置一个统一的边距,保持一致,而不是直接清除为0
- 为大部门HTML元素提供一般化样式
- 新增对HTML5元素的设置
- 对并集选择器的使用比较谨慎,有效避免调试工具杂乱
- 和reset.css相比,更加的文虎,可以根据实际情况选择使用
CSS浮动&定位&布局的更多相关文章
- html5 css练习 定位布局
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- CSS之定位布局(position,定位布局技巧)
css之定位 1.什么是定位:css中的position属性,position有四个值:absolute/relative/fixed/static(绝对/相对/固定/静态(默认))通过定位属性可以设 ...
- 18 12 28 css 浮动 定位
浮动 浮动特性 1.浮动元素有左浮动(float:left)和右浮动(float:right)两种 2.浮动的元素会向左或向右浮动,碰到父元素边界.其他元素才停下来 3.相邻浮动的块元素可以并在一行, ...
- css 浮动 定位
浮动 元素的浮动是指设置了浮动属性的元素会脱离标准普通 流的控制,移动到其父元素中指定位置的过程. 语法: float . left . right . none(默认) 注意: 1 ...
- CSS的定位布局(position)
定位 static(默认值) 没有开启定位 relative 相对定位的性质 包含块(containing block)概念 没有开启定位时包含块就是当前元素最近的祖先块元素 开启绝对定位后的元素包含 ...
- css浮动(float)及清除浮动的几种实用方法
CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float) (1)html文档流 自窗体自上而下分成一行一行,并 ...
- css浮动(float)及如何清除浮动
前言: CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float)(1)html文档流 自窗体自上而下分成一行一 ...
- CSS3-基于浮动的布局,响应式WEB设计,定位网页上的元素,设计打印页面的css技术
基于浮动的布局: 1.除非图片设置了宽度,否则始终应该要对浮动的图片设置一个宽度,这样可以让浏览器给其他内容腾出环绕的空间 2.当侧边栏的高度与主内容区的高度不一致的时候,可以用个margin进行调整 ...
- CSS浮动、定位
这几天有空,整理了关于CSS浮动和定位的一些知识点,有什么欠缺的地方,欢迎大家批评指正. 一.文档流的概念指什么?有哪种方式可以让元素脱离文档流? 文档流,指的是元素排版布局过程中,元素会自动从左往右 ...
- css清除浮动定位造成的异常
清除浮动是为了解决高度塌陷的问题:内层有好几个div有宽有高,并且选择了浮动定位,但是外层的div却并没有设置宽高.在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动( ...
随机推荐
- 安卓系统如何使用谷歌框架下的app?
1.问题 安卓系统从理论上无法使用谷歌框架下的应用(比如像GMail,YouTube,Google play等等),会导致一些麻烦(闪退,卡在登陆界面等等) 注意:使用前提是会魔法,否则请绕道 2.解 ...
- IDEA:端口号被占用解决办法
idea遇到这样的问题:如下图 解决办法 步骤1:通过端口号找到pid打开dos命令行,输入netstat -ano | find "9009"得到下列内容,看到最后一行就是pid ...
- [java] JSP post 提交乱码 解决方案
//在post提交的页面顶部插入下列代码 <% request.setCharacterEncoding("UTF-8"); %>
- JS - console多个值
Promise.all([p1, p2]).then( (res) => { let [p1, p2] = res; console.l ...
- [转帖]ESXi主机RAID卡_HBA卡_网卡 型号_固件_驱动查询
https://www.cnblogs.com/vincenshen/p/12332142.html 一.RAID卡/HBA卡 型号_固件_驱动查询 1. 查询所有SCSI设备列表 # esxcfg- ...
- [转帖]TiUP 命令概览
https://docs.pingcap.com/zh/tidb/stable/tiup-reference TiUP 在 TiDB 生态中承担包管理器的功能,管理着 TiDB 生态下众多的组件,如 ...
- 多模态 GPT-V 出世!36 种场景分析 ChatGPT Vision 能力,LMM 将全面替代大语言模型?
LMM将会全面替代大语言模型?人工智能新里程碑GPT-V美国预先公测,医疗领域/OCR实践+166页GPT-V试用报告首发解读 ChatGPT Vision,亦被广泛称为GPT-V或GPT-4V,代表 ...
- js 保留两位小数不进行四舍五入
保留两位小数不进行四舍五入 // 保留小数n位,不进行四舍五入 // num你传递过来的数字, // decimal你保留的几位,默认保留小数后两位 app.config.globalProperti ...
- Ant Design Vue分页Pagination
<template> <div> <a-pagination show-quick-jumper v-model:current="current1" ...
- 【K哥爬虫普法】12亿公民信息泄露,仅判3年,个人信息是否为爬虫“禁区”?
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...