前端学习笔记 - HTML+CSS

基础认知

网页

什么是网页

  • 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。

  • 网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。

  • 网页是构成网站的基本元素,它通常由图片、链接、文字、声音、视频元素组成。通常我们看到的网页,常见以 .htm 或 .html 后缀结尾的文件,因此将其俗称为 HTML 文件。

什么是 HTML

  • HTML 指的是超文本标记语言 (Hyper Text Markup Language) ,它是用来描述网页的一种语言。

  • HTML 不是一种编程语言,而是一种标记语言 (markup language)。

  • 标记语言是一套标记标签 (markup tag)。

所谓超文本,有 2 层含义:

  1. 它可以加入图片、声音、动画、多媒体等内容(超越了文本限制 )。

  2. 它还可以从一个文件跳转到另一个文件,与世界各地主机的文件连接(超级链接文本 )。

网页的形成

  • 网页是由网页元素组成的,这些元素是利用 html 标签描述出来,然后通过浏览器解析来显示给用户的。

  • 前端人员开发代码 ----> 浏览器显示代码(解析、渲染) -----> 生成最后的 Web 页面

常用浏览器

浏览器是网页显示、运行的平台。常用的浏览器有 IE、火狐(Firefox)、谷歌(Chrome)、Safari和Opera等。平时称为五大浏览器。

浏览器内核

浏览器 内核 备注
IE Trident IE、猎豹安全、360极速浏览器、百度浏览器
firefox Gecko 火狐浏览器内核
Safari Webkit 苹果浏览器内核
chrome/Opera Blink Blink其实是Webkit的分支
  • 渲染引擎(浏览器内核):浏览器中专门对代码进行解析渲染的部分;负责读取网页内容,整理讯息,计算网页的显示方式并显示页面。

  • 渲染引擎不同,导致解析相同代码时的 速度、性能、效果也不同的

  • 谷歌浏览器的渲染引擎速度快、性能高、效果好,所以更吸引用户的喜爱(推荐)

  • 目前国内一般浏览器都会采用 Webkit/Blink 内核,如 360、UC、QQ、搜狗等。 浏览器内核

Web 标准

Web 标准是由 W3C 组织和其他标准化组织制定的一系列标准的集合。W3C(万维网联盟)是国际最著名的标准化组织。

为什么需要 Web 标准

  • 不同浏览器的渲染引擎不同,对于相同代码解析的效果会存在差异

  • 遵循 Web 标准除了可以让不同的开发人员写出的页面更标准、更统一外,还有以下优点: 1.让 Web 的发展前景更广阔。 2.内容能被更广泛的设备访问。 3.更容易被搜寻引擎搜索。 4.降低网站流量费用。 5.使网站更易于维护。 6.提高页面浏览速度。

Web 标准的构成

主要包括结构(Structure)表现(Presentation)行为(Behavior)三个方面。

  • Web 标准提出的最佳体验方案:结构、样式、行为相分离。

  • 结构写到 HTML 文件中, 表现写到 CSS 文件中, 行为写到 JavaScript 文件中。

标准 语言 说明
结构 HTML 页面元素和内容
表现 CSS 网页元素的外观和位置等页面样式(如:颜色、大小等)
行为 JavaScript 网页模型的定义与页面交互

HTML语法规范

基本语法概述

  • HTML 标签是由尖括号包围的关键词,例如 。由<、>、/、英文单词或字母组成。并且把标签中<>包括起来的英文单词或字母称为标签名

  • HTML 标签通常是成对出现的,例如 和 ,我们称为双标签。标签对中的第一个标签是开始标签,第二个标签是结束标签,两部分之间包裹内容。

  • 有些特殊的标签必须是单个标签(极少情况),例如


    ,我们称为单标签,无法包裹内容。

标签的关系

双标签关系可以分为两类:包含关系和并列关系。

标签的属性

  • 标签的属性写在开始标签内部

  • 标签上可以同时存在多个属性

  • 属性之间以空格隔开

  • 标签名与属性之间必须以空格隔开

  • 属性之间没有顺序之分

HTML基本结构标签

  • 每个网页都会有一个基本的结构标签(也称为骨架标签),页面内容也是在这些基本标签上书写。

  • HTML 文档的的后缀名必须是 .html 或 .htm ,浏览器的作用是读取 HTML 文档,并以网页的形式显示出它们。

标签名 定义 说明
HTML标签 页面中最大的标签,被称为根标签
文档的头部 主义在head标签中必须设置的标签是title
文档的标题 让页面拥有一个属于自己的网页标题
文档的主体 元素包含文档所有的内容,页面内容基本都是放在body里的

    
        网页标题
    
    
    

网页开发工具 - VS code

  • 开发工具有很多: Visual Studio Code 、 Webstorm 、 Sublime 、Dreamweaver、 Hbuilder

  • VS Code → 速度快、体积小、插件多

插件安装和其他配置

前端学习笔记 - HTML+CSS_第1张图片

  • 文件 - 自动保存

补充配置文件

使用

  1. 双击打开软件。

  2. 新建文件(Ctrl + N )。

  3. 保存(Ctrl + S ), 注意移动要保存为 .html 文件

  4. Ctrl + 加号键 ,Ctrl + 减号键 可以放大缩小视图

  5. 生成页面骨架结构。 输入! 按下 Tab 键。

  6. 利用插件在浏览器中预览页面:单击鼠标右键,在弹出窗口中点击“Open In Default Browser”。快捷键:alt + b

  7. 注释:ctrl + /

HTML标签

标签语义化

实际项目开发中选择标签的原则:标签语义化;根据标签的语义,在合适的地方给一个最为合理的标签,可以让页面结构更清晰。即:根据语义选择对应正确的标签 如:需要写标题,就使用h系列标签;或需要写段落,就使用p标签

  • 好处: • 对人:好理解,好记忆 • 对机器:有利于机器解析,对搜索引擎(SEO)有帮助

