前端HTML、CSS补充
前言
本文是 Pink 老师HTML CSS 教程学习后的补充记录。
HTML 补充
浏览器内核
| 浏览器 | 内核 | 备注 |
|---|---|---|
| IE | Trident | IE、猎豹安全、360极速浏览器、百度浏览器 |
| firefox | Gecko | 可惜这几年已经没落了,打开速度慢、升级频繁、猪一样的队友flash、神一样的对手chrome。 |
| Safari | webkit | 现在很多人错误地把 webkit 叫做 chrome内核(即使 chrome内核已经是 blink 了)。苹果感觉像被别人抢了媳妇,都哭晕在厕所里面了。 |
| chrome | Chromium/Blink | 在 Chromium 项目中研发 Blink 渲染引擎(即浏览器核心),内置于 Chrome 浏览器之中。Blink 其实是 WebKit 的分支。大部分国产浏览器最新版都采用Blink内核。二次开发 |
| Opera | blink | 现在跟随chrome用blink内核。 |
标签
基本补充
1 | <!-- 用来说明你用的XHTML或者HTML是什么版本,告诉浏览器按照HTML5标准解析页面 --> |
绝对路径
直接打开 HTML 文件绝对路径是根据盘符开始的,服务器运行根目录使用/开始(如localhost:3000)
表格元素属性
| 属性名 | 属性值 | 描述 |
|---|---|---|
| align | left,center,right | 规定表格相对周围元素的对齐方式 |
| border | 1或者”” | 规定表格单元是否拥有边框,默认为” “,表示没有边框 |
| cellpadding | 像素值 | 规定单元边沿与其内容之间的空白,默认1像素 |
| cellspacing | 像素值 | 规定单元格之间的空白,默认2像素 |
| width | 像素值或百分比 | 规定表格的宽度 |
- 跨行合并:rowspan=“合并单元格的s个数”
- 跨列合并:colspan=”合并单元格的个数”
自定义列表标签
1 | <dl> |
表单
- 表单属性:action=”url地址” method=”提交方式” name=”表单域的名称”
- input 元素 type=”reset” 重置表单
- checked 属性主要针对于单选框和复选框
- selected 属性主要争对下拉选项
CSS 补充
杂乱补充
- css 书写风格,使用大写的也可以( HTML 不区分大小写),但是不推荐。
- 列表清除点位:list-style:none;或者list-stype-type:none;
字体属性
1 | p { |
文本属性
1 | /* text-decoration 属性用于装饰文本,可以给文本添加下划线,删除线,上划线等 |
Emmet 语法
HTML 部分
生成标签 直接输入标签名 按tab键即可 比如 div 然后tab 键, 就可以生成
如果想要生成多个相同标签 加上 * 就可以了 比如 div*
就可以快速生成3个div3. 如果有父子级关系的标签,可以用 > 比如 ul > li就可以了
如果有兄弟关系的标签,用 + 就可以了 比如 div+p
如果生成带有类名或者id名字的, 直接写 .demo 或者 #two tab 键就可以了
如果生成的div 类名是有顺序的, 可以用 自增符号 $
如果想要在生成的标签内部写内容可以用 { } 表示
CSS 部分
比如 w200 按tab 可以 生成 width: 200px;
比如 lh26px 按tab 可以生成 line-height: 26px;
复合选择器
伪类选择器
1 | /* 链接伪类,是利用交集选择器 |
CSS 元素显示模式
1 | /* 文字类的元素内不能使用块级元素 (h1-h6,p) |
CSS 背景
1 | background-color: transparent /* 默认值 透明 */ |
CSS 三大特性
层叠性:相同选择器设置相同的样式,此时一个样式就会覆盖另一个冲突的样式。
继承性:子继承父元素部分样式,font家族样式(注意继承的样式优先度最低,会被浏览器默认样式覆盖,如:a标签的color属性),行高可不写单位相对于当前元素的字体大小。
优先级:权重来比较。
important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承
注意:权重计算不会出现进位,无论多个 class 都不会比一个 id 大
继承的权重为0
盒子模型
1 | /* 边框:下面的调换顺序无影响,border-top 单独设置 |
CSS 圆角
1 | /* 边框圆角,设置一个矩形左右圆角(高度一般)*/ |
盒子阴影与文字阴影
1 | box-shadow: h-shadow v-shadow blur spread color inset; |
CSS 浮动
1 | /* |
PS 补充
PS 有很多的切图方式:图层切图、切片切图、PS 插件切图等。
- 图层切图:右击图层 ➡导出 PNG 切片,多个图片按住Shift选中 后Ctrl+E合并图层后再导出。
- 切片切图
- 插件切图:Cutterman官网,PS 必须是完整版,不能是绿色版。
定位
默认的值:position:static。
绝对定位的祖先级没有非static的情况下,相对于浏览器窗口而非body。
绝对定位与固定定位是脱离文档流的。
固定定位小技巧,固定在版心右侧位置:
1.让固定定位的盒子 left: 50% 走到浏览器可视区(也可以看做版心)的一半位置。
2.让固定定位的盒子 margin-left 版心宽度的一半距离。多走版心宽度的一半位置。
粘性定位:position:sticky 相对于浏览器的可视窗口、占有原来的位置、必须添加top,left,right,bottom其中一个才有效。
浮动元素、绝对定位(固定定位)元素都不会触发外边距合并的问题。
行内元素添加绝对或者固定定位,可以直接设置高度和宽度
块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
界面样式
鼠标样式cursor
| 属性值 | 描述 |
|---|---|
| default | 小白,默认 |
| pointer | 小手 |
| move | 移动 |
| text | 文本 |
| not-allowed | 禁止 |
轮廓线outline
input添加outline:0; 或者outline: none;样式后,就可以去掉默认的蓝色边框
防止拖拽文本域
textarea { resize: none; }
vertical-align
- 使用场景:经常用于设置图片或者表单(行内块元素)和文字垂直对齐。
- 官方解释:用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效
1 | vertical-align: baseline | top | middle | bottom |
图片底侧空白缝隙解决
- 图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐(给图片加边框就可以看见)
主要解决办法有两种:
- 给图片添加 vertical-align: middle | top | bottom 等 (推荐)
- 把图片转换为块级元素 display:block 因为块级元素不会有 vertical-align 属性
溢出文字省略
1 | /* 1.先强制一行内显示文本 */ |
直角三角形
1 | .box1 { |
HTML5
新增标签
1 | <header>:头部标签 |
| 属性 | 值 | 描述 |
|---|---|---|
| autoplay | autoplay | 视频就绪自动播放(谷歌浏览器需要添加muted来解决自动播放问题) |
| controls | controls | 向用户显示播放控件 |
| width | pixels(像素) | 设置播放器宽度 |
| height | pixels(像素) | 设置播放器高度 |
| loop | loop | 播放完是否继续播放该视频,循环播放 |
| preload | auto(预先加载视频)none(不应加载视频) | 规定是否预加载视频(如果有了autoplay 就忽略该属性) |
| src | url | 视频url的地址 |
| poster | lmgurl | 加载等待的画面图片 |
| muted | muted | 静音播放 |
1 | <!-- 谷歌浏览器禁用了自动播放(需要开启muted静音才可以) --> |
1 | <audio>:音频标签,支持mp3、Wav、ogg三种格式(浏览器基本都支持mp3) |
新增input
| 属性值 | 说明 |
|---|---|
| type=“email” | 限制用户输入必须为Email类型 |
| type=“url” | 限制用户输入必须为URL类型 |
| type=“data” | 限制用户输入必须为日期类型 |
| type=“time” | 限制用户输入必须为时间类型 |
| type=“month” | 限制用户输入必须为月类型 |
| type=“week” | 限制用户输入必须为周类型 |
| type=”number” | 限制用户输入必须为数字类型 |
| type=”tel” | 手机号码 |
| type=”search” | 搜索框 |
| type=“color” | 生成一个颜色选择表单 |
新增表单属性
| 属性 | 值 | 说明 |
|---|---|---|
| required | required | 表单拥有该属性表示其内容不能为空,必填 |
| placeholder | 提示文本 | 表单的提示信息,存在默认值将不显示 |
| autofocus | autofocus | 自动聚焦属性,页面加载完成自动聚焦到指定表单 |
| autocomplete | off/on | 当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项,默认已经打开。如autocomplete=“on” ,关闭autocomplete=“off”,需要放在表单内,同时加上name属性,同时成功提交 |
| multiple | multiple | 可以多选文件提示 |
CSS3
新增选择器
属性选择器
| 选择符 | 简介 |
|---|---|
| E[att] | 选择具有att属性的E元素 |
| E[att=“val”] | 选择具有att属性且属性值等于val的E元素 |
| E[att^=“val”] | 匹配具有att属性且值以val开头的E元素 |
| E[att$=“val”] | 匹配具有att属性且值以val结尾的E元素 |
| E[att*=“val”] | 匹配具有att属性且值中含有val的E元素 |
注意:类选择器,属性选择器,伪类选择器,权重为10
伪类选择器
| 选择符 | 简介 |
|---|---|
| E:first-child | 匹配父元素中的第一个子元素E |
| E:last-child | 匹配父元素中最后一个E元素 |
| E:nth-child(n) | 匹配父元素中的第n个子元素E |
| E:first-of-type | 指定类型E的第一个 |
| E:last-of-type | 指定类型E的最后一个 |
| E:nth-of-type(n) | 指定类型E的第n个 |
注意:
- n 是从0开始的,前三个相对于父元素(所有元素都排列)、后面的则指定盒子排列
- nth-child 对父元素里面所有孩子排序选择(序号是固定的),先找到第n个孩子,然后看看是否和E匹配
- nth-of-type 对父元素里面指定子元素进行排序选择,先去匹配E,然后再根据E 找第n个孩子
- 伪类选择器的权重为10
伪元素选择器
- before 和 after 必须有 content 属性
- before 在内容前面,after 在内容后面
- before 和 after 创建的是一个元素,但是属于行内元素
- 创建出来的元素在 Dom 中查找不到,所以称为伪元素
- 伪元素和标签选择器一样,权重为 1
filter背景滤镜
CSS属性将模糊或颜色偏移等图形效果应用于元素(图片变模糊)
1 | img { |
transition 过渡动画
1 | transition: 要过渡的属性 花费时间 运动曲线 何时开始 |
transform 变形
1 | /* 注意:对行内标签没有效果 */ |
animation 动画
1 | @keyframes 动画名称 { |
动画常用属性
| 属性 | 描述 |
|---|---|
| @keyframes | 规定动画。 |
| animation | 所有动画属性的简写属性,除了animation-play-state属性。 |
| animation-name | 规定@keyframes动画的名称。(必须的) |
| animation-duration | 规定动画完成一个周期所花费的秒或毫秒,默认是0。(必须的) |
| animation-timing-function | 规定动画的速度曲线,默认是“ease”。 |
| animation-delay | 规定动画何时开始,默认是0。 |
| animation-iteration-count | 规定动画被播放的次数,默认是1,还有infinite |
| animation-direction | 规定动画是否在下一周期逆向播放,默认是“normal“,alternate逆播放 |
| animation-play-state | 规定动画是否正在运行或暂停。默认是”running”,还有”paused”。 |
| animation-fill-mode | 规定动画结束后状态,保持forwards回到起始backwards |
animation-timing-function 的值
| 值 | 描述 |
|---|---|
| linear | 动画从头到尾的速度是相同的。匀速 |
| ease | 默认。动画以低速开始,然后加快,在结束前变慢。 |
| ease-in | 动画以低速开始。 |
| ease-out | 动画以低速结束。 |
| ease-in-out | 动画以低速开始和结束。 |
| steps() | 指定了时间函数中的间隔数量(步长) |
1 | /* |
3D 转换
- translform:translateX(100px):仅仅是在x轴上移动
- translform:translateY(100px):仅仅是在Y轴上移动
- translform:translateZ(100px):仅仅是在Z轴上移动(注意:translateZ一般用px单位)
- transform:translate3d(x,y,z):其中 x、y、z 分别指要移动的轴的方向的距离
1 | /* translate3d */ |
移动端
视口viewport
布局视口layout viewport
- 一般移动设备的浏览器都默认设置了一个布局视口,用于解决早期的PC端页面在手机上显示的问题。
- iOS, Android基本都将这个视口分辨率设置为 980px,所以PC上的网页大多都能在手机上呈现,只不过元素看上去很小,一般默认可以通过手动缩放网页。
视觉视口 visual viewport
- 字面意思,它是用户正在看到的网站的区域。注意:是网站的区域。
- 我们可以通过缩放去操作视觉视口,但不会影响布局视口,布局视口仍保持原来的宽度。
理想视口 ideal viewport
- 为了使网站在移动端有最理想的浏览和阅读宽度而设定
- 理想视口,对设备来讲,是最理想的视口尺寸
- 需要手动添写meta视口标签通知浏览器操作
- meta视口标签的主要目的:布局视口的宽度应该与理想视口的宽度一致,简单理解就是设备有多宽,我们布局的视口就多宽。
meta视口标签
1 | <meta name="viewport" content="width=device-width, user-scalable=no,initial-scale=1.0, |
content 的属性
| 属性 | 解释说明 |
|---|---|
| width | 宽度设置的是viewport宽度,可以设置device-width特殊值(宽度是设备宽度) |
| initial-scale | 初始缩放比,大于0的数字 |
| maximum-scale | 最大缩放比,大于0的数字 |
| minimum-scale | 最小缩放比,大于0的数字 |
| user-scalable | 用户是否可以缩放,yes或no(1或0) |
二倍图
物理像素和物理像素比
- 物理像素点指的是屏幕显示的最小颗粒,是物理真实存在的。这是厂商在出厂时就设置好了,比如苹果6\7\8 是 750* 1334
- 我们开发时候的1px 不是一定等于1个物理像素的
- PC端页面,1个px 等于1个物理像素的,但是移动端就不尽相同
- 一个px的能显示的物理像素点的个数,称为物理像素比或屏幕像素比
- PC端 和 早前的手机屏幕 / 普通手机屏幕: 1CSS像素 = 1 物理像素的
我们准备的图片,比我们实际需要的大小大2倍,这种方式就是二倍图
CSS初始化 normalize.css
官网地址:http://necolas.github.io/normalize.css/
1 | /*CSS3盒子模型*/ |
flex 布局
- flex 是 flexible Box 的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为 flex 布局。
- 当我们为父盒子设为 flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效。
背景渐变
1 | background-image: linear-gradient(to bottom, #e1f0f0, #1f99b0); |
值
| 角度 | 英文 | 作用 |
|---|---|---|
| 0deg | to top | 从下向上 |
| 90deg | to right | 从左向右 |
| 180deg | to bottom | 从上向下 |
| 270deg | to left | 从右向左 |
| to top left | 右下角到左上角 | |
| to top right | 左下角到右上角 |
媒体查询
1 | @media mediatype and|not|only(media feature){ |
rem 布局
1 | /* 使用 scss 自动计算 |
