首页
前端面试题
前端报错总结
电子书
更多
插件下载
Search
1
JavaScript基础(二)操作符 流程控制
42 阅读
2
HTML基础
20 阅读
3
Vue基础
17 阅读
4
wctype.h
14 阅读
5
Vue2(知识点)
13 阅读
默认分类
HTML CSS
HTML基础
CSS
HTML5 CSS3
javaScript
javaScript基础
javaScript高级
Web APIs
jQuery
js小总结
WEB开发布局
Vue
PS切图
数据可视化
Git使用
Uniapp
c语言入门
标准库
嵌入式
登录
Search
liuxiaobai
累计撰写
108
篇文章
累计收到
12
条评论
首页
栏目
默认分类
HTML CSS
HTML基础
CSS
HTML5 CSS3
javaScript
javaScript基础
javaScript高级
Web APIs
jQuery
js小总结
WEB开发布局
Vue
PS切图
数据可视化
Git使用
Uniapp
c语言入门
标准库
嵌入式
页面
前端面试题
前端报错总结
电子书
插件下载
搜索到
104
篇与
的结果
2021-09-04
CSS(四) 精灵图和字体图标
1. 精灵图(重点)1.1 为什么需要精灵图一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。为什么使用精灵图(目的): 为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,出现了 CSS 精灵技术(也称 CSS Sprites、CSS 雪碧)。核心原理: 将网页中的一些小背景图像整合到一张大图中 ,这样服务器只需要一次请求就可以了。精灵图举例:1.2 精灵图(sprites)的使用使用精灵图核心:精灵技术主要针对于背景图片使用。就是把多个小背景图片整合到一张大图片中。这个大图片也称为 sprites 精灵图 或者 雪碧图移动背景图片位置, 此时可以使用 background-position 。移动的距离就是这个目标图片的 x 和 y 坐标。注意网页中的坐标有所不同因为一般情况下都是往上往左移动,所以数值是负值。使用精灵图的时候需要精确测量,每个小背景图片的大小和位置。使用精灵图核心总结:精灵图主要针对于小的背景图片使用。主要借助于背景位置来实现---background-position 。一般情况下精灵图都是负值。(千万注意网页中的坐标: x轴右边走是正值,左边走是负值, y轴同理。)1.3 案例:拼出自己名字1.3.1 案例效果1.3.2 代码参考结构<span class="p">p</span> <span class="i">i</span> <span class="n">n</span> <span class="k">k</span>样式span { display: inline-block; background: url(images/abcd.jpg) no-repeat; } .p { width: 100px; height: 112px; /* background-color: pink; */ background-position: -493px -276px; } .i { width: 60px; height: 108px; /* background-color: pink; */ background-position: -327px -142px; } .n { width: 108px; height: 109px; /* background-color: pink; */ background-position: -215px -141px; } .k { width: 105px; height: 114px; /* background-color: pink; */ background-position: -495px -142px; }2. 字体图标2.1 字体图标的产生字体图标使用场景: 主要用于显示网页中通用、常用的一些小图标。精灵图是有诸多优点的,但是缺点很明显。1.图片文件还是比较大的。2.图片本身放大和缩小会失真。3.一旦图片制作完毕想要更换非常复杂。此时,有一种技术的出现很好的解决了以上问题,就是字体图标 iconfont。字体图标可以为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体。2.2 字体图标的优点轻量级:一个图标字体要比一系列的图像要小。一旦字体加载了,图标就会马上渲染出来,减少了服务器请求灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等兼容性:几乎支持所有的浏览器,请放心使用注意: 字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。总结:1.如果遇到一些结构和样式比较简单的小图标,就用字体图标。2.如果遇到一些结构和样式复杂一点的小图片,就用精灵图。使用步骤字体图标是一些网页常见的小图标,我们直接网上下载即可。 因此使用可以分为:1.字体图标的下载 2.字体图标的引入 (引入到我们html页面中)3.字体图标的追加 (以后添加新的小图标)2.3 字体图标的下载推荐下载网站:icomoon 字库 http://icomoon.io 推荐指数 ★★★★★IcoMoon 成立于 2011 年,推出了第一个自定义图标字体生成器,它允许用户选择所需要的图标,使它们成一字型。该字库内容种类繁多,非常全面,唯一的遗憾是国外服务器,打开网速较慢。阿里 iconfont 字库 http://www.iconfont.cn/ 推荐指数 ★★★★★这个是阿里妈妈 M2UX 的一个 iconfont 字体图标字库,包含了淘宝图标库和阿里妈妈图标库。可以使用 AI制作图标上传生成。 重点是,免费!2.4 字体图标的引入下载完毕之后,注意原先的文件不要删,后面会用。把下载包里面的 fonts 文件夹放入页面根目录下字体文件格式不同浏览器所支持的字体格式是不一样的,字体图标之所以兼容,就是因为包含了主流浏览器支持的字体文件。1).TureType( .ttf )格式.ttf字体是Windows和Mac的最常见的字体,支持这种字体的浏览器有IE9+、Firefox3.5+、Chrome4+、Safari3+、Opera10+、iOS Mobile、Safari4.2+;2).Web Open Font Format( .woff )格式woff字体,支持这种字体的浏览器有IE9+、Firefox3.5+、Chrome6+、Safari3.6+、Opera11.1+;3).Embedded Open Type( .eot )格式.eot字体是IE专用字体,支持这种字体的浏览器有IE4+;4).SVG( .svg )格式.svg字体是基于SVG字体渲染的一种格式,支持这种字体的浏览器有Chrome4+、Safari3.1+、Opera10.0+、iOS Mobile Safari3.2+;2.在 CSS 样式中全局声明字体: 简单理解把这些字体文件通过css引入到我们页面中。一定注意字体文件路径的问题 @font-face { font-family: 'icomoon'; src: url('fonts/icomoon.eot?7kkyc2'); src: url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?7kkyc2') format('truetype'), url('fonts/icomoon.woff?7kkyc2') format('woff'), url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg'); font-weight: normal; font-style: normal; } html 标签内添加小图标。给标签定义字体。span { font-family: "icomoon"; }注意:务必保证 这个字体和上面@font-face里面的字体保持一致2.5 字体图标的追加如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标到原来的字体文件中。把压缩包里面的 selection.json 从新上传,然后选中自己想要新的图标,从新下载压缩包,并替换原来的文件即可。2.6 字体图标加载的原理:3. CSS 三角3.1 介绍网页中常见一些三角形,使用 CSS 直接画出来就可以,不必做成图片或者字体图标。一张图, 你就知道 CSS 三角是怎么来的了, 做法如下: div { width: 0; height: 0; border: 50px solid transparent; border-color: red green blue black; line-height:0; font-size: 0; }我们用css 边框可以模拟三角效果宽度高度为0我们4个边框都要写, 只保留需要的边框颜色,其余的不能省略,都改为 transparent 透明就好了为了照顾兼容性 低版本的浏览器,加上 font-size: 0; line-height: 0;3.2 案例:京东三角3.2.1效果图3.2.2 代码参考<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>CSS 三角制作</title> <style> .box1 { width: 0; height: 0; /* border: 10px solid pink; */ border-top: 10px solid pink; border-right: 10px solid red; border-bottom: 10px solid blue; border-left: 10px solid green; } .box2 { width: 0; height: 0; border: 50px solid transparent; border-left-color: pink; margin: 100px auto; } .jd { position: relative; width: 120px; height: 249px; background-color: pink; } .jd span { position: absolute; right: 15px; top: -10px; width: 0; height: 0; /* 为了照顾兼容性 */ line-height: 0; font-size: 0; border: 5px solid transparent; border-bottom-color: pink; } </style> </head> <body> <div class="box1"></div> <div class="box2"></div> <div class="jd"> <span></span> </div> </body> </html>4. CSS 用户界面样式什么是界面样式所谓的界面样式,就是更改一些用户操作样式,以便提高更好的用户体验。更改用户的鼠标样式表单轮廓防止表单域拖拽4.1 鼠标样式 cursor li { cursor: pointer; }设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。4.2 轮廓线 outline给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框。 input { outline: none; }4.3 防止拖拽文本域 resize实际开发中,我们文本域右下角是不可以拖拽的。 textarea{ resize: none; }vertical-align 属性应用5. vertical-align 属性应用CSS 的 vertical-align 属性使用场景: 经常用于设置图片或者表单(行内块元素)和文字垂直对齐。官方解释: 用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。语法:vertical-align : baseline | top | middle | bottom 5.1 图片、表单和文字对齐图片、表单都属于行内块元素,默认的 vertical-align 是基线对齐。此时可以给图片、表单这些行内块元素的 vertical-align 属性设置为 middle 就可以让文字和图片垂直居中对齐了。5.2 解决图片底部默认空白缝隙问题bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐。主要解决方法有两种:1.给图片添加 vertical-align:middle | top| bottom 等。 (提倡使用的)2.把图片转换为块级元素 display: block; 6. 溢出的文字省略号显示6.1 单行文本溢出显示省略号单行文本溢出显示省略号--必须满足三个条件: /*1. 先强制一行内显示文本*/ white-space: nowrap; ( 默认 normal 自动换行) /*2. 超出的部分隐藏*/ overflow: hidden; /*3. 文字用省略号替代超出的部分*/ text-overflow: ellipsis;6.2 多行文本溢出显示省略号(了解)多行文本溢出显示省略号,有较大兼容性问题,适合于webKit浏览器或移动端(移动端大部分是webkit内核)/*1. 超出的部分隐藏 */ overflow: hidden; /*2. 文字用省略号替代超出的部分 */ text-overflow: ellipsis; /* 3. 弹性伸缩盒子模型显示 */ display: -webkit-box; /* 4. 限制在一个块元素显示的文本的行数 */ -webkit-line-clamp: 2; /* 5. 设置或检索伸缩盒对象的子元素的排列方式 */ -webkit-box-orient: vertical;更推荐让后台人员来做这个效果,因为后台人员可以设置显示多少个字,操作更简单。7. 常见布局技巧巧妙利用一个技术更快更好的布局:margin负值的运用文字围绕浮动元素行内块的巧妙运用CSS三角强化7.1. margin负值运用1.让每个盒子margin 往左侧移动 -1px 正好压住相邻盒子边框2.鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有有定位,则加相对定位(保留位置),如果有定位,则加z-index)7.2 文字围绕浮动元素效果布局示意图巧妙运用浮动元素不会压住文字的特性7.3 行内块巧妙运用页码在页面中间显示:把这些链接盒子转换为行内块, 之后给父级指定 text-align:center;利用行内块元素中间有缝隙,并且给父级添加 text-align:center; 行内块元素会水平会居中7.4. CSS 三角强化 案例7.4.1 原理<style> .box1 { width: 0; height: 0; /* 把上边框宽度调大 */ /* border-top: 100px solid transparent; border-right: 50px solid skyblue; */ /* 左边和下边的边框宽度设置为0 */ /* border-bottom: 0 solid blue; border-left: 0 solid green; */ /* 1.只保留右边的边框有颜色 */ border-color: transparent red transparent transparent; /* 2. 样式都是solid */ border-style: solid; /* 3. 上边框宽度要大, 右边框 宽度稍小, 其余的边框该为 0 */ border-width: 100px 50px 0 0 ; } </style> </head> <body> <div class="box1"></div> </body>7.4.2 案例效果7.4.3 代码参考<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>CSS三角强化的巧妙运用</title> <style> .price { width: 160px; height: 24px; line-height: 24px; border: 1px solid red; margin: 0 auto; } .miaosha { position: relative; float: left; width: 90px; height: 100%; background-color:red; text-align: center; color: #fff; font-weight: 700; margin-right: 8px; } .miaosha i { position: absolute; right: 0; top: 0; width: 0; height: 0; border-color: transparent #fff transparent transparent; border-style: solid; border-width: 24px 10px 0 0; } .origin { font-size: 12px; color: gray; text-decoration: line-through; } </style> </head> <body> <div class="price"> <span class="miaosha"> ¥1650 <i></i> </span> <span class="origin">¥5650</span> </div> </body> </html>8. CSS 初始化不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对HTML文本呈现的差异,照顾浏览器的兼容,我们需要对CSS 初始化简单理解: CSS初始化是指重设浏览器的样式。 (也称为CSS reset)每个网页都必须首先进行 CSS初始化。这里我们以 京东CSS初始化代码为例。Unicode编码字体:把中文字体的名称用相应的Unicode编码来代替,这样就可以有效的避免浏览器解释CSS代码时候出现乱码的问题。比如:黑体 \9ED1\4F53宋体 \5B8B\4F53微软雅黑 \5FAE\8F6F\96C5\9ED1
2021年09月04日
6 阅读
0 评论
0 点赞
2021-09-04
CSS(三)定位 显示和隐藏
1. 定位(position) 介绍1.1 为什么使用定位我们先来看一个效果,同时思考一下用标准流或浮动能否实现类似的效果?场景1: 某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子.场景2:当我们滚动窗口的时候,盒子是固定屏幕某个位置的。结论:要实现以上效果,标准流 或 浮动都无法快速实现所以:1.浮动可以让多个块级盒子一行没有缝隙排列显示, 经常用于横向排列盒子。2.定位则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子。1.2 定位组成定位:将盒子定在某一个位置,所以定位也是在摆放盒子, 按照定位的方式移动盒子定位也是用来布局的,它有两部分组成:定位 = 定位模式 + 边偏移定位模式 用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置。1.2.1 边偏移(方位名词)边偏移 就是定位的盒子移动到最终位置。有 top、bottom、left 和 right 4 个属性。边偏移属性示例描述toptop: 80px顶端偏移量,定义元素相对于其父元素上边线的距离。bottombottom: 80px底部偏移量,定义元素相对于其父元素下边线的距离。leftleft: 80px左侧偏移量,定义元素相对于其父元素左边线的距离。rightright: 80px右侧偏移量,定义元素相对于其父元素右边线的距离定位的盒子有了边偏移才有价值。 一般情况下,凡是有定位地方必定有边偏移。1.2.2 定位模式 (position)在 CSS 中,通过 position 属性定义元素的定位模式,语法如下:选择器 { position: 属性值; }定位模式是有不同分类的,在不同情况下,我们用到不同的定位模式。定位模式决定元素的定位方式 ,它通过 CSS 的 position 属性来设置,其值可以分为四个:值语义static静态定位relative相对定位absolute绝对定位fixed固定定位1.3 定位模式介绍1.3.1. 静态定位(static) - 了解静态定位是元素的默认定位方式,无定位的意思。它相当于 border 里面的none,静态定位static,不要定位的时候用。语法:选择器 { position: static; }静态定位 按照标准流特性摆放位置,它没有边偏移。静态定位在布局时我们几乎不用的1.3.2. 相对定位(relative) - 重要相对定位是元素在移动位置的时候,是相对于它自己原来的位置来说的(自恋型)。语法:选择器 { position: relative; }相对定位的特点:(务必记住)1.它是相对于自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)。2.原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它。因此,相对定位并没有脱标。它最典型的应用是给绝对定位当爹的。。。效果图:1.3.3. 绝对定位(absolute) - 重要1.3.3.1 绝对定位的介绍绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的(拼爹型)。语法: 选择器 { position: absolute; }完全脱标 —— 完全不占位置;父元素没有定位,则以浏览器为准定位(Document 文档)。父元素要有定位元素将依据最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。绝对定位的特点总结:(务必记住)1.如果没有祖先元素或者祖先元素没有定位,则以浏览器为基准定位(Document 文档)。2.如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置。3.绝对定位不再占有原先的位置。所以绝对定位是脱离标准流的。(脱标)1.3.3.2 定位口诀 —— 子绝父相弄清楚这个口诀,就明白了绝对定位和相对定位的使用场景。这个“子绝父相”太重要了,是我们学习定位的口诀,是定位中最常用的一种方式这句话的意思是:子级是绝对定位的话,父级要用相对定位。因为绝对定位的盒子是拼爹的,所以要和父级搭配一起来使用。①子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。②父盒子需要加定位限制子盒子在父盒子内显示。③父盒子布局时,需要占有位置,因此父亲只能是相对定位。这就是子绝父相的由来,所以相对定位经常用来作为绝对定位的父级。总结: 因为父级需要占有位置,因此是相对定位, 子盒子不需要占有位置,则是绝对定位当然,子绝父相不是永远不变的,如果父元素不需要占有位置,子绝父绝也会遇到。疑问:为什么在布局时,子级元素使用绝对定位时,父级元素就要用相对定位呢?观察下图,思考一下在布局时,左右两个方向的箭头图片以及父级盒子的定位方式。分析:方向箭头叠加在其他图片上方,应该使用绝对定位,因为绝对定位完全脱标,完全不占位置。父级盒子应该使用相对定位,因为相对定位不脱标,后续盒子仍然以标准流的方式对待它。如果父级盒子也使用绝对定位,会完全脱标,那么下方的广告盒子会上移,这显然不是我们想要的。结论:父级要占有位置,子级要任意摆放,这就是子绝父相的由来。1.3.4. 固定定位(fixed) - 重要固定定位是元素固定于浏览器可视区的位置。(认死理型) 主要使用场景: 可以在浏览器页面滚动时元素的位置不会改变。语法: 选择器 { position: fixed; }固定定位的特点:(务必记住):1.以浏览器的可视窗口为参照点移动元素。跟父元素没有任何关系不随滚动条滚动。2.固定定位不在占有原先的位置。固定定位也是脱标的,其实固定定位也可以看做是一种特殊的绝对定位。(认死理型)完全脱标—— 完全不占位置;只认浏览器的可视窗口 —— 浏览器可视窗口 + 边偏移属性 来设置元素的位置;跟父元素没有任何关系;单独使用的不随滚动条滚动。固定定位举例:提示:IE 6 等低版本浏览器不支持固定定位。1.3.5 粘性定位(sticky) - 了解粘性定位可以被认为是相对定位和固定定位的混合。 Sticky 粘性的语法: 选择器 { position: sticky; top: 10px; } 粘性定位的特点:1.以浏览器的可视窗口为参照点移动元素(固定定位特点)2.粘性定位占有原先的位置(相对定位特点)3.必须添加 top 、left、right、bottom 其中一个才有效跟页面滚动搭配使用。 兼容性较差,IE 不支持。1.3.6 定位总结定位模式是否脱标移动位置是否常用static 静态定位否不能使用边偏移很少relative 相对定位否 (占有位置)相对于自身位置移动基本单独使用absolute绝对定位是(不占有位置)带有定位的父级要和定位父级元素搭配使用fixed 固定定位是(不占有位置)浏览器可视区单独使用,不需要父级sticky 粘性定位否 (占有位置)浏览器可视区当前阶段少一定记住 相对定位、固定定位、绝对定位 两个大的特点: 1. 是否占有位置(脱标否) 2. 以谁为基准点移动位置。学习定位重点学会子绝父相。注意:边偏移需要和定位模式联合使用,单独使用无效;top 和 bottom 不要同时使用;left 和 right 不要同时使用。2. 综合案例:学成在线-hot 模块添加2. 1 案例截图:2.2 案例分析一个大的 li 中包含 一个课程图片,课程介绍文字信息,还有hot的小图标;hot图片重叠在课程图片上面—— 脱标,不占位置,需要使用绝对定位;hot图片重叠在li的右上方 —— 需要使用边偏移确定准确位置。2.3 案例小结子绝父相 —— 子元素使用绝对定位,父元素使用相对定位;与浮动的对比:绝对定位:脱标,利用边偏移指定准确位置;浮动:脱标,不能指定准确位置,让多个块级元素在一行显示。结构修改:<!-- 修改.box-bd里面的li标签内容,添加一个hot图标 --> <li> <!-- 添加hot小图片 --> <em> <img src="images/hot.png" alt=""> </em> <img src="images/pic.png" alt=""> <h4> Think PHP 5.0 博客系统实战项目演练 </h4> <div class="info"> <span>高级</span> • 1125人在学习 </div> </li>样式修改:.box-bd ul li { /* 子绝父相 */ /* 父元素相对定位 */ position: relative; float: left; width: 228px; height: 270px; background-color: #fff; margin-right: 15px; margin-bottom: 15px; } .box-bd ul li > img { width: 100%; } .box-bd ul li h4 { margin: 20px 20px 20px 25px; font-size: 14px; color: #050505; font-weight: 400; } .box-bd ul li em { /* 子元素绝对定位 */ position: absolute; top: 4px; right: -4px; }3. 定位(position)的应用3.1. 固定定位小技巧: 固定在版心左侧位置。小算法:1.让固定定位的盒子 left: 50%. 走到浏览器可视区(也可以看做版心) 的一半位置。2.让固定定位的盒子 margin-left: 版心宽度的一半距离。 多走 版心宽度的一半位置就可以让固定定位的盒子贴着版心右侧对齐了。案例效果:<style> .w { width: 800px; height: 1400px; background-color: pink; margin: 0 auto; } .fixed { position: fixed; /* 1. 走浏览器宽度的一半 */ left: 50%; /* 2. 利用margin 走版心盒子宽度的一半距离 */ margin-left: 405px; width: 50px; height: 150px; background-color: skyblue; } </style> </head> <body> <div class="fixed"></div> <div class="w">版心盒子 800像素</div> </body>3.2. 堆叠顺序(z-index)在使用定位布局时,可能会出现盒子重叠的情况。此时,可以使用 z-index 来控制盒子的前后次序 (z轴)语法:选择器 { z-index: 1; }z-index 的特性如下:属性值:正整数、负整数或 0,默认值是 0,数值越大,盒子越靠上;如果属性值相同,则按照书写顺序,后来居上;数字后面不能加单位。注意:z-index 只能应用于相对定位、绝对定位和固定定位的元素,其他标准流、浮动和静态定位无效。应用 z-index 层叠等级属性可以调整盒子的堆叠顺序。如下图所示:案例演示:堆叠顺序。4. 定位(position)的拓展4.1 绝对定位的盒子居中注意:加了绝对定位/固定定位的盒子不能通过设置 margin: auto 设置水平居中。但是可以通过以下计算方法实现水平和垂直居中,可以按照下图的方法:left: 50%;:让盒子的左侧移动到父级元素的水平中心位置;margin-left: -100px;:让盒子向左移动自身宽度的一半。盒子居中定位示意图4.2 定位特殊特性绝对定位和固定定位也和浮动类似。1.行内元素添加绝对或者固定定位,可以直接设置高度和宽度。2.块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。前面我们讲过, display 是 显示模式, 可以改变显示模式有以下方式:可以用inline-block 转换为行内块可以用浮动 float 默认转换为行内块(类似,并不完全一样,因为浮动是脱标的)绝对定位和固定定位也和浮动类似, 默认转换的特性 转换为行内块。所以说, 一个行内的盒子,如果加了浮动、固定定位和绝对定位,不用转换,就可以给这个盒子直接设置宽度和高度等。4.3 脱标的盒子不会触发外边距塌陷浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题。 (我们以前是用padding border overflow解决的)也就是说,我们给盒子改为了浮动或者定位,就不会有垂直外边距合并的问题了。4.4 绝对定位(固定定位)会完全压住盒子浮动元素不同,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)但是绝对定位(固定定位) 会压住下面标准流所有的内容。浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的。 文字会围绕浮动元素5. 综合案例 - 淘宝轮播图(重点)5.1 效果图5.2 布局分析5.3 步骤大盒子我们类名为: tb-promo 淘宝广告里面先放一张图片。左右两个按钮 用链接就好了。 左箭头 prev 右箭头 next 左按钮样式(border-radius:左上,右上,右下,左下), 右按钮定位,提取左右按钮共同的样式代码(并集选择器)底侧小圆点ul 继续做。 类名为 promo-nav 中间长方形椭圆 ul的定位(水平居中,离底部15px) 长方形需要五个小圆点,ul无序列表,li浮动,椭圆中小圆点的样式5.4 知识点:圆角矩形设置4个角圆角矩形可以为4个角分别设置圆度, 但是是有顺序的border-top-left-radius:20px; border-top-right-radius:20px; border-bottom-right-radius:20px; border-bottom-left-radius:20px;如果4个角,数值相同 border-radius: 15px;里面数值不同,我们也可以按照简写的形式,具体格式如下:border-radius: 左上角 右上角 右下角 左下角;还是遵循的顺时针。5.5 代码参考<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>淘宝轮播图做法</title> <style> * { margin: 0; padding: 0; } li { list-style: none; } .tb-promo { position: relative; width: 520px; height: 280px; background-color: pink; margin: 100px auto; } .tb-promo img { width: 520px; height: 280px; } /* 并集选择器可以集体声明相同的样式 */ .prev, .next { position: absolute; /* 绝对定位的盒子垂直居中 */ top: 50%; margin-top: -15px; /* 加了绝对定位的盒子可以直接设置高度和宽度 */ width: 20px; height: 30px; background: rgba(0, 0, 0, .3); text-align: center; line-height: 30px; color: #fff; text-decoration: none; } .prev { left: 0; /* border-radius: 15px; */ border-top-right-radius: 15px; border-bottom-right-radius: 15px; } .next { /* 如果一个盒子既有left属性也有right属性,则默认会执行 left属性 同理 top bottom 会执行 top */ right: 0; /* border-radius: 15px; */ border-top-left-radius: 15px; border-bottom-left-radius: 15px; } .promo-nav { position: absolute; bottom: 15px; left: 50%; margin-left: -35px; width: 70px; height: 13px; /* background-color: pink; */ background: rgba(255,255,255, .3); border-radius: 7px; } .promo-nav li { float: left; width: 8px; height: 8px; background-color: #fff; border-radius: 50%; margin: 3px; } /* 不要忘记选择器权重的问题 */ .promo-nav .selected { background-color: #ff5000; } </style> </head> <body> <div class="tb-promo"> <img src="images/tb.jpg" alt=""> <!-- 左侧按钮箭头 --> <a href="#" class="prev"> < </a> <!-- 右侧按钮箭头 --> <a href="#" class="next"> > </a> <!-- 小圆点 --> <ul class="promo-nav"> <li class="selected"></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> </body> </html>6. 网页布局总结通过盒子模型,清楚知道大部分html标签是一个盒子。通过CSS浮动、定位 可以让每个盒子排列成为网页。一个完整的网页,是标准流、浮动、定位一起完成布局的,每个都有自己的专门用法。6.1. 标准流可以让盒子上下排列或者左右排列,垂直的块级盒子显示就用标准流布局。6.2. 浮动可以让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局6.3. 定位定位最大的特点是有层叠的概念,就是可以让多个盒子前后叠压来显示。如果元素自由在某个盒子内移动就用定位布局。7. 元素的显示与隐藏目的(本质) 让一个元素在页面中消失或者显示出来场景 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现!7.1. display 显示(重点)display 设置或检索对象是否及如何显示。display: none 隐藏对象 display:block 除了转换为块级元素之外,同时还有显示元素的意思。特点: display 隐藏元素后,不再占有原来的位置。后面应用及其广泛,搭配 JS 可以做很多的网页特效。实际开发场景:配合后面js做特效,比如下拉菜单,原先没有,鼠标经过,显示下拉菜单, 应用极为广泛7.2. visibility 可见性 (了解)visibility 属性用于指定一个元素应可见还是隐藏。visibility:visible ; 元素可视 visibility:hidden; 元素隐藏特点:visibility 隐藏元素后,继续占有原来的位置。(停职留薪)如果隐藏元素想要原来位置, 就用 visibility:hidden如果隐藏元素不想要原来位置, 就用 display:none (用处更多 重点)7.3. overflow 溢出(重点)overflow 属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度) 时,会发生什么。属性值描述visible不剪切内容也不添加滚动条hidden不显示超过对象尺寸的内容,超出的部分隐藏掉scroll不管超出内容否,总是显示滚动条auto超出自动显示滚动条,不超出不显示滚动条一般情况下,我们都不想让溢出的内容显示出来,因为溢出的部分会影响布局。但是如果有定位的盒子, 请慎用overflow:hidden 因为它会隐藏多余的部分。实际开发场景:清除浮动隐藏超出内容,隐藏掉, 不允许内容超过父盒子。7.4. 显示与隐藏总结属性区别用途display 显示 (重点)隐藏对象,不保留位置配合后面js做特效,比如下拉菜单,原先没有,鼠标经过,显示下拉菜单, 应用极为广泛visibility 可见性 (了解)隐藏对象,保留位置使用较少overflow 溢出(重点)只是隐藏超出大小的部分1. 可以清除浮动 2. 保证盒子里面的内容不会超出该盒子范围8 综合案例:土豆网鼠标经过显示遮罩8.1. 效果图8.2. 案例目标1.练习元素的显示与隐藏2.练习元素的定位8.3. 核心原理原先半透明的黑色遮罩看不见, 鼠标经过 大盒子,就显示出来。遮罩的盒子不占有位置, 就需要用绝对定位 和 display 配合使用。8.4. 代码参考<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>仿土豆网显示隐藏遮罩案例</title> <style> .tudou { position: relative; width: 444px; height: 320px; background-color: pink; margin: 30px auto; } .tudou img { width: 100%; height: 100%; } .mask { /* 隐藏遮罩层 */ display: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, .4) url(images/arr.png) no-repeat center; } /* 当我们鼠标经过了 土豆这个盒子,就让里面遮罩层显示出来 */ .tudou:hover .mask { /* 而是显示元素 */ display: block; } </style> </head> <body> <div class="tudou"> <div class="mask"></div> <img src="images/tudou.jpg" alt=""> </div> <div class="tudou"> <div class="mask"></div> <img src="images/tudou.jpg" alt=""> </div> <div class="tudou"> <div class="mask"></div> <img src="images/tudou.jpg" alt=""> </div> <div class="tudou"> <div class="mask"></div> <img src="images/tudou.jpg" alt=""> </div> </body> </html>
2021年09月04日
7 阅读
0 评论
0 点赞
1
...
34
35