标题标签

  • 场景:用来突出显示文章主题

  • 语义:1~6级,作为标题使用,重要程度依次递减

  • 特点: • 文字都有加粗 • 文字都有变大,并且从h1 → h6文字逐渐减小 • 独占一行

  • 注意点:h1标签对于网页尤为重要,开发中有特定的使用场景,如:新闻的标题、网页的logo部分

    

我是标题

   

我是标题

   

我是标题

   

我是标题

   
我是标题
   
我是标题

段落标签

  • 场景:在新闻和文章的页面中,用于分段显示

  • 语义:段落

  • 特点: • 段落之间存在间隙

    • 独占一行

    • 段落标签属于文字类标签,里面不可以再放h1标题、p标题、div等

    • 文本在一个段落中会根据浏览器窗口的大小自动换行。

    我是一个段落

换行标签

  • 场景:让文字强制换行显示

  • 语义:强制换行

  • 特点: • 单标签 • 让文字强制换行(只是简单地开始新的一行,跟段落不一样,段落之间会插入一些垂直的间距)

我今天中午吃了

水平标签

  • 场景:分割不同主题内容的水平线

  • 语义:主题的分割转换

  • 特点: • 单标签 • 在页面中显示一条水平线

    我是标题
    
  我是段落

文本格式化标签

  • 语义:突出重要性, 比普通文字更重要

语义 标签 说明
加粗 更推荐使用,语义更强烈
下划线 更推荐使用,语义更强烈
倾斜 更推荐使用,语义更强烈
删除线 更推荐使用,语义更强烈

图片标签

  • 场景:在网页中显示图片

  • 特点: • 单标签 • img标签需要展示对应的效果,需要借助标签的属性进行设置

属性

属性 属性值 说明
src 图片路径 必须属性,指定图像文件的路径和文件名
alt 文本 替换文本:图像加载失败时才显示的文字
title 文本 提示文本:鼠标悬停在图像上时显示的文字
width 像素px 设置图像的宽度,如果只设置了width或height中的一个,另一个没设置的会自动等比例缩放(此时图片不会变形)
height 像素px 设置图像的高度,如果同时设置了width和height两个,若设置不当此时图片可能会变形
border 像素 设置图像的边框粗细

图像标签属性注意点: ①图像标签可以拥有多个属性,必须写在标签名的后面。 ②属性之间不分先后顺序,标签名与属性、属性与属性之间均以空格分开。 ③属性采取键值对的格式,即 key = “value" 的格式,属性 = “属性值”

路径

绝对路径

指目录下的绝对位置,可直接到达目标位置,通常从盘符开始的路径

例如: • 盘符开头:D:\day01\images\1.jpg • 完整的网络地址:https://www.itcast.cn/2018czgw/images/logo.gif

相对路径

以引用文件所在位置为参考基础,而建立出的目录路径

相对路径是从代码所在的这个文件出发,去寻找目标文件的,这里所说的上一级 、下一级和同一级就是图片相对于 HTML 页面的位置。

相对路径分类 符号 说明
同一级路径 ./
下一级路径 /
上一级路径 ../

音频标签 audio (HTML5)

  • 场景:在页面中插入音频

  • 音频标签目前支持三种格式:MP3(五大浏览器均可使用,推荐)、Wav、Ogg

属性

属性名 功能
src 音频的路径
controls 显示播放的控件,
autoplay 自动播放,
loop 循环播放,
    

视频标签 video (HTML5)

  • 场景:在页面中插入视频

  • 视频标签目前支持三种格式:MP4(五大浏览器均可使用,推荐) 、WebM 、Ogg

属性

属性名 功能
src 视频的路径
controls 显示播放的控件,
autoplay 自动播放(谷歌中可以配合muted实现静音播放),
loop 循环播放,
muted 静音播放,
    

链接标签

  • 场景:点击之后,从一个页面跳转到另一个页面

  • 称呼: a标签、超链接、锚链接

  • 特点:

    • 双标签,内部可以包裹内容

    • 如果需要a标签点击之后去指定页面,需要设置a标签的href属性

    • 链接的默认外观:有下划线;未被访问的链接是蓝色的;已被访问的链接是紫色的(清除浏览器可变回蓝色);活动链接是红色的

属性

属性 作用
href 用于指定链接目标的url地址(必须属性)当为标签应用href属性时,它就具有了超链接的功能
target 用于指定链接页面的打开方式,_self为默认值,_blank为在新窗口中的打开的方式

分类

  • 外部链接: 例如 百度

  • 内部链接:网站内部页面之间的相互链接. 直接链接内部页面名称即可,例如 首页

  • 空链接: 开发中不确定该链接最终跳转位置,用空链接占个位置,点击之后回到网页顶部, 首页

  • 下载链接: 如果 href 里面地址是一个文件或者压缩包,会下载这个文件

  • 网页元素链接: 在网页中的各种网页元素,如文本、图像、表格、音频、视频等都可以添加超链接

  • 锚点链接: 点我们点击链接,可以快速定位到页面中的某个位置

    1. 在链接文本的 href 属性中,设置属性值为 #名字 的形式,如 第2集

    2. 找到目标位置标签,里面添加一个 id 属性 = 刚才的名字 ,如:

      第2集介绍

列表标签

无序列表

  • 场景:在网页中表示一组无顺序之分的列表,如:新闻列表。

  • 显示特点:

    • 列表的每一项前默认显示圆点标识

    
  • 任意内容
  • 任意内容
  • 任意内容

image-20211008092127566

  • 注意点:

    • ul标签中只允许包含li标签

    • li标签可以包含任意内容

    • 无序列表的各个列表项之间没有顺序级别之分,是并列的。

    • 无序列表会带有自己的样式属性

有序列表

  • 场景:在网页中表示一组有顺序之分的列表,如:排行榜。

  • 显示特点:

    • 列表的每一项前默认显示序号标识

    
  1. 任意内容
  2. 任意内容
  3. 任意内容

