【大白话】说HTML和CSS的一些知识点(上)

72 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

之前学习记录的,比较杂乱无章,将就看下吧。

工作后在看之前写的这些笔记,感觉真是一种成长。

盒模型

啥是盒模型,茄盒🍆?不是!!盒模型就是一个 div 里面的布局内容,看例子:

#box {
      width: 200px;
      border: 1px solid #666;
      padding: 10px;
      margin: 10px;
    }
<div id="box">
    盒模型
</div>

效果出来是这样,咱们使用 document.getElementById('box').offsetWidth 打印宽度显示的222(200+20+2),其实很好理解,控制台下滑到样式盒子可以看到浏览器将padding,border纳入了盒子宽度的计算之中。

在这里插入图片描述

如果只想显示给定的200px宽度呢,怎么设置?很简单,在样式表中设置 box-sizing: border-box即可,box-sizing默认值:content-box,大小为上述222px。

在这里插入图片描述

margin合并,负值

说完盒模型,再说说margin吧,这个在设计上有个坑,就是我们常说的边距塌陷问题,具体看下边

  • margin合并看的是并排的间距最大值,而不是俩间距相加。
  • 当margin-top / margin-left为负值时,整体盒子会向上 / 左移动。
  • 当margin-bottom 为负值时,整体位置不变,下边元素网上移动。margin-right同理。

是BFC,不是KFC

其实就是一个独立的渲染区域,简单来说就是内部的渲染不会影响外界,相当于大房子里的小屋子,小屋子随便装修不会影响大房子的格局。

举个栗子:当我们渲染父元素里的一个给定宽高的图片时,希望旁边的文字也具有同样的高度,这时就需要给父元素设定BFC。(一般用于需要独立的样式,不影响整体布局,常见于广告)

设置方法:

  • display: inline-block或flex
  • position:absolute或者fixed
  • overflow:不是默认的visible就行,hidden,auto,scroll就行
  • float:非none就行

position 相关

就是定位嘛(BOSS:你要搞清楚自己的定位😁),在CSS里面属于是非常常见的,经典的有:子绝父相 + margin ,可以搞定大部分布局,但在实际开发项目中比较少用绝对定位。

常见的有:

  • static(默认):会忽略 left、top、right、bottom 和 z-index 属性。
  • relative(相对):相对原本位置进行定位,其他的元素位置不会受到影响
  • absolute (绝对):祖先元素有 relative 或者 absolute定位 ? 相对祖先位置定位 : 相对body
  • fixed (固定):相对于 body 定位
  • sticky (粘性):跟随窗口位置,在设定位置会变成 fixed 定位,不在就不受定位影响

红黄蓝方块敲起来!!

圣杯布局、双飞翼布局(三栏布局)

以前网页大部分采用的布局方式,可以说是非常经典了。

  • 圣杯布局,让中间栏优先加载渲染,两侧宽带固定,中间自适应。利用float+margin实现,margin用到负值的知识点。遇到底部栏和三栏挨在一起,可以用 clear:both 清除浮动,移动时可设置距离中间栏的-100%,在根据两边调解再移动的大小。
  • 双飞翼布局,大致和圣杯一样,只不过实现方式不同。

这里一般有个问题:怎么实现三列布局,左右200,中间自适应且优先加载中间区域 ?

我是这么想的:使用相对定位,左右绝对,设置左或右上边距为0,中间设置padding 0 200px;双飞翼,圣杯

清除浮动

一般用于解决浮动塌陷问题,啥是浮动塌陷? 浮动塌陷就是给元素设定浮动后,元素脱离文档流,如果没有高度,样式会失效 => 浮动塌陷。

解决方法有:

  1. 在元素后面添加clear
  2. BFC:overflow:hidden
  3. 伪元素:添加空元素在底部::after{ content: ''; display:block; clear:both} 实际中用的最多

link标签和import标签的

都是引入,也都可以引入css,但使用场景不一样。

  • link一般用于引用css文件,权限比import高。
  • import也能引入css文件且不止css文件,项目中常用来导入xx包,xx方法,xx组件,这个使用更广。