前端入门笔记二

2021/1/26 htmlcss

# 浮动

网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。

  1. 浮动元素会脱离标准流(脱标)
  2. 浮动元素会一行内显示,并且元素顶部对齐
  3. 浮动元素具有行内块元素特点
  • 如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是天际浮动后,它的大小根据内容来决定
  • 浮动的盒子中间是没有缝隙的。是紧挨着的一对
  • 行内元素同理

例:叠加效果:给一个div加浮动,一个不加

浮动的基本使用: 先用标准流的父元素排列好上下位置,之后内部子元素采取浮动排列左右位置

# 清除浮动

为什么要清除浮动?

由于父级盒子很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为 0 时,就会 影响下面的标准流盒子。

  • 清除浮动的本质是清除浮动元素造成的影响
  • 如果父盒子本身有高度,则不需要清除浮动
  • 清除浮动之后,父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了

方法:

1、 额外标签法 在浮动元素末尾添加一个空的标签,要求这个新的空标签必须是块级元素。

<div style=”clear:both”></div>
1

2、 父级添加overflow

可以给父级添加 overflow 属性,将其属性值设置为 hidden、 auto 或 scroll 。

3、:after 伪元素法

.clearfix:after { 
  content: ""; 
  display: block; 
  height: 0;
  clear: both; 
  visibility: hidden;
}
.clearfix { 
  /* IE6、7 专有 */
  *zoom: 1; 
}
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;
}
1
2
3
4
5
6
7
8
9
10

# CSS书写顺序

建议遵循以下顺序:

  1. 布局定位属性:display / position / float / clear / visibility / overflow(建议 display 第一个写,毕竟关系到模式)
  2. 自身属性:width / height / margin / padding / border / background
  3. 文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word
  4. 其他属性(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 水平居中,但是可以通过以下计算方法实现水平和垂直居中。

  1. left: 50%;:让盒子的左侧移动到父级元素的水平中心位置。
  2. margin-left: -100px;:让盒子向左移动自身宽度的一半。

# 2.定位特殊性质

绝对定位和固定定位也和浮动类似。

  1. 行内元素添加绝对或者固定定位,可以直接设置高度和宽度。
  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;
}
1
2
3
4
5
6
7
8
Last Updated: 2021/5/16 14:25:20