image-20211008092450177

  • 注意点:

    • ol标签中只允许包含li标签

    • li标签可以包含任意内容

    • 列表排序以数字来显示

    • 有序列表会带有自己样式属性

自定义列表

  • 场景:常用于对术语或名词进行解释和描述,在网页的底部导航中通常会使用自定义列表实现。

  • 显示特点:

    • dd前会默认显示缩进效果

    • 列表项前没有任何项目符号

    
自定义列表的主题
自定义列表针对主题的每一项内容
自定义列表针对主题的每一项内容
自定义列表针对主题的每一项内容

image-20211008092743325

  • 注意点:

    • dl标签中只允许包含dt/dd标签

    • dt/dd标签可以包含任意内容

    • 个数没有限制,经常是一个
      对应多个

表格标签

  • 场景:在网页中以行+列的单元格的方式显示、展示数据,如:学生成绩表

  • 基本标签:

    • 是用于定义表格的标签

    • 标签用于定义表格中的行,必须嵌套在

      标签中

    • 用于定义表格中的单元格,必须嵌套在标签中

    • 标签表示 HTML 表格的表头部分(table head 的缩写),一般表头单元格位于表格的第一行或第一列,表头单元格里面的文本内容加粗居中显示,th标签书写在tr标签内部(用于替换td标签)

    • 在表格中表示整体大标题,书写在table标签内部;可以包裹h标题,反之不行

  • 注意点:

    • 标签的嵌套关系:table > tr > td(th)

属性

属性名 属性值 描述
border 数字px(边框宽度) 规定表格单元是否有边框,默认为""表示没有没有边框
width 数字px或百分比 表格宽度
height 数字px或百分比 表格宽度
align left、center、right 规定表格相对周围元素的对齐方式(也可以给某一行或某一个单元格设置)
cellspacing 数字px 规定单元格之间的空白,默认2像素(去掉边框里的间隙:cellspacing='0' ,但更推荐用css里的border-collapse: collapse;)
cellpadding 数字px 规定单元边沿与其内容之间的空白,默认1像素

结构标签

  • 场景:让表格的内容结构分组,突出表格的不同部分(头部、主体、底部),使语义更加清晰

  • 结构标签:

    • 表格的头部区域

    • 表格的主体区域

    • 表格的底部区域

  • 注意点:

    • 表格结构标签内部用于包裹tr标签

    • 表格的结构标签可以省略

    
学生成绩单
姓名 成绩 评语
学生1 分数 评语1
学生1 分数 评语1
总结 总结 总结

前端学习笔记 - HTML+CSS_第2张图片

合并单元格

  • 合并单元格步骤:

  1. 明确合并哪几个单元格

  2. 通过左上原则,确定保留谁删除谁 • 上下合并→只保留最上的,删除其他 • 左右合并→只保留最左的,删除其他

  3. 给保留的单元格设置:跨行合并(rowspan="合并单元格的个数(包括自己)")或者跨列合并(colspan="合并单元格的个数")

  • 注意点: • 只有同一个结构标签中的单元格才能合并,不能跨结构标签合并(不能跨:thead、tbody、tfoot)

    
1 1 1 1
1 1 1
1 1 1 1 1

前端学习笔记 - HTML+CSS_第3张图片

表单标签

目的:收集用户信息

组成:在 HTML 中,一个完整的表单通常由表单域、表单控件(也称为表单元素)和 提示信息3个部分构成。

表单域

  • 表单域是一个包含表单元素的区域。

  • 在 HTML 标签中,

    标签用于定义表单域,以实现用户信息的收集和传递。 会把它范围内的表单元素信息提交给服务器.


各种表单元素控件

属性

属性 属性值 作用
action url地址 指定接受并处理表单数据的服务器程序的url地址
method get/post 设置表单数据的提交方式
name 名称 指定表单名称,以区分同一个页面中的多个表单域

表单控件(表单元素)

  • 场景:在网页中显示收集用户信息的表单效果,如:登录页、注册页

  • 标签名:input

    • input标签可以通过type属性值的不同,展示不同效果

    • input标签为单标签

  • Inuput标签的轮廓(处于选中状态时出现的边边)

    • 默认值:outline: invert none medium;

    • 连写:颜色 样式 宽度(可省略任意) outline: #999 solid 2px;

    • 去除轮廓:outline:none;

type属性

标签名 type属性值 说明
input text 文本框,用于输入单行文本,默认宽度为20个字符
password 密码框,用于输入密码,该字段中的字符被掩码
radio 单选框,用于多选一
checkbox 多选框,用于多选多
file 文件选择,定义输入字段和“浏览”按钮供文件上传
submit 提交按钮,会把表单数据发送到服务器
reset 重置按钮,会重置表单中所有数据
button 普通按钮,默认无功能,可以配合js
image 图像形式的提交按钮
hidden 隐藏输入的字段

新增的 input 类型 (HTML5)

属性值 说明
type="email" 限制用户输入必须为Email类型
type="url" 限制用户输入必须为URL类型
type="date" 限制用户输入必须为日期类型
type="time" 限制用户输入必须为时间类型
type="month" 限制用户输入必须为月类型
type="week" 限制用户输入必须为周类型
type="number" 限制用户输入必须为数字类型
type="tel" 手机号码
type="search" 搜索框
type="color" 生成一个颜色选择表单

新增的表单属性 (HTML5)

属性 说明
required required 表单拥有该属性表示其内容不能为空,必填
placeholder 提示文本 表单的提示信息, 存在默认值将不显示
autofocus autofocus 自动聚焦属性,页面加载完成自动聚焦到指定表单
autocomplete off / on 当用户在字段开始键入时, 浏览器基于之前键入过的值, 应该显示出在字段中填写的选项。 默认已经打开, 如autocomplete ="on", 关闭autocomplete ="off"需要放在表单内,同时加上name 属性,同时成功提交
multiple multiple 可以多选文件提交
        /* 修改placeholder里面的字体颜色 */
        input::placeholder {
            color: pink;
        }

