2022.3.1 学习笔记
CSS第五趴:
二、常见的网页布局
1.浮动布局注意点
①浮动和标准流的父盒子搭配。先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置。
② 一个元素浮动了,理论上其余的兄弟元素也要浮动。一个盒子里面有多个子盒子,如果其中一个盒子浮动了,那么其他兄弟也应该浮动,以防止引起问题。 浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流。
三、清除浮动
1.清除浮动的本质是清除浮动元素造成的影响。
2.如果父盒子本身有高度,则不需要清除浮动。
3.清除浮动之后,父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了。
清除浮动策略是闭合浮动,只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子。
1. 额外标签法也称为隔墙法,是 W3C 推荐的做法。
额外标签法会在浮动元素末尾添加一个空的标签。 例如 <div style=” clear:both” ></div> , 或者其他标签 ( 如<br clear="all" />等) 。
2. 父级添加 overflow 属性
可以给父级添加 overflow 属性,将其属性值设置为 hidden、 auto 或 scroll。
overflow:hidden;(常用)
3. 父级添加after伪元素
.clearfix:after { content: ""; display: block; height: 0; clear: both; visibility: hidden } .clearfix { /* IE6 、 7 专有 */ *zoom: 1; }
4. 父级添加双伪元素
.clearfix:before, . clearfix:after { content:""; display:table; } . clearfix:after { clear:both; } . clearfix { *zoom:1; }
总结:
CSS第六趴:
一、CSS定位
浮动可以让多个块级盒子一行没有缝隙排列显示, 经常用于横向排列盒子。定位则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子。
1.定位组成
将盒子定在某一个位置,所以 定位也是在摆放盒子, 按照定位的方式移动盒子。
定位 = 定位模式 + 边偏移 。 定位模式用于指定一个元素在文档中的定位方式。 边偏移则决定了该元素的最终位置。
2.静态定位 static (了解)
静态定位是元素的默认定位方式,无定位的意思。静态定位按照标准流特性摆放位置,它没有边偏移。静态定位在布局时很少用到。
3.相对定位 relative (重要)
相对定位 是元素在移动位置的时候,是相对于它原来的位置来说的。
相对定位的特点( 务必记住):1. 它是相对于自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)。 2. 原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它。 因此,相对定位并没有脱标。 它最典型的应用是给绝对定位当爹。
4.绝对定位 absolute (重要)
绝对定位 是元素在移动位置的时候,是相对于它祖先元素来说的。
绝对定位的特点(务必记住):1. 如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位(Document 文档)。 2. 如果祖先元素有定位(相对、 绝对、 固定定位) , 则以最近一级的有定位祖先元素为参考点移动位置。 3. 绝对定位不再占有原先的位置( 脱标), 所以绝对定位是脱离标准流的。
5.子绝父相
定位中最常用的一种方式。这句话的意思是: 子级是绝对定位的话,父级要用相对定位。相对定位经常用来作为绝对定位的父级。
① 子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。 ② 父盒子需要加定位限制子盒子在父盒子内显示。 ③ 父盒子布局时,需要占有位置,因此父亲只能是相对定位。
当然,子绝父相不是永远不变的,如果父元素不需要占有位置,子绝父绝也会遇到。
6.固定定位 fixed (重要)
固定定位是元素固定于浏览器可视区的位置。 主要使用场景: 可以在浏览器页面滚动时元素的位置不会改变。
固定定位的特点(务必记住):1. 以浏览器的可视窗口为参照点移动元素,跟父元素没有任何关系且不随滚动条滚动。 2. 固定定位不在占有原先的位置。 固定定位也是脱标的,其实固定定位也可以看做是一种特殊的绝对定位。
7.粘性定位 sticky (了解)
粘性定位的特点: 1. 以浏览器的可视窗口为参照点移动元素(固定定位特点) 2. 粘性定位占有原先的位置(相对定位特点) 3. 必须添加 top 、 left、 right、 bottom 其中一个才有效。跟页面滚动搭配使用。 兼容性较差,IE 不支持。
8.定位总结
9. 定位叠放次序 z-index
在使用定位布局时,可能会出现盒子重叠的情况。 此时,可以使用 z-index 来控制盒子的前后次序 (z轴)。
数值可以是正整数、负整数或 0,默认是 auto,数值越大,盒子越靠上。如果属性值相同,则按照书写顺序,后来居上。数字后面不能加单位。只有定位的盒子才有 z-index 属性。
10.定位的拓展
1. 让固定定位的盒子 left: 50%;走到浏览器可视区(也可以看做版心)的一半位置。 2. 让固定定位的盒子 margin-left: 版心宽度的一半距离;多走版心宽度的一半位置就可以让固定定位的盒子贴着版心右侧对齐了。
加了绝对定位的盒子不能通过 margin:0 auto 水平居中(相对定位的盒子可通过 margin:0 auto 水平居中), 但是可以通过以下计算方法实现水平和垂直居中。1. left: 50%;让盒子的左侧移动到父级元素的水平中心位置。 2. margin-left: -盒子自身宽度的一半;让盒子向左移动自身宽度的一半。
绝对定位和固定定位也和浮动类似。 1. 行内元素添加绝对或者固定定位,可以直接设置高度和宽度。 2. 块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
浮动元素、 绝对定位(固定定位)元素都不会触发外边距合并的问题。
绝对定位(固定定位) 会压住下面标准流所有的内容。但浮动元素仅会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)。浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的,文字会围绕浮动元素。
二、网页布局总结
通过盒子模型可以清楚知道大部分html标签是一个盒子。通过CSS浮动、 定位 可以让每个盒子排列成为网页。一个完整的网页,是标准流、 浮动、 定位一起完成布局的,每个都有自己的专门用法。
1. 标准流。可以让盒子上下排列或者左右排列,垂直的块级盒子显示就用标准流布局。
2. 浮动。可以让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局。
3. 定位。定位最大的特点是有层叠的概念,就是可以让多个盒子前后叠压来显示。如果元素自由在某个盒子内移动就用定位布局。
三、元素的显示与隐藏
本质:让一个元素在页面中隐藏或者显示出来。
1.display 属性
display 属性用于设置一个元素应如何显示。display 隐藏元素后,不再占有原来的位置。
display: none ; 隐藏对象
display:block ; 除了转换为块级元素之外,同时还有显示元素的意思
2.visibility 可见性
visibility 属性用于指定一个元素应可见还是隐藏。visibility 隐藏元素后 , 继续占有原来的位置。
visibility : visible ; 元素可视
visibility : hidden; 元素隐藏
3.overflow 溢出
overflow 属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度) 时,会发生什么。
一般情况下,我们都不想让溢出的内容显示出来,因为溢出的部分会影响布局。 但是如果有定位的盒子, 请慎用 overflow:hidden,因为它会隐藏多余的部分。
CSS第七趴:
一、精灵图
1.为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度, 出现了 CSS 精灵技术。核心原理:将网页中的一些小背景图像整合到一张大图中 , 这样服务器只需要一次请求就可以了。
2.精灵图(sprites)的使用
使用精灵图核心: 1. 精灵技术主要针对于背景图片使用。 就是把多个小背景图片整合到一张大图片中。 2. 这个大图片也称为 sprites 精灵图或者雪碧图 3. 移动背景图片位置, 此时可以使用 background-position 。 4. 移动的距离就是这个目标图片的 x 和 y 坐标。 注意网页中的坐标有所不同。5. 因为一般情况下都是往上往左移动,所以x 和 y 坐标数值是负值。 6. 使用精灵图的时候需要精确测量,每个小背景图片的大小和位置。
二、字体图标
字体图标使用场景: 主要用于显示网页中通用、常用的一些小图标。字体图标可以为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体,可以很随意的改变颜色、产生阴影、 透明效果、 旋转等。 注意: 字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。
字体图标是一些网页常见的小图标,我们直接网上下载即可。推荐下载网站:①icomoon 字库 http://icomoon.io ②阿里 iconfont 字库 http://www.iconfont.cn/。(注意字体图标引用时字体文件的路径问题,引用具体方法可查看阿里教程)
三、CSS三角
一个小盒子将width和height设置为0,border设置为一定大小但不同颜色时,有下图:
则要做出CSS三角,只需要把border一条边设置有颜色,其他三条边设置为透明颜色即可。
div { width: 0; height: 0; border: 50px solid transparent; border-left-color: pink; /* 下面两行代码可以不写,仅为保证浏览器兼容性*/ line-height: 0; font-size: 0; }
四、用户界面样式
所谓的界面样式,就是更改一些用户操作样式,以便提高更好的用户体验。
1.更改用户的鼠标样式cursor li {cursor: pointer; }
设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。
2.表单轮廓outline input {outline: none; }
给表单添加 outline: 0; 或者 outline: none; 样式之后 , 就可以去掉默认的蓝色边框。
3.防止表单域拖拽resize textarea{ outline: none; resize: none; }
实际开发中,我们文本域右下角是不可以拖拽的。
五、vertical-align 属性应用
1.CSS 的 vertical-align 属性使用场景 : 经常用于设置图片(行内块元素)、表单(行内块元素)和文字垂直对齐。 官方解释: 用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。
2.vertical-align : baseline / top / middle / bottom;
3.vertical-align 属性应用
①图片、 表单和文字对齐
图片、 表单都属于行内块元素,默认的 vertical-align 是基线对齐。 此时可以给图片、 表单这些行内块元素的 vertical-align 属性设置为 middle 就可以让文字和图片垂直居中对齐了。
②解决图片底部默认空白缝隙问题
bug : 图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐。
主要解决方法有两种: 1. 给图片添加 vertical-align:middle / top/ bottom 等(提倡使用的 )。2. 把图片转换为块级元素 display: block;