携手创作,共同成长!这是我参与「掘金日新计划 · 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;双飞翼,圣杯
清除浮动
一般用于解决浮动塌陷问题,啥是浮动塌陷? 浮动塌陷就是给元素设定浮动后,元素脱离文档流,如果没有高度,样式会失效 => 浮动塌陷。
解决方法有:
- 在元素后面添加clear
- BFC:overflow:hidden
- 伪元素:添加空元素在底部::after{ content: ''; display:block; clear:both} 实际中用的最多
link标签和import标签的
都是引入,也都可以引入css,但使用场景不一样。
- link一般用于引用css文件,权限比import高。
- import也能引入css文件且不止css文件,项目中常用来导入xx包,xx方法,xx组件,这个使用更广。