前端入门笔记二
# 浮动
网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。
- 浮动元素会脱离标准流(脱标)
- 浮动元素会一行内显示,并且元素顶部对齐
- 浮动元素具有行内块元素特点
- 如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是天际浮动后,它的大小根据内容来决定
- 浮动的盒子中间是没有缝隙的。是紧挨着的一对
- 行内元素同理
例:叠加效果:给一个div加浮动,一个不加
浮动的基本使用: 先用标准流的父元素排列好上下位置,之后内部子元素采取浮动排列左右位置
# 清除浮动
为什么要清除浮动?
由于父级盒子很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为 0 时,就会 影响下面的标准流盒子。
- 清除浮动的本质是清除浮动元素造成的影响
- 如果父盒子本身有高度,则不需要清除浮动
- 清除浮动之后,父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了
方法:
1、 额外标签法 在浮动元素末尾添加一个空的标签,要求这个新的空标签必须是块级元素。
<div style=”clear:both”></div>
2、 父级添加overflow
可以给父级添加 overflow 属性,将其属性值设置为 hidden、 auto 或 scroll 。
3、:after 伪元素法
.clearfix:after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {
/* IE6、7 专有 */
*zoom: 1;
}
2
3
4
5
6
7
8
9
10
11
4、双伪元素法
.clearfix:before,.clearfix:after {
content:"";
display:table;
}
.clearfix:after {
clear:both;
}
.clearfix {
*zoom:1;
}
2
3
4
5
6
7
8
9
10
# CSS书写顺序
建议遵循以下顺序:
- 布局定位属性:display / position / float / clear / visibility / overflow(建议 display 第一个写,毕竟关系到模式)
- 自身属性:width / height / margin / padding / border / background
- 文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word
- 其他属性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient ...
# 定位
定位 = 定位模式 + 边偏移
1.定位模式: static、relative、absolute、fixed
2.边偏移: 定位的盒子移动到最终的位置:有top、bottom、left、right四个属性。
# static
元素默认定位方式,无定位的意思
# relative
相对定位,即元素在移动时是相对它原来的位置来说的,原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它
# absolute
绝对定位,元素在移动时是相对他们的祖先元素来说的。如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位(Document文档),如果祖先元素有定位(相对、绝对、固定),则以最近一级的有定位的祖先元素为参考点进行移动,绝对定位不再占有原先的位置。
子绝父相:子级绝对定位,父级相对定位
# fixed
固定定位是元素固定在浏览器可视区的位置,主要使用场景:可以在页面滚动时元素的位置不发生改变。
- 以浏览器可视窗口为参照物移动元素
- 和父元素没有任何的关系
- 不随滚动条滚动
- 固定定位不再占有原先的位置
# sticky
- 以浏览器可视窗口为参照物移动元素
- 占有原先的位置
- 必须添加top、left、bottom、right其中一个才有效
# z-index
定位叠放次序
- 数值是任意整数,越大越靠上
- 如果属性值相同则按照书写顺序来,后来居上
- 数字后面不能加单位
- 只有有定位的盒子才有z-index属性
# 拓展
# 1. 绝对定位的盒子居中
加了绝对定位的盒子不能通过 margin:0 auto 水平居中,但是可以通过以下计算方法实现水平和垂直居中。
- left: 50%;:让盒子的左侧移动到父级元素的水平中心位置。
- margin-left: -100px;:让盒子向左移动自身宽度的一半。
# 2.定位特殊性质
绝对定位和固定定位也和浮动类似。
- 行内元素添加绝对或者固定定位,可以直接设置高度和宽度。
- 块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
# 3. 绝对定位(固定定位)会完全压住盒子
- 浮动元素不同,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)
- 但是绝对定位(固定定位) 会压住下面标准流所有的内容。
- 浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的。文字会围绕浮动元素
# 元素的显示和隐藏
# display 属性
display : none ; 隐藏对象
display : block; 除了转换为块级元素之外,还有显示元素的意思
display 隐藏元素后,不再占有原来的位置。
# visibility 可见性
visibility 属性用于指定一个元素应可见还是隐藏。
- visibility : visible ; 元素可视
- visibility : hidden ; 元素隐藏
visibility 隐藏元素后,继续占有原来的位置。 如果隐藏元素想要原来位置, 就用 visibility:hidden 如果隐藏元素不想要原来位置, 就用 display:none (用处更多 重点)
# overflow 溢出
- overflow: visible; 默认值。内容不会被修剪,会呈现在元素框之外
- overflow: hidden; 内容会被修剪,并且其余内容不可见
- overflow: scroll; 内容会被修剪,浏览器会显示滚动条以便查看其余内容
- overflow: auto; 由浏览器定夺,如果内容被修剪,就会显示滚动条
- overflow: inherit; 规定从父元素继承overflow属性的值
# CSS高级技巧
# CSS三角形
div {
width: 0;
height: 0;
line-height: 0;
font-size: 0;
border: 50px solid transparent;
border-left-color: pink;
}
2
3
4
5
6
7
8