文本框

  • 属性

    • placeholder='提示文字':占位符,提示用户输入内容的文本

    • maxlength:用户可以在表单元素输入的最大字符数, 一般较少使用

    • value属性:用户输入的内容,提交之后会发送给后端服务器;也可以实现有些表单元素想刚打开页面就默认显示几个文字

    • name属性:

      • 当前控件的含义,即表单元素的名字提交之后可以告诉后端发送过去的数据是什么含义

      • 如果页面中的表单元素很多,可以区别不同的表单元素

    • 后端接收到数据的格式是:name的属性值 = value的属性值,如name=fxm;

    

单选框

  • 属性

    • name:对于单选框有分组功能,给不同的单选或复选框设置相同的name=“名称”来分组可以实现多选一功能

    • checked:默认选中,一打开页面,就要可以默认选中某个表单元素;或写成checked='checked'

    苹果
    橘子
    香蕉

复选框

  • 属性(同单选框)

    • name:设置同样的name以分为一组

    • checked:默认选中,一打开页面,就要可以默认选中某个表单元素;或写成checked='checked'

文件选择

  • 属性

    • multiple:多文件选择

按钮

  • 属性

    • value='按钮的名字'

  • 如果要实现按钮功能,需要配合form标签使用

CSS三角强化

前端学习笔记 - HTML+CSS_第22张图片

  • 直角三角形

    



    
  • 京东价格标签

    



    
¥1650 ¥5650

CSS 初始化

不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对HTML文本呈现的差异,照顾浏览器的兼容,我们需要对CSS 初始化

  • 简单理解: CSS初始化是指重设浏览器的样式。 (也称为CSS reset),每个网页都必须首先进行 CSS初始化,以保证兼容性。

  • 例子:京东CSS初始化代码

    image-20211012113434945

    • Unicode编码字体:把中文字体的名称用相应的Unicode编码来代替,这样就可以有效的避免浏览器解释CSS代码时候出现乱码的问题。 比如:黑体 \9ED1\4F53 宋体 \5B8B\4F53 微软雅黑 \5FAE\8F6F\96C5\9ED1

  • 京东css初始化

/* 把所有标签的内外边距清零 */

* {
    margin: 0;
    padding: 0
}


/* 斜体的文字不倾斜 */

em,
i {
    font-style: normal
}


/* 去掉li的小圆点 */

li {
    list-style: none
}

img {
    /* border:0;是为了照顾低版本浏览器如果图片外面包含了链接会有边框的问题 */
    border: 0;
    /* 取消图片底侧有空白缝隙的问题 */
    vertical-align: middle
}

button {
    /* 当鼠标经过按钮的时候鼠标变成小手 */
    cursor: pointer
}

a {
    color: #666;
    text-decoration: none
}

a:hover {
    color: #c81623
}

button,
input {
    /* \5B8B\4F53就是宋体的意思,这样浏览器兼容性比较好 */
    font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif
}

body {
    /* CSS3:抗锯齿形,让文字显示的更清晰 */
    -webkit-font-smoothing: antialiased;
    background-color: #fff;
    font: 12px/1.5 Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
    color: #666
}

.hide,
.none {
    display: none
}


/* 清除浮动 */

.clearfix:after {
    visibility: hidden;
    clear: both;
    display: block;
    content: ".";
    height: 0
}

.clearfix {
    *zoom: 1
}

CSS3新特性

滤镜filter

将模糊或颜色偏移等图形效果应用于元素

  • 语法:filter: 函数();

    • 例如: filter: blur(5px);

    • blur模糊处理 数值越大越模糊

calc 函数

在声明CSS属性值时执行一些计算

  • 语法:width: calc(100% - 80px);

    • 括号里面可以使用 + - * / 来进行计算。

过渡

  • 作用:让元素的样式慢慢的变化,常配合hover使用,增强网页交互体验

  • 语法:transition: 要过渡的属性 花费时间 运动曲线(可以省略) 延迟时间(可以省略);

    • 如transition: width 1s linar 1s;

  • 常见取值:

    • 过渡的属性:

      • all 所有能过渡的属性都过渡

      • 具体属性名如width 只有width能过渡

    • 过渡的时长:数字+s(秒)

  • 注意点:

    • 过渡需要默认状态 和 hover状态样式不同,才能有过渡效果

    • transition属性给需要过渡的元素本身

    • transition属性设置在不同状态中,效果不同的 ① 给默认状态设置,鼠标移入移出都有过渡效果 ② 给hover状态设置,鼠标移入有过渡效果,移出没有过渡效果

    • 多个属性参与,以逗号分隔,如果分开写,会后者覆盖前者

      • transition: width 1s , background-color 2s;

    • 过渡只能是值与值之间的过渡(display等不管用)

2D转换

转换(transform)是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果

  • 移动:translate

  • 旋转:rotate

  • 缩放:scale

translate - 移动

2D移动是2D转换里面的一种功能,可以改变元素在页面中的位置,类似定位

  • 语法

transform: translate(x,y); 
/* 或者分开写 */
transform: translateX(n);
transform: translateY(n);
  • 重点

    • 定义 2D 转换中的移动,沿着 X 和 Y 轴移动元素

    • translate最大的优点:不会影响到其他元素的位置

    • translate中的参数是百分比,是相对于自身元素的 translate:(50%,50%);

    • 对行内标签没有效果

    • 和相对定位效果类似,但是经常和绝对定位一起搭配使用

rotate - 旋转

2D旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转

  • 语法: transform:rotate(度数);

  • 注意:

    • rotate里面跟度数, 单位是deg 比如 rotate(45deg)

    • 角度为正,顺时针;负,逆时针

    • 默认旋转的中心点是元素的中心点

  • 制作一个鼠标放上去会旋转的圆形小头像





    
    
    
    Document
    



    


  • 利用旋转做小三角:伪元素盒子的两个边框旋转得到,一放上去还可以旋转





    
    
    
    Document
    



    

