浮动和定位

本文详细介绍了CSS中的浮动和定位概念。浮动包括左浮动和右浮动,它使元素脱离标准文档流并影响周围元素布局。浮动可能导致父元素塌陷,可通过设置高度、overflow属性或使用clear和伪类来解决。定位包括相对定位、绝对定位和固定定位,它们使元素依据不同参照物进行偏移。同时,文章还提到了CSS中的一些其他属性,如透明度、word-break和display。

一、浮动

http://vrg123.com/

文档流:网页中元素排列顺序。
标准文档流(默认):从上到下,从左到右
浮动流
左浮动:从左到右,从上到下;右浮动:从右到左,从上到下

浮动原理:
1、浮动元素将脱离标准文档流,浮动元素后面的标准元素会依次向上填充
2、浮动元素不会遮挡行内元素
3、浮动元素变成行内块级元素,内容有多宽它就有多宽
4、不允许浮动元素覆盖文字

浮动带来的问题:父盒子塌陷

如何解决父盒子塌陷(扩展盒子高度/清除浮动的影响):
1、设置父盒子高度
2、使用overflow:visible | hidden | scroll属性来清除浮动(绝对定位不生效);值为默认值visible时,是没有清除浮动的作用的。
3、clear:left | right | both
4、让父元素与子元素一起浮动(不推荐)
5、使用after伪类(clear属性)

overflow与clear在清除浮动时的区别:

  • overflow属性添加在父级上,绝对定位时不能实现清除浮动
  • clear属性:应用在浮动元素后面,clear添加一个新的标签
省略号:
 div{
            border: 1px solid red;
            height: 24px;
            width: 150px;
            overflow: hidden;
            text-overflow:ellipsis;
            white-space: nowrap;
        /*    妙用:扩展盒子的高度, visible: 不生效*/
        }

伪类选择器:
伪类:相当于一个类
伪元素:相当于一个元素

a标签的四个伪类:
link:未点击
visited:已点击
hover:悬停
active:激活状态
注:hover,active:是所有元素都有的伪类。

盒子的计算方式:

  • 盒子总尺寸 = 内容+内边距+外边距

  • 标准模式:设置的宽高+padding+border+margin

  • 怪异模式:设置的宽高+margin

    http://bugshouji.com/bbs-read-run?tid=86

 指定计算方式:
	 box-sizing: border-box;
设置这个属性可以解决给盒子设置border、padding后盒子变大问题。

二、定位

position:
	static:没有定位(默认)
	relative:相对定位
	absolute:绝对定位
	fixed:固定定位

相对定位原理:
不论是标准元素还是浮动元素,相对于它没有定位前的位置进行偏移。

绝对定位原理:
会脱离标准文档流,变成行内块级元素。如果有已经定位的祖先元素,以最近的祖先元素为准;没有定位的祖先元素,以页面可视内容为准进行设置。

固定定位原理:
会脱离标准文档流,变成行内块级元素。相对于浏览器窗口进行设置

z-index:;
作用:指定层叠顺序,值越大,优先级越高。
值:-1~999
默认值:auto(如果父元素有z-index,就和父元素一样,不然就为零)
注:z-index要和position一起使用。否则无效

透明度:

opacity:0-1,越小越透明
过滤器:
filter:alpha(opacity=x):0-100;
值越小越透明

word-break:默认单词不换行
display:
none:隐藏
inline:行内
block:块级
inline-block:行内块级

### CSS3 中浮动定位的概念及其区别 #### 浮动 (Float) 浮动是一种用于布局的技术,允许元素沿指定方向移动直到碰到包含框或另一个浮动元素为止。设置了 `float` 的块级元素会脱离文档的标准流,不再占据原来的空间。 例如,在给定的 HTML 结构中: ```html <style> .a { float: left; width: 50px; height: 50px; background-color: red; } .b { height: 100px; width: 100px; background-color: blue; } </style> <body> <div class="a"></div> <div class="b"></div> </body> ``` 这里 `.a` 被设置为左浮动,这意味着它将尽可能靠近左边并向上对齐页面顶部[^1]。由于`.a` 已经漂浮出去了,所以 `.b` 将填充由 `.a` 空出来的空间,除非采取措施阻止这种情况发生。 为了防止后续内容环绕在浮动对象周围或者被推挤变形,可以通过应用 `clear` 属性来解决这个问题: ```css .outside.clear::after { content: ""; display: table; clear: both; } ``` 这段代码创建了一个伪元素作为清除器,确保任何跟随的内容都不会受到前面浮动的影响[^2]。 #### 定位(Positioning) 相对于浮动而言,定位提供了更灵活的方式来控制元素的确切位置。通过改变 `position` 属性值,可以实现不同的定位效果: - **Static**: 默认情况下所有元素都是静态定位,即按照正常文档流排列,不考虑其他定位方式。 - **Relative**: 相对于自身原本所在的位置偏移一定距离而不影响其它兄弟节点;即使指定了上下左右偏移量也不会脱离标准流。 - **Absolute**: 绝对定位使元素完全跳出当前文档流,并依据最近已定位祖先元素进行绝对坐标计算(如果没有找到这样的父元素,则基于初始包含块——通常是视窗)。 - **Fixed**: 类似于绝对定位但是固定相对于浏览器窗口而不是某个特定容器。 - **Sticky**: 这种类型的定位结合了相对固定的特性,当滚动条到达设定阈值时变为固定状态[^3]。 下面是一个简单的例子展示如何利用 `relative` `absolute` 来调整两个 div 的位置关系: ```html <style type="text/css"> #first { width: 200px; height: 100px; border: 1px solid red; position: relative; top: 20px; left: 20px; } #second { width: 200px; height: 100px; border: 1px solid blue; position: absolute; top: 40px; left: 60px; } </style> ``` 在这个案例里,`#first` 是相对于自己原始位置向下向右各移动了 20 像素,而 `#second` 则是从它的最接近已经过定位的父亲那里获取起始点再做相应偏移[^4]。 综上所述,虽然两者都能用来构建网页布局,但它们的工作机制完全不同:浮动主要用于让文本或其他内联内容围绕着某些区域流动,而定位则是精确地放置单个组件在整个页面中的确切地点。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值