transform-origin 转换中心点

可以设置元素转换的中心点

  • 语法:transform-origin: x y;

  • 注意:

    • 参数可以百分比、像素或者是方位名词

    • 后面的参数 x 和 y 用空格隔开

    • x y 默认转换的中心点是元素的中心点 (50% 50%)

    • 还可以给x y 设置 像素 或者 方位名词 (top bottom left right center)





    
    
    
    Document
    



    
  • 案例:父盒子有一个一开始看不到的子盒子,鼠标经过父盒子时子盒子旋转上去





    
    
    
    Document
    



    

scale - 缩放

  • 语法:transform:scale(x,y);

  • 注意:

    • 里面写的是数字,不带单位,就是倍数的意思,可以是小数

    • 其中的x和y用逗号分隔

    • transform:scale(1,1) :宽和高都放大一倍,相对于没有放大

    • transform:scale(2,1) :宽度为原来的2倍,高度不变

    • transform:scale(2) :等比例缩放:只写一个参数,第二个参数则和第一个参数一样,相当于 scale(2,2)

    • transform:scale(0.5,0.5):缩小

    • sacle缩放最大的优势:可以设置转换中心点缩放,默认以中心点缩放的,而且不影响其他盒子

      • 可以使用transform-origin更改中心点

  • 案例

    • 产品展示:鼠标放上去图片放大

      
      
      
      
          
          
          
          Document
          
      
      
      
          
    • 分页按钮

    
    
    
    
        
        
        
        Document
        
    
    
    
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

2D转换综合写法

同时使用多个转换,其格式为:transform: translate() rotate() scale() ...

  • 注意:

    • 顺序会影转换的效果。(先旋转会改变坐标轴方向)

    • 当我们同时有位移和其他属性的时候,记得要将位移放到最前

动画

动画(animation)是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常 用来实现复杂的动画效果。相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。页面一刷新就开始动画

动画的基本使用

制作动画分为两步: 1.先定义动画 2.再使用(调用)动画

用keyframes 定义动画(类似定义类选择器)

@keyframes 动画名称 {
            0% {
                width: 100px;
            }
            100% {
                width: 200px;
            }
        }
  • 动画序列

    • 0% 是动画的开始100% 是动画的完成。这样的规则就是动画序列

    • 在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果

    • 动画是使元素从一种样式逐渐变化为另一种样式的效果,可以改变任意多的样式、任意多的次数

    • 用百分比来规定变化发生的时间,或用关键词 "from" 和 "to",等同于 0% 和 100%





    
    
    
    Document
    



    

元素使用动画

        div {
            width: 200px;
            height: 200px;
            background-color: aqua;
            margin: 100px auto;
            /* 调用动画 */
            animation-name: 动画名称;
            /* 持续时间 */
            animation-duration: 持续时间;
        }
    



    

动画常用属性

属性 描述
@keyframes 规定动画
animation 所有动画属性的简写属性,除了animation-play-state属性
animation-name 规定@keyframes动画的名称(必须的)
animation-duration 规定动画完成一个周期所花费的秒或毫秒(必须的):默认是0
animation-timing-function 规定动画的速度曲线:默认是“ease”;linear(匀速线型)
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:规定动画的速度曲线,默认是“ease”

描述
linear 动画从头到尾的速度是相同的。匀速
ease 默认。动画以低速开始,然后加快,在结束前变慢
ease-in 动画以低速开始
ease-out 动画以低速结束
ease-in-out 动画以低速开始和结束
steps() 指定了时间函数中的间隔数量(步长)(一共分几步来完成动画),有了steps就不要在写ease或linear了,可以实现类似打字机的效果




    
    
    
    Document
    



    
世纪佳缘我在这里等你

动画简写属性

animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态;

animation: myfirst 5s linear 2s infinite alternate;

  • 书写顺序:

    • ''持续时间''一定要在''何时开始''前

    • 默认的可以省略

  • 注意:

    • 简写属性里面不包含 animation-play-state

    • 暂停动画:animation-play-state: puased; 经常和鼠标经过等其他配合使用

    • 想要动画走回来 ,而不是直接跳回来:animation-direction : alternate

    • 盒子动画结束后,停在结束位置: animation-fill-mode : forwards

animation: move 2s linear alternate forwards;

热点图





    
    
    
    Document
    



    

奔跑的小熊





    
    
    
    Document
    



    

3D转换

  • 三维坐标系:立体空间是由3个轴共同组成的

    • x轴:水平向右 注意: x 右边是正值,左边是负值

    • y轴:垂直向下 注意: y 下面是正值,上面是负值

    • z轴:垂直屏幕 注意: 往外是正值,往里面是负值

    前端学习笔记 - HTML+CSS_第23张图片

translate3d - 3D移动

translform:translateZ(100px):仅仅是在Z轴上移动(注意:translateZ一般用px单位

transform:translate3d(x,y,z);: x、y、z 分别指要移动的轴的方向的距离(x,y,z都是不能省略的,如果没有的话就写0)

  • 因为z轴是垂直屏幕,由里指向外面,所以默认是看不到元素在z轴的方向上移动

perspective - 透视

perspective: d;(单位是px)(d越大,物体越小)

在2D平面产生近大远小视觉立体,但是只是效果二维的

  • 如果想要在网页产生3D效果需要透视(理解成3D物体投影在2D平面内)

  • 模拟人类的视觉位置,可认为安排一只眼睛去看

  • 透视我们也称为视距:视距就是人的眼睛到屏幕的距离

  • 距离视觉点越近的在电脑平面成像越大,越远成像越小

  • 透视的单位是像素

透视写在被观察元素的父盒子上面的

  • d:就是视距,视距就是一个距离人的眼睛到屏幕的距离。d越大,我们看到的物体越小

  • z:就是 z轴,物体距离屏幕的距离,z轴越大(正值) 我们看到的物体就越大

前端学习笔记 - HTML+CSS_第24张图片

translateZ

  • 写到要观察的盒子

  • 近大远小

  • 往外是正值

  • 往里是负值

rotate3d - 3D旋转

可以让元素在三维平面内沿着 x轴,y轴,z轴或者自定义轴进行旋转

  • 语法:

    • 如果有移动 或者其他样式,必须先写移动

    • transform:rotateX(45deg);:沿着x轴正方向旋转 45度

    • transform:rotateY(45deg); :沿着y轴正方向旋转 45deg

    • transform:rotateZ(45deg); :沿着Z轴正方向旋转 45deg

    • transform:rotate3d(x,y,z,deg);: 沿着自定义轴旋转 deg为角度(了解)

      • xyz是表示旋转轴的矢量,是标示你是否希望沿着该轴旋转,最后一个标示旋转的角度

      • transform:rotate3d(1,0,0,45deg) 就是沿着x轴旋转 45deg

      • transform:rotate3d(1,1,0,45deg) 就是沿着x轴和y轴的对角线旋转 45deg

  • 左手准则:

    • 左手的手拇指指向 x轴的正方向,其余手指的弯曲方向就是该元素沿着x轴旋转的方向

    • 左手的手拇指指向 y轴的正方向,其余手指的弯曲方向就是该元素沿着y轴旋转的方向(正值)

    • z轴:类似于2D,正值顺时针旋转

transform-style - 3D呈现

控制子元素是否开启三维立体环境

  • transform-style: flat 子元素不开启3d立体空间 (默认)

  • transform-style: preserve-3d; 子元素开启立体空间:子元素做了立体效果,保留

  • 代码写给父级,但是影响的是子盒子

  • 这个属性很重要,后面必用





    
    
    
    Document
    



    

两面翻转的盒子





    
    
    
    Document
    



    
你好
再见

3D导航栏

前端学习笔记 - HTML+CSS_第25张图片

前端学习笔记 - HTML+CSS_第26张图片





    
    
    
    Document
    



    
  • 你好
    再见
  • 你好
    再见
  • 你好
    再见
  • 你好
    再见
  • 你好
    再见
  • 你好
    再见

旋转木马

前端学习笔记 - HTML+CSS_第27张图片





    
    
    
    Document
    



    

浏览器私有前缀

浏览器私有前缀是为了兼容老版本的写法,比较新版本的浏览器无须添加

  • 私有前缀

    • -moz-:代表 firefox 浏览器私有属性

    • -ms-:代表 ie 浏览器私有属性

    • -webkit-:代表 safari、chrome 私有属性

    • -o-:代表 Opera 私有属性

  • 提倡的写法

-moz-border-radius: 10px;
-webkit-border-radius: 10px;
-o-border-radius: 10px;
border-radius: 10px;

项目前置认知

网页与网站

在互联网中,网站类似于是一本书,网页就是这本书的每一页

  • 网页:网站中的每一“页” 。例如:淘宝的主页、淘宝的登录页、淘宝的商品页等。

  • 网站:提供特定服务的一组网页集合。例如:百度、淘宝、京东、黑马程序员等;

骨架结构标签

文档类型声明标签

文档类型声明,作用就是告诉浏览器使用哪种HTML版本来显示网页。

 //这句代码的意思是: 当前页面采取的是 HTML5 版本来显示网页
  • 声明位于文档中的最前面的位置(第一行),处于 标签之前。

  • 不是一个 HTML 标签,它就是文档类型声明标签。

网页语言种类 lang

用来定义当前文档显示的语言。 1.en定义语言为英语 2.zh-CN定义语言为中文 简单来说,定义为en 就是英文网页, 定义为 zh-CN 就是中文网页 其实对于文档显示来说,定义成en的文档也可以显示中文,定义成zh-CN的文档也可以显示英文

  • 作用

    • 搜索引擎归类

    • 浏览器翻译

 
  

字符集(字符编码)charset

  • 字符集 (Character set)是多个字符的集合。以便计算机能够识别和存储各种文字。

  • 在标签内,可以通过 标签的 charset 属性来规定 HTML 文档应该使用哪种字符编码。

  • charset 常用的值有:GB2312 、BIG5 、GBK 和 UTF-8,其中 UTF-8 也被称为万国码,基本包含了全世界所有国家需要用到的字符

  • 注意:上面语法是必须要写的代码,保存和打开的字符编码需要统一设置,否则可能引起乱码的情况。一般情况下,统一使用“UTF-8”编码,尽量统一写成标准的 "UTF-8",不要写成 "utf8" 或 "UTF8"。


	

SEO三大标签

SEO(Search Engine Optimization):搜索引擎优化,是一种利用搜索引擎的规则提高网站在有关搜索引擎内自然排名的方式。

  • 作用:对网站进行深度的优化,从而帮助网站获取免费的流量,进而在搜索引擎上提升网站的排名,提高网站的知名度

  • 提升SEO的常见方法:

    • 竞价排名

    • 将网页制作成html后缀

    • 标签语义化(在合适的地方使用合适的标签)

  • 三大标签

    • title:网页标题标签

      • 网站名(产品名)- 网站的介绍

      • 如京东(JD.COM)-综合网购首选-正品低价、品质保障、配送及时、轻松购物!

    • description:网页描述标签

    • keywords:网页关键词标签

      • 6~8 个关键词,关键词之间用英文逗号隔开,采用 关键词1,关键词2 的形式

    京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
    
    

ico图标设置

  • 场景:显示在标签页标题左侧的小图标,习惯使用.ico格式的图标

    
  • png图片转换为ico图标:制作ico图标 | 在线ico图标转换工具 方便制作favicon.ico - 比特虫 - Bitbug.net

版心的介绍

  • 场景:把页面的主体内容约束在网页中间

  • 作用:让不同大小的屏幕都能看到页面的主体内容

  • 版心类名常用:container、wrapper、w 等

        .container {
            width: 1240px;
            margin: 0 auto;
        }

页面布局整体思路

1.必须确定页面的版心(可视区)(class = 'container'),我们测量可得知。 2.分析页面中的行模块,以及每个行模块中的列模块。其实页面布局第一准则. 3.一行中的列模块经常浮动布局, 先确定每个列的大小,之后确定列的位置. 页面布局第二准则 4.制作 HTML 结构。我们还是遵循,先有结构,后有样式的原则。结构永远最重要.

CSS书写顺序

不同的CSS书写顺序会影响浏览器的渲染性能,推荐前端工程师使用专业的书写顺序习惯

  1. 布局定位属性:display / position / float / clear / visibility / overflow(建议 display 第一个写,毕竟关系到模式)

  2. 自身属性(盒子模型+背景):width / height / margin / padding / border / background

  3. 文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word

  4. 其他属性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient …

  • 注意点:

    • 开发中推荐多用类 + 后代,但不是层级越多越好,一个选择器中的类选择器的个数推荐不要超过 3 个

.jdc {
	display: block;
	position: relative;
	float: left;
	width: 100px;
	height: 100px;
	margin: 0 10px;
	padding: 20px 0;
	font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
	color: #333;
	background: rgba(0,0,0,.5);
	border-radius: 10px;
}

项目结构搭建

文件和目录准备

  1. 新建项目文件夹 xtx-pc-client,在VScode中打开 • 在实际开发中,项目文件夹不建议使用中文 • 所有项目相关文件都保存在 xtx-pc-client 目录中

  2. 复制 favicon.ico 到 xtx-pc-client 目录 • 一般习惯将ico图标放在项目根目录

  3. 复制 imagesuploads 目录到 xtx-pc-client 目录中 • images :存放网站 固定使用 的图片素材,如:logo、样式修饰图片… 等 • uploads:存放网站 非固定使用 的图片素材,如:商品图片、宣传图片…等

  4. 新建 index.html根目录

  5. 新建 css 文件夹保存网站的样式,并新建以下CSS文件: • base.css:基础公共样式 • common.css:该网站中多个网页相同模块的重复样式,如:头部、底部 • index.css:首页样式

前端学习笔记 - HTML+CSS_第28张图片

前端学习笔记 - HTML+CSS_第29张图片

基础公共样式 base.css

  • 场景:一般项目开始前,首先会去除掉浏览器默认样式,设置为当前项目需要的初始化样式

  • 作用:防止不同浏览器中标签默认样式不同的影响,统一不同浏览器的默认显示效果,方便后续项目开发

index页面骨架

前端学习笔记 - HTML+CSS_第30张图片

网页header部分

image-20211008222540932

image-20211008222604827

image-20211008222618454

image-20211008222652358

  • 1 号是版心盒子container

  • 版心盒子里面包含 2 号盒子 logo

  • 版心盒子里面的 4 个盒子必须都是浮动

    • 3 号盒子 nav 导航栏:

      • 用ul>li*个数>a语义清晰,并且降低故意堆砌关键字容易被搜索引擎降权的风险

      • 给 li 加浮动, 因为 li 是块级元素, 需要一行显示

      • nav导航栏可以不给宽度,将来可以继续添加其余文字

      • 导航栏里面文字不一样多,所以最好给链接 a 左右padding撑开盒子,而不是指定宽度(或给li设置margin-right)

    • 4 号盒子 search 搜索框

    • 5 号盒子 user 个人信息

logo

  1. logo 里面首先放一个 h1 标签,目的是为了提权,告诉搜索引擎,这个地方很重要。

  2. h1 里面再放一个链接,可以返回首页的,把 logo 的背景图片给链接即可。

  3. 为了搜索引擎收录我们,链接里面要放文字(网站名称),但是文字不要显示出来。

  • 方法1:text-indent 移到盒子外面(text-indent: -9999px) ,然后 overflow:hidden ,淘宝的做法。

  • 方法2:直接给 font-size: 0; 就看不到文字了,京东的做法。

  1. 最后给链接一个 title 属性,这样鼠标放到 logo 上就可以看到提示文字了。


.xtx-main-nav .logo {
    width: 207px;
    height: 70px;
    /* background-color: red; */
}

.xtx-main-nav .logo a {
    /* 把行内元素a转为块元素,以便设置高度,且默认占满一行不用设宽度 */
    display: block;
    height: 70px;
    background: url(../images/logo.png);
    background-size: 100% 100%;
    /* 让“小兔鲜”文字存在但是不显示 */
    font-size: 0;
}

			

小兔鲜

导航 nav


.xtx-main-nav nav {
    margin-left: 40px;
}

.xtx-main-nav nav li {
    float: left;
    /* 把li标签的高度设置的高度和logo一样,然后垂直居中文本 */
    height: 70px;
    line-height: 70px;
    /* 间隔开 */
    margin-right: 48px;
    /* 第一个li与logo的间距,可以设置大格子的margin,也可以设置第一个li1的margin */
}

/* 普通文字与默认样式一样,不用设置; */
.xtx-main-nav nav a:hover {
    color: #27ba9b;
    border-bottom: 1px solid #27ba9b;
    /* 边框与内容之间有距离 */
    padding-bottom: 7px;
}

            

搜索框 search


.xtx-main-nav .search {
    width: 172px;
    height: 30px;
    /* background-color: orange; */
    /* 以logo的高为标准往下偏移 */
    margin-top: 24px;
    /* 最后的“服装”li有48的右margin,一共82,82-48=还差34 */
    margin-left: 34px;
    position: relative;
}

/* 用精灵图加搜索小图标,给search设置伪元素而不是input(因为伪元素需要在标签内部生成,input是单标签,不能包裹内容) */
.xtx-main-nav .search::before {
    content: '' ;
    position: absolute;
    /* 使用调试把放大镜挪到和搜索对齐 */
    top: 5px;
    left: 2px;
    width: 18px;
    height: 18px;
    /* background-color: red; */
    /* 伪元素要在上面,且与input是并列关系,双方要层叠在一起,所以使用子绝父相 */
    background: url(../images/sprites.png) -80px -70px;
}

.xtx-main-nav .search input {
    height: 30px;
    width: 172px;
    border-bottom: 2px solid #e7e7e7;
    /* 搜一搜与左边框有31的距离,空出伪元素图标的距离 */
    padding-left: 31px;
}

			

网页网站入口和banner部分

前端学习笔记 - HTML+CSS_第31张图片


.xtx-entry {
    /* 通栏不用宽度 */
    height: 500px;
    background-color: #f5f5f5;
}

.xtx-entry .container {
    height: 500px;
    /* background-color: pink; */
    position: relative;
}

.xtx-entry .container .category {
    width: 251px;
    height: 500px;
    background-color: black;
    opacity: 0.8;
    /* banner和category都是块,要定位层叠 */
    position: absolute;
    left: 0;
    top: 0;
}

.xtx-entry .category a {
    color: #fff;
    font-size: 14px;
    /* margin-right: 4px; */
}


.xtx-entry .category .big {
    font-size: 16px;
    margin-right: 15px;
}
.xtx-entry .category li {
    height: 50px;
    line-height: 50px;
    padding-left: 36px;
    /* 父相 */
    position: relative;
}

.xtx-entry .category li:hover {
    background-color: #27ba9b;
}

/* 精灵图小箭头 */
.xtx-entry .category li::after {
    content: '' ;
    width: 6px;
    height: 11px;
    background-color: red;
    /* 子绝 */
    position: absolute;
    top: 19px;
    right: 19px;
    background: url(../images/sprites.png) -80px -110px;
}

.xtx-entry .prev {
    width: 45px;
    height: 45px;
    /* 子绝,父亲是container */
    position: absolute;
    top: 228px;
    left: 260px;
    /* 变圆 */
    border-radius: 50%;
    /* 精灵图,可以设伪元素,但是麻烦,在这里直接给整个元素设置背景图片放入精灵图 */
    background: rgba(0, 0, 0, .2) url(../images/sprites.png) 13px -60px;
    /* 背景颜色没了,被覆盖了,可以把背景颜色放在下面,或者把背景颜色写在连写里面 */
    /* 精灵图不合适,可以在调试里调整位置 */
}

/* 右箭头与左箭头唯一不一样的是定位的值和精灵图的位置值 */
.xtx-entry .next {
    width: 45px;
    height: 45px;
    /* background-color: black; */
    /* opacity: 0.2; */
    /* 子绝,父亲是container */
    position: absolute;
    top: 228px;
    right: 10px;
    /* 变圆 */
    border-radius: 50%;
    /* 精灵图,可以设伪元素,但是麻烦,在这里直接给整个元素设置背景图片放入精灵图 */
    background: rgba(0, 0, 0, .2) url(../images/sprites.png) -22px -60px;
    }

.xtx-entry .indicator {
    /* 大概量一下 */
    height: 10px;
    width: 110px;
    /* 子绝,父亲是container */
    position: absolute;
    left: 680px;
    bottom: 31px;
    }

.xtx-entry .indicator li {
    float: left;
    width: 10px;
    height: 10px;
    margin-right: 15px;
    background-color: rgba(255, 255, 255, 0.43);
    border-radius: 50%;
}

.xtx-entry .indicator li:last-child {
    margin-right: 0;
}

/* 是li且是active */
.xtx-entry .indicator li.active {
    background-color: #fff;
}

网页footer部分

前端学习笔记 - HTML+CSS_第32张图片

  • footer 页面底部盒子通栏给一个高度和灰色的背景

  • footer 里面有一个大的版心

  • 版心里面包含 1 号盒子,mod_service 是服务模块,mod 是模块的意思

  • 版心里面包含 2 号盒子,mod_help 是帮助模块

  • 版心里面包含 3 号盒子,mod_copyright 是版权模块

服务模块 service


.mod_service {
	height: 79px;
	border-bottom: 1px solid #ccc;
}

.mod_service li {
	float: left;
	width: 240px;
	height: 79px;

}
.mod-service-icon {
	/*浮动的盒子 可以直接给大小的 不需要转换*/
	float: left;
	width: 50px;
	height: 50px;
	margin-left: 35px;
	background: url(../img/icons.png) no-repeat;
}
.mod_service_zheng {
	background-position: -253px -3px;	
}
.mod_service_tit {
	float: left;
	margin-left: 5px;
}
.mod_service_tit h5 {
	margin: 5px 0;
}
.mod_service_kuai {
	background-position: -255px -54px;
}
.mod_service_bao {
	background-position: -257px -105px;
}

            
  • 正品保障

    正品保障,提供发票

  • 正品保障

    正品保障,提供发票

  • 正品保障

    正品保障,提供发票

  • 正品保障

    正品保障,提供发票

  • 正品保障

    正品保障,提供发票

帮助模块 help


.mod_help {
	height: 187px;
	border-bottom: 1px solid #ccc;
}
.mod_help_item {
	float: left;
	width: 150px;
	padding: 20px 0 0 50px;
}
.mod_help_item dt {
	height: 25px;
	font-size: 16px;
}
.mod_help_item dd {
	height: 22px;
}
.mod_help_app dt,
.mod_help_app p {
	padding-left: 15px;
}
.mod_help_app img {
	margin: 7px 0;
}

            

版权模块 copyright

p里面是a span a span...


.mod_copyright {
	text-align: center;
}
.mod_copyright_links {
	margin: 20px 0 15px 0;
}
.mod_copyright_info {
	line-height: 18px;
}
            
        

你可能感兴趣的:(前端学习笔记,css,html,html5,前端,css3)