加载头像

前端开发


HTML

HTML 超文本标记语言

  • 超文本:链接
  • 标记:标签,带尖括号的文本<>

标签结构

  • 标签要成对出现,中间包裹内容
  • <>里面放英文字母(标签名)
  • 结束标签比开始标签多 /
  • 标签分类:双标签和单标签

HTML骨架

  • html:整个网页
  • head:网页头部,用来存放给浏览器看的信息,例如 CSS
  • title:网页标签栏标题
  • body:网页主体,用来存放给用户看的信息,例如图片、文字

快速生成骨架:!+回车

注释

在 VS Code 中,添加 / 删除注释的快捷键:Ctrl + /

标题标签

<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<h6>六级标题</h6>

注意:

  1. 一级标题在一个网页中只能用一次,用来放新闻标题或网页的 logo
  2. 独占一行(换行)

段落标签

<p>段落</p>

特点:

  1. 独占一行
  2. 段落之间存在间隙

换行和水平线

  • 换行:br
  • 水平线:hr

文本格式化标签

| 强调 | 省略 | 作用 | | ------ | ---- | ------ | | strong | b | 加粗 | | em | i | 倾向 | | ins | u | 下划线 | | del | s | 删除线 |

图像标签

作用:在网页中插入图片

<img  src="图片的 URL">

图片位置可以使用 ./ 选择本地图片(Linux系统的)

src用于指定图像的位置和名称,是必须属性。

图像属性

| 属性 | 作用 | 说明 | | ------ | -------- | ------------------------ | | alt | 替换文本 | 图片无法显示时显示的文字 | | title | 提示文本 | 鼠标悬停时显示的文字 | | width | 图片宽度 | 值为数字,无单位 | | height | 图片高度 | 值为数字,无单位 |

属性语法:

  • 属性名="属性值"
  • 属性写在尖括号里面,标签名后面,标签名和属性之间用空格隔开,不区分先后顺序
<img  src="图片的 URL" alt="替换文本" title="提示文本">

**注意:**游览器缩放图片是等比例缩放

路径(同Linux)

绝对路径:以根目录为起点

相对路径:以当前目录为起点

. :表示当前目录 如:cd ./Desktopcd Desktop 一样表示切换到当前目录下的Desktop目录中

.. :表示上一级目录 如:cd .. 切换回上一级目录 cd ../.. 表示切换到上两级目录

/ :表示进入某个文件夹里面

注意:

  1. Windows 默认是 \ ,其他系统是 /,建议统一写为 /
  2. 特殊的绝对路径 → 文件的在线网址,应用场景:网页底部友情链接

超链接标签

作用:点击跳转到其他页面

<a href="网站或者本地文件">说明的文字如:跳转到yzf522</a>

<!– 新窗口跳转页面 –>
<a href="网站或者本地文件" target="_blank">说明的文字如:跳转到yzf522</a>

<!– 开发初期,不知道超链接的跳转地址,href属性值写#,表示空链接,不会跳转 –>
<a href="#">空链接</a>

超链接默认是在当前窗口跳转页面,添加 target="_blank" 实现新窗口打开页面。

拓展:开发初期,不确定跳转地址,则 href 属性值写为 #,表示空链接,页面不会跳转,在当前页面刷新一次。

音频

<audio src="音频的 URL" controls loop autoplay></audio>

| 属性 | 作用 | 特殊说明 | | -------- | ------------ | ------------------------ | | src | 音频的 URL | 支持mp3,Ogg,Wav | | controls | 显示控制面板 | | | loop | 循环播放 | | | autoplay | 自动播放 | 游览器一般会禁用自动播放 |

注意:

在 HTML5 里面,如果属性名和属性值完全一样,可以简写为一个单词,所以controls这些属性名是布尔函数

视频

<video src="视频的 URL"></video>

| 属性 | 作用 | 特殊说明 | | -------- | ------------ | ------------------------------ | | src | 音频的 URL | 支持mp4,Ogg,WebM | | controls | 显示控制面板 | | | loop | 循环播放 | | | autoplay | 自动播放 | 游览器支持在静音状态下自动播放 | | muted | 静音播放 | |

注意:

想要自动播放,必须有 muted 属性

列表

列表分类:无序列表、有序列表、定义列表

无序列表:

<ul>
  <li>第一项</li>
  <li>第二项</li>
  <li>第三项</li>
  ……
</ul>

有序列表:

<ol>
  <li>第一项</li>
  <li>第二项</li>
  <li>第三项</li>
  ……
</ol>

定义列表:

<dl>
  <dt>列表标题</dt>
  <dd>列表描述 / 详情</dd>
   ……
</dl>

注意:

  1. 父级里面只能包含对应的子级
  2. 子级里面可以是任何内容

表格

| 标签名 | 说明 | | ---------------------- | ------------------------------------------------------------ | | table | 表格 | | tr | 行 | | th(内容) | 表头单元格(分类名) | | td(内容) | 内容单元格 | | thead (表格结构标签) | 表示表格头部内容(不显示) | | tbody (表格结构标签) | 表示表格内容主体区域(不显示) | | tfoot (表格结构标签) | 表示表格底部汇总信息区域(不显示) | | rowspan=“数字”(合并) | 跨行合并,数字表示合并个数,保留最上单元格,删除合并的,父级为内容标签 | | colspan=“数字”(合并) | 跨列合并,数字表示合并个数,保留最左单元格,删除合并的,父级为内容标签 |

<table border="1">
  <thead>
  	<tr>
    	<th>姓名</th>
    	<th>语文</th>
    	<th>数学</th>
    	<th>总分</th>
  	</tr>
   </thead>
  <tbody>  
  	<tr>
    	<td>张三</td>
    	<td>99</td>
    	<td>100</td>
   		<td>199</td>
  	</tr>
    </tbody>
  <tfoot> 
  	<tr>
    	<td>总结</td>
    	<td colspan="3">全市第一</td>
  	</tr>
   </tfoot>
</table>

注意:

  1. 不能跨表格结构标签合并单元格(thead、tbody、tfoot)
  2. 在网页中,表格默认没有边框线,使用 border 属性可以为表格添加边框线(数字表示像素大小)

表单

作用:收集用户信息

使用场景:

  • 登录页面
  • 注册页面
  • 搜索区域

input 标签

input 标签 type 属性值不同,则功能不同

<input type="..." >

| type属性值 | 说明 | | ---------- | --------------------------- | | text | 文本框(单行) | | password | 密码框(以·的方式显示) | | radio | 单选框 | | checkbox | 多选框 | | file | 上传文件 |

input 标签占位文本

占位文本:提示信息,文本框和密码框都可以使用。

<input type="..." placeholder="提示信息">

单选框

| 属性名 | 作用 | 特殊说明 | | ------- | -------------------------------------------- | ---------- | | name | 组名(相同时一组只能选择一个,实现单选功能) | 组名自定义 | | checked | 默认选择 | 布尔类型 |

性别:
<input type="radio" name="xx" checked>男
<input type="radio" name="xx">女

上传文件

默认情况下,文件上传表单控件只能上传一个文件,添加 multiple 属性可以实现文件多选功能

<input type="file" multiple>

多选框

多选框也叫复选框,默认选中:checked

<input type="checkbox" checked> 我同意

下拉菜单

默认显示第一项,selected 属性实现默认选中功能

城市:
<select>
  <option>北京</option>
  <option>上海</option>
  <option>广州</option>
  <option>深圳</option>
  <option selected>武汉</option>
</select>

文本域(多行)

<textarea>默认提示文字</textarea>

注意:

  • 实际开发中,使用 CSS 设置 文本域的尺寸
  • 实际开发中,一般禁用右下角的拖拽功能,防止影响其他标签

label 标签

作用:网页中,某个标签的说明文本

经验:用 label 标签绑定文字和表单控件的关系,增大表单控件的点击范围

写法一

label 标签只包裹内容,不包裹表单控件

设置 label 标签的 for 属性值 和表单控件的 id 属性值相同

<input type="radio" id="man">  <label for="man">男</label>

写法二:使用 label 标签包裹文字和表单控件,不需要id属性

<label>   <input type="radio"> 女    </label>

**注意:**支持 label 标签增大点击范围的表单控件:文本框、密码框、上传文件、单选框、多选框、下拉菜单、文本域等等。

按钮

<button type="">按钮</button>

| type属性值 | 说明 | | ---------- | ------------------------ | | submit | 提交到后台 | | reset | 重置 | | button | 普通按钮,一般配合JS使用 |

布局标签

  • div:独占一行
  • span:不换行
<div>div 标签,独占一行</div>
<span>span 标签,不换行</span>

| 标签名 | 语义 | | ------- | ---------- | | header | 网页头部 | | nav | 网页导航 | | footer | 网页底部 | | aside | 网页侧边栏 | | section | 网页区块 | | article | 网页文章 |

字符实体

| 显示 | 实体名称 | | ---- | -------- | | 空格 | & nbsp; | | < | & lt | | > | & gt |

CSS

书写位置

  • 内部样式表:title 标签下方添加 style 双标签,style 标签里面书写 CSS 代码
  • 外部样式表:CSS 代码写在单独的 CSS 文件中(.css),在 HTML 使用 link 标签引入
  • 行内样式:写在标签的 style 属性值里,配合 JavaScript 使用
<style>
  /* 选择器 { 属性名:属性值; } */
  p { color: red;}
</style>

属性名和属性值成对出现 → 键值对

<link rel="stylesheet" href=" css路径 ">
<div style="color: red;">这是 div 标签</div>

基础选择器

标签选择器

使用标签名作为选择器 → 选中同名标签设置相同的样式(标签选择器无法差异化同名标签的显示效果)

<style>
  p {color: red;}
</style>

类选择器

步骤:

  • 定义类选择器 →在style中定义 .类名{ 属性 }
  • 使用类选择器 → 标签添加 **class="类名"
<style>
  /* 定义类选择器 */
  .red { color: red;}
  .size{font-size:50px}  
</style>

<!– 使用类选择器 –>
<div class="red">这是 div 标签</div>
<div class="red size">div 标签</div>

**注意:**一个标签可以使用多个类名

id选择器

id 选择器一般配合 JavaScript 使用,很少用来设置 CSS 样式

步骤:

  • 定义 id 选择器 → #id名
  • 使用 id 选择器 → 标签添加 id= "id名"
<style>
  /* 定义 id 选择器 */
  #red { color: red;}
</style>

<!– 使用 id 选择器 –>
<div id="red">这是 div 标签</div>

**注意:**和类选择器不同,同一个 id 选择器在一个页面只能使用一次

通配符选择器

*****,不需要调用,浏览器自动查找页面所有标签,设置相同的样式

* { color: red;}

使用:通配符选择器可以用于清除标签的默认样式,例如:标签默认的外边距、内边距

盒子

作为选择器属性,在标签中使用

| 属性名 | 作用 | | ---------------- | ------ | | width | 宽度 | | height | 高度 | | background-color | 背景色 |

.orange {
      width: 200px;
      height: 200px;
      background-color: orange;
}

文字控制属性

字体大小

  • 属性名:font-size
  • 属性值:文字尺寸,PC 端网页最常用的单位 px
p { font-size: 30px;}

字体加粗

属性名:font-weight

属性值:

  • 400正常
  • 700加粗
font-weight:400  不加粗
font-weight:700  加粗

字体倾斜

属性名:font-style

属性值

  • 正常(不倾斜):normal
  • 倾斜:italic
font-style:normal 

行高

属性名:line-height

属性值

  • 数字 + px
  • 数字(当前标签font-size属性值的倍数)
line-height: 30px;


/* 当前标签字体大小为16px */
line-height: 2;

单行文字垂直居中

垂直居中技巧:行高属性值等于盒子高度属性值

注意:该技巧适用于单行文字垂直居中效果

div {
  height: 100px;
  background-color: skyblue;

/* 注意:只能是单行文字垂直居中 */
line-height: 100px;

字体族

属性名:font-family

属性值:字体名

font-family: 楷体;

font-family属性值可以书写多个字体名,各个字体名用逗号隔开,执行顺序是从左向右依次查找

font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;

字体font复合属性

使用场景:设置网页文字公共样式,全部统一样式

一个属性对应多个值的写法,各个属性值之间用空格隔开

font: 是否倾斜 是否加粗 字号/行高 字体(必须按顺序书写)字号和字体值必须书写

div {font: italic 700 30px/2 楷体;}

文本缩进

属性名:text-indent

属性值:

  • 数字 + px
  • 数字 + em(推荐:1em = 当前标签的字号大小)2em=缩进2个字
p {text-indent: 2em;}

文本和图片水平对齐方式

作用:控制内容水平对齐方式

属性名:text-align

属性值:left(默认),center,right

**注意:**操作对象是文字和图片内容,将内容在标签里面操作,不影响标签位置

<style>
  div {text-align: center;}
</style>

<div>
  <img src="./images/1.jpg" alt="">
</div>

文本修饰线

属性名: text-decoration

属性值:

| 属性值 | 效果 | | ------------ | ------ | | none | 无 | | underline | 下划线 | | line-through | 删除线 | | overline | 上划线 |

文字颜色

属性名: color

属性值:

| 表示方式 | 属性值 | 说明 | 使用场景 | | -------------- | ------------------ | ------------------------------------- | ---------- | | 颜色关键字 | 颜色英文单词 | | 学习测试 | | rgb表示法 | rgb(r,g,b) | 分别表示红绿蓝(0~155) | 了解 | | rgba表示法 | rgba(r,g,b,a) | a表示透明度 | 实现透明色 | | 十六进制表示法 | #RRGGBB | 两个一组,对应红绿蓝,0-f,可简写#RGB | 设计稿 |

**提示:**只要属性值为颜色,都可以使用上述四种颜色表示方式

复合选择器

定义:由两个或多个基础选择器,通过不同的方式组合而成

后代选择器(祖宗关系)

父选择器里面的所有子选择器**(包括套娃)**

选择器写法:父选择器 子选择器 { CSS 属性},父子选择器之间用空格隔开

<style>
  div span {color: red;}
</style>

<span> span 标签</span>
<div>
  <span> 这是 div 的儿子 span </span >
<p> <span> 这是 div 的孙子 span </span > </p>
</div>

子代选择器(父子关系)

选中某选择器的子代选择器(最近的子级)。

选择器写法:父选择器 > 子选择器 { CSS 属性},父子选择器之间用 > 隔开

<style>
  div > span {color: red;}
</style>

<div>
  <span>这是 div 里面的 span</span>
  <p>
    <span> 这是 div 里面的 p 里面的 span </span>
  </p>
</div>

并集选择器(同辈关系)

选择器写法:选择器1, 选择器2, …, 选择器N { CSS 属性},选择器之间用 **,**隔开

<style>
  div,p,span {color: red;}
</style>

<div> div 标签</div>
<p>p 标签</p>
<span>span 标签</span>

交集选择器 (婚姻关系)

交集选择器:选中同时满足多个条件的选择器。

选择器写法:选择器1选择器2 { CSS 属性},选择器之间连写,没有任何符号。

<style>
  p.box {color: red;}
</style>

<p class="box">p 标签,使用了类选择器 box</p>
<p>p 标签</p>
<div class="box">div 标签,使用了类选择器 box</div>

**注意:**如果交集选择器中有标签选择器,标签选择器必须书写在最前面

伪类选择器 (情人关系)

伪类选择器:伪类表示元素状态,选中元素的某个状态设置样式。

鼠标悬停状态:选择器:hover { CSS 属性 }

<style>
   a:hover {color: red;}
  .box:hover {color: green;}
</style>

<a href="#">a 标签</a>
<div class="box">div 标签</div>

超链接伪类

| 选择器状态 | 作用 | | ---------- | -------------- | | link | 访问前 | | visited | 访问后 | | hover | 鼠标悬停 | | active | 单击时(激活) |

**注意:**如果要给超链接设置以上四个状态,需要按 LVHA 的顺序书写

**经验:**工作中,只设置悬停状态和一个超链接默认样式

选择器的继承性

子级默认继承父级的文字控制属性(如果子级自己有文字属性,则不会继承已有的属性)

一般会在body的css中写共用的文字属性

<style>
body{......}
</style>

选择器的层叠性

特点:

  • 相同的属性会覆盖:后面的 CSS 属性覆盖前面的 CSS 属性
  • 不同的属性会叠加:不同的 CSS 属性都生效
<style>
  div {color: red;font-weight: 700;}
  div {color: green;font-size: 30px;}
</style>

<div>div 标签</div>

**注意:**选择器类型相同则遵循层叠性,否则按选择器优先级判断

优先级

优先级:也叫权重,当一个标签使用了多种选择器时,基于不同种类的选择器的匹配规则

<style>
  div {color: red  !important;}
  .box {color: green;}
</style>

<div class="box">div 标签</div>

**基础选择器:**通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important

(选中标签的范围越大,优先级越低)

复合选择器:需要权重叠加计算,通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important,

  • 从左向右依次比较选个数,同一级个数多的优先级高,如果个数相同,则向后比较
  • !important 权重最高
  • 继承权重最低

Emmet 写法

Emmet写法:代码的简写方式,输入缩写 VS Code 会自动生成对应的代码。

CSS:大多数简写方式为属性单词的首字母

背景属性

网页中,使用背景图实现装饰性的图片效果

  • 属性名:background-image(bgi)
  • 属性值:url(背景图 URL)
div {
  width: 400px;
  height: 400px;

  background-image: url(./images/1.png);
}

平铺方式

属性名:background-repeat(bgr)

| 属性值 | 效果 | | --------- | ------------ | | no-repeat | 不平铺 | | repeat | 平铺(默认) | | repeat-x | 水平平铺 | | repeat-y | 垂直平铺 |

背景图位置

属性名:background-position(bgp)

属性值:水平方向位置 垂直方向位置

  • 关键字(可以组合)

    | 关键字 | 位置 | | ------ | ---- | | left | 左 | | right | 右 | | center | 居中 | | top | 顶 | | bottom | 底 |

  • 坐标(x y)
    • x:正数向右;负数向左
    • y:正数向下;负数向上
{
  width: 400px;
  height: 400px;
  background-color: pink;
  background-image: url(./images/1.png);
  background-repeat: no-repeat;

  background-position: center bottom;
  background-position: 50px -100px;
background-position: 50px center;
}

注意:

  • 关键字取值方式写法,可以颠倒取值顺序
  • 可以只写一个关键字,另一个方向默认为居中;数字只写一个值表示水平方向,垂直方向为居中

背景图缩放

作用:设置背景图大小

属性名:background-size(bgz)

常用属性值:

  • 关键字

    cover:等比例缩放背景图片以完全覆盖背景区,可能背景图片显示不全

    contain:等比例缩放背景图片以完全装入背景区,可能背景区部分空白

  • 百分比:根据盒子尺寸计算图片大小

  • 数字 + 单位(例如:px)

div {
  width: 500px;
  height: 400px;
  background-color: pink;
  background-image: url(./images/1.png);
  background-repeat: no-repeat;
  
  background-size: cover;
  background-size: contain;
}

**提示:**工作中,图片比例与盒子比例相同,使用 cover 或 contain 缩放背景图效果相同

背景图固定

作用:背景不会随着元素的内容滚动。

属性名:background-attachment(bga)

属性值:fixed

body {
  background-image: url(./images/bg.jpg);
  background-repeat: no-repeat;
  background-attachment: fixed;
}

背景复合属性

属性名:background(bg)

属性值:背景色 背景图 背景图平铺方式 背景图位置/背景图缩放 背景图固定(空格隔开各个属性值,不区分向后顺序

div {
  width: 400px;
  height: 400px;

  background: pink url(./images/1.png) no-repeat right center/cover;
}

标签显示模式

块级元素(div)

  • 独占一行
  • 宽度默认是父级的100%
  • 添加宽高属性生效

行内元素(span)

  • 一行可以显示多个
  • 设置宽高属性不生效
  • 宽高尺寸由内容撑开

行内块元素 (图片)

  • 一行可以显示多个
  • 设置宽高属性生效
  • 宽高尺寸也可以由内容撑开

转换标签显示模式

属性:display

属性值:

  • block(块级)
  • inline-block(行内块)
  • inline(行内)

结构伪类选择器

| 选择器 | 说明 | | --------------------------- | ------------------------- | | A选择器:first-cuild{ } | 查找第一个A选择器的元素 | | A选择器:last-cuild{ } | 查找最后一个A选择器的元素 | | A选择器:nth-cuild(N){ } | 查找N个A选择器的元素 |

**注意:**N可以是公式,如 2n(偶数),5n(5的倍数),公式中的n取值从 0 开始

li:first-child { background-color: green;}

伪元素选择器

作用:创建虚拟元素(伪元素),用来摆放装饰性的内容

| 选择器 | 说明 | | ---------------- | ---------------------------- | | 选择器::before{} | 在选择器最前面添加一个伪元素 | | 选择器::fater{} | 在选择器最后面添加一个伪元素 |

注意:

  • 必须设置 content: ””属性,用来 设置伪元素的内容,如果没有内容,则引号留空即可
  • 伪元素默认是行内显示模式
  • 权重和标签选择器相同
div::before {
  content: "before 伪元素";
}

盒子模型

  • 内容区域 – width & height
  • 内边距 – padding(出现在内容与盒子边缘之间)
  • 边框线 – border
  • 外边距 – margin(出现在盒子外面)
div {
  margin: 50px;
  border: 5px solid brown;
  padding: 20px;
  width: 200px;
  height: 200px;
  background-color: pink;
}

边框线

四个方向

属性名:border(bd)

属性值:边框线粗细 线条样式 颜色(不区分顺序)

| 属性值 | 线条样式 | | ------ | -------- | | soild | 实线 | | dashed | 虚线 | | dotted | 点线 |

div {
  border: 5px solid brown;
  width: 200px;
  height: 200px;
  background-color: pink;
}

单方向边框线

属性名:border-方位名词(bd+方位名词首字母,例如,bdl)

属性值:边框线粗细 线条样式 颜色(不区分顺序)

div {
  border-top: 2px solid red;
  border-right: 3px dashed green;
  border-bottom: 4px dotted blue;
  border-left: 5px solid orange;
  width: 200px;
  height: 200px;
  background-color: pink;
}

内边距

作用:设置 内容 与 盒子边缘 之间的距离。

  • 属性名:padding / padding-方位名词
div {
  /* 四个方向 内边距相同 */
  padding: 30px;
  /* 单独设置一个方向内边距 */
  padding-top: 10px;
  padding-right: 20px;
  padding-bottom: 40px;
  padding-left: 80px;
  width: 200px;
  height: 200px;
  background-color: pink;
}

**提示:**添加 padding 会撑大盒子

padding 多值写法:

 padding: 30px 20xp 30xp 40xp;  上 右 下 左 
 padding: 30px 20xp  40xp;      上  左右 下
 padding: 30px 40xp;            上下 左右

技巧:从开始顺时针赋值,当前方向没有数值则与对面取值相同

尺寸计算

默认情况:盒子尺寸 = 内容尺寸 + 边框线尺寸 + 内边距尺寸

结论:给盒子加边框线尺寸和内边距尺寸会撑大盒子

解决:

  • 手动做减法,盒子的宽高减掉边框线尺寸和内边距尺寸
  • 內减模式:添加属性 box-sizing: border-box

外边距

作用:拉开两个盒子之间的距离

属性名:margin

提示:与 padding 属性值写法、含义相同

版心居中

左右 margin 值 为 auto(盒子要有宽度)

左右 margin 值 为 auto(盒子要有宽度)

清除默认样式

清除标签默认的样式,比如:默认的内外边距

/* 清除默认内外边距 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/* 清除列表项目符号 */
li {
  list-style: none;
}

元素溢出(内容超出盒子大小)

作用:控制溢出元素的内容的显示方式。

属性名:overflow

属性值:

| 属性值 | 效果 | | ------ | ------------------------------ | | hidden | 隐藏超出的内容 | | scroll | 右边显示滚动条(无论是否超出) | | auto | 右边显示滚动条,(超出才有) |

外边距问题

合并现象

场景:垂直排列的兄弟盒子,上下 margin合并

现象:取两个 margin 中的较大值生效

.one {
  margin-bottom: 50px;
}
.two {
  margin-top: 20px;
}

外边距塌陷

场景:父子级的标签,子级的添加 上外边距 会产生塌陷问题

现象:导致父级一起向下移动,不是在父级的基础上形成外边距

解决方法:

  • 取消外边距子级,父级设置内边距
  • 父级设置 overflow: hidden,元素溢出,会查找盒子的位置尺寸,修正
  • 父级设置 border-top,设置上边框线,会查找盒子的位置尺寸,修正

行内元素 – 内外边距问题

场景:行内元素添加 margin 和 padding,无法改变元素垂直位置

解决方法:给行内元素添加 line-height(行高) 可以改变垂直位置

span {
  /* margin 和 padding 属性,无法改变垂直位置 */
  margin: 50px;
  padding: 20px;
  /* 行高可以改变垂直位置 */
  line-height: 100px;
}

外边框为圆角

属性名:border-radius

属性值:数字+px / 百分比

提示:属性值是圆角半径

多值写法:从左上角开始顺时针赋值,当前方向没有数值则与对面取值相同

**正圆形状(头像):**给正方形盒子设置圆角属性值为 宽高的一半 / 50%

img {
  width: 200px;
  height: 200px;
  
  border-radius: 100px;
  border-radius: 50%;
}

**胶囊形状(按钮):**给长方形盒子设置圆角属性值为 盒子高度的一半

div {
  width: 200px;
  height: 80px;
  background-color: orange;
  border-radius: 40px;
}

盒子阴影(拓展)

作用:给元素设置阴影效果

属性名:box-shadow

属性值:X 轴偏移量 Y 轴偏移量 模糊半径 扩散半径 颜色 内外阴影

注意:

  • X 轴偏移量 和 Y 轴偏移量 必须书写
  • 默认是外阴影,内阴影需要添加 inset
div {
  width: 200px;
  height: 80px;
  background-color: orange;
  box-shadow: 2px 5px 10px 0 rgba(0, 0, 0, 0.5) inset;
}

浮动

基本使用

作用:让块元素水平排列。

属性名:float

属性值

  • left:左对齐
  • right:右对齐
<style>
  /* 特点:顶对齐;具备行内块显示模式特点;浮动的盒子会脱标 */
  .one {
    width: 100px;
    height: 100px;
    background-color: brown;

float: left;

}

.two {
width: 200px;
height: 200px;
background-color: orange;

/* float: left; */

float: right;

}
</style>

<div class="one">one</div>
<div class="two">two</div>

特点:

  • 浮动后的盒子顶对齐
  • 浮动后的盒子具备行内块特点
  • 浮动后的盒子脱标,**不占用标准流的位置

清除浮动

场景:浮动元素会脱标,如果父级没有高度子级实体无法撑开父级高度,下面的块会上来(可能导致页面布局错乱)

解决方法:清除浮动(清除浮动带来的影响)

<style>
  .top {
    margin: 10px auto;
    width: 1200px;
    /* height: 300px; */
    background-color: pink;
  }

.left {
float: left;
width: 200px;
height: 300px;
background-color: skyblue;
}

.right {
float: right;
width: 950px;
height: 300px;
background-color: orange;
}

.bottom {
height: 100px;
background-color: brown;
}

</style>

<div class="top">
<div class="left"></div>
<div class="right"></div>
</div>
<div class="bottom"></div>

额外标签法

父元素内容的最后添加一个块级元素,设置 CSS 属性 clear: both

<style>
.clearfix {
  clear: both;
}
</style>

<div class="father">
<div class="left"></div>
<div class="right"></div>
<div class="clearfix"></div>
</div>

单伪元素法

  1. 准备 after 伪元素
.clearfix::after {
  content: "";
  display: block;
  clear: both;
}

2.父级使用 clearfix 类

<div class="father clearfix"></div>

双伪元素法

  1. 准备 after 和 before 伪元素
/* before 解决外边距塌陷问题 */
/* 双伪元素法 */
.clearfix::before,
.clearfix::after {
  content: "";
  display: table;
}

/* after 清除浮动 */
.clearfix::after {
clear: both;
}

  1. 父级使用 clearfix 类
<div class="father clearfix"></div>

overfow法

在父级的css添加 overflow: hidden;

.father {
  margin: 10px auto;
  width: 1200px;
  /* height: 300px; */
  background-color: pink;

overflow: hidden;
}

Flex布局

Flex 布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力。

Flex 模型不会产生浮动布局中脱标现象,布局网页更简单、更灵活。

设置方式:给元素设置 display: flex,子元素可以自动挤压或拉伸

组成部分:

  • 弹性容器
  • 弹性盒子
  • 主轴:默认在水平方向
  • 侧轴 / 交叉轴:默认在垂直方向

主轴对齐方式

属性名:justify-content

| 属性值 | 效果效果(主轴为X时起点为上) | | ------------- | ----------------------------------- | | flex-start | 默认值,从左到右排序 | | flex-end | 从右到左排序 | | center | 居中 | | space-between | 左右无空间,中间隔开 ,A1A1A | | space-around | 空间在盒子两边,1A11A11A1 | | space-evenly | 空间在盒子两边,盒子间隔相同,1A1A1 |

侧轴对齐方式

属性名:

  • align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式(给弹性容器设置)
  • align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子设置)

| 属性值 | 效果 | | ---------- | ------------------------------------------------ | | stretch | 盒子拉伸铺满容器,(如果盒子设置了高、宽则无效) | | center | 盒子在侧轴中间居中排序 | | flex-start | 盒子在容器起点开始排序 | | flex-end | 盒子在容器终点开始排序 |

**注意:**不是盒子竖着排,是横排在容器Y轴的位置

修改主轴方向(盒子竖排)

主轴默认在水平方向,侧轴默认在垂直方向

属性名:flex-direction

| 属性值 | 效果 | | ---------------- | ---------------------- | | row | 水平方向,从左到右 | | clolumn | 垂直方向,从上到下 | | row-reverse | 水平方向,从右到左 | | clolumn--reverse | 垂直方向,从下到上 |

弹性伸缩比

作用:控制弹性盒子的主轴方向的尺寸。

属性名:flex

属性值:整数数字,表示占用父级剩余尺寸的份数

(如果只设置了一份,则占用全部,如果A为1,B为2,则B为全部的2/3)

弹性盒子换行

弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示。

属性名:flex-wrap

属性值

  • wrap:换行
  • nowrap:不换行(默认)

行内对齐方式

属性名:align-content

| 属性值 | 效果(主轴为X时起点为上) | | ------------- | ----------------------------------- | | flex-start | 默认值,从上到下排序 | | flex-end | 从从下到上排序 | | center | 居中 | | space-between | 上下无空间,中间隔开 ,A1A1A | | space-around | 空间在盒子两边,1A11A11A1 | | space-evenly | 空间在盒子两边,盒子间隔相同,1A1A1 |

定位

作用:灵活的改变盒子在网页中的位置

属性名:position

属性值:

  1. position(相对定位):

    • 不脱标,占用自己原来位置
    • 显示模式特点保持不变
    • 设置边偏移则相对自己原来位置移动
  2. absolute(绝对定位):

    使用场景:子级绝对定位,父级相对定位(子绝父相)父级移动,子级跟着移动

    • 脱标,不占位
    • 显示模式具备行内块特点
    • 设置边偏移则相对最近的已经定位的祖先元素改变位置
    • 如果祖先元素都未定位,则相对浏览器可视区改变位置

边偏移:设置盒子的位置

  • left
  • right
  • top
  • bottom
.father {
  position: relative;
}

.father span {
position: absolute;
top: 0;
right: 0;
}

定位水平垂直都居中(弹窗)

实现步骤:

  1. 绝对定位
  2. 水平、垂直边偏移为 50%
  3. 子级向左、上移动自身尺寸的一半
  • 左、上的外边距为 –尺寸的一半
  • transform: translate(-50%, -50%)
img {
  position: absolute;
  left: 50%;
  top: 50%;

/* margin-left: -265px;
margin-top: -127px; */

/* 方便: 50% 就是自己宽高的一半 */
transform: translate(-50%, -50%);
}

固定定位(导航)

position: fixed

场景:元素的位置在网页滚动时不会改变

特点:

  • 脱标,不占位
  • 显示模式具备行内块特点
  • 设置边偏移相对浏览器窗口改变位置
div {
  position: fixed;
  top: 0;
  right: 0;

width: 500px;
}

堆叠层级z-index

默认效果:按照标签书写顺序,后来者居上

作用:设置定位元素的层级顺序,改变定位元素的显示顺序

属性名:z-index

属性值:整数数字(默认值为0,取值越大,层级越高)

.box1 {
  background-color: pink;
  /* 取值是整数,默认是0,取值越大显示顺序越靠上 */
  z-index: 1;
}

.box2 {
background-color: skyblue;
left: 100px;
top: 100px;

z-index: 2;
}

CSS精灵

CSS 精灵,也叫 CSS Sprites,是一种网页图片应用处理方式。把网页中一些背景图片整合到一张图片文件中,再background-position 精确的定位出背景图片的位置。

优点:减少服务器被请求次数,减轻服务器的压力,提高页面加载速度

实现步骤:

  1. 创建盒子,盒子尺寸小图尺寸相同
  2. 设置盒子背景图为精灵图
  3. 添加 background-position 属性,改变背景图位置

​ 3.1 使用 PxCook 测量小图片左上角坐标

​ 3.2 取负数坐标为 background-position 属性值(向左上移动图片位置)

字体图标

字体图标:展示的是图标,本质是字体

作用:在网页中添加简单的、颜色单一的小图标

优点

  • 灵活性:灵活地修改样式,例如:尺寸、颜色等
  • 轻量级:体积小、渲染快、降低服务器请求次数
  • 兼容性:几乎兼容所有主流浏览器
  • 使用方便:先下载再使用

iconfont 图标库:https://www.iconfont.cn/

登录 → 素材库 → 官方图标库 → 进入图标库 → 选图标,加入购物车 → 购物车,添加至项目,确定 → 下载至本地

使用字体

    1. 引入字体样式表(iconfont.css)
     <link rel="stylesheet" href=".css">
    
  1. 标签使用字体图标类名

  • iconfont:字体图标基本样式(字体名,字体大小等等)
  • icon-xxx:图标对应的类名(可在css编辑)
<span class="iconfont icon-xxx"></span>

垂直对齐方式

在父级块内,图片和文字的对齐会出错,需要设置

属性名:vertical-align

| 属性值 | 效果 | | -------- | ------------------ | | baseline | 基准线对齐(默认) | | top | 顶部对齐 | | middle | 居中对齐 | | bottom | 底部对齐 |

或者

把照片设置为块

display:block

过渡

作用:可以为一个元素在不同状态之间切换的时候添加过渡效果

属性名:transition(复合属性)

属性值:过渡的属性 花费时间 (s)

提示:

  • 过渡的属性可以是具体的 CSS 属性
  • 也可以为 all(两个状态属性值不同的所有属性,都产生过渡效果)
  • transition 设置给元素的css本身
img {
  width: 200px;
  height: 200px;
  transition: all 1s;
}

img:hover {
  width: 500px;
  height: 500px;
}

透明度opacity

作用:设置整个元素的透明度(包含背景和内容)

属性名:opacity

属性值:0 – 1

  • 0:完全透明(元素不可见)
  • 1:不透明
  • 0-1之间小数:半透明

光标类型cursor

作用:鼠标悬停在元素上时指针显示样式

属性名:cursor

| 属性值 | 效果 | | ------- | ------------------------ | | default | 默认值,箭头 | | pointer | 小手,提示可以点击 | | text | 工字形,提示可以选择文字 | | move | +,提示可以移动 |

项目流程

项目目录

xtx-pc文件夹

  • images 文件夹:存放固定使用的图片素材,例如:logo、样式修饰图等等
  • uploads 文件夹:存放非固定使用的图片素材,例如:商品图、宣传图需要上传的图片
  • iconfont 文件夹:字体图标素材
  • css 文件夹:存放 CSS 文件(link 标签引入)
    • base.css:基础公共样式 ,例如:清除默认样式,设置网页基本样式
    • common.css:各个网页相同模块的重复样式,例如:头部、底部
    • index.css:首页 CSS 样式
  • index.html:首页 HTML 文件

清除默认样式

/* 基础公共样式:清除默认样式 + 设置通用样式 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* 去除列表前面的圆圈 */
li {
list-style: none;
}

/* 设置文字默认样式 */
body {
font: 14px/1.5 "Microsoft Yahei", "Hiragino Sans GB", "Heiti SC", "WenQuanYi Micro Hei", sans-serif;
color: #333;
}
a {
color: #333;
text-decoration: none;
}

引入样式表

<link rel="stylesheet" href="./iconfont/iconfont.css">  	/*导入字体图标 */
<link rel="stylesheet" href="./css/base.css">			 	/*清除默认样式 */
<link rel="stylesheet" href="./css/common.css">				/*导入其他css*/
<link rel="stylesheet" href="./css/index.css">				

网页头部SEO三大标签

SEO:搜索引擎优化,提升网站百度搜索排名

提升SEO的常见方法:

  1. 花钱排名
  2. 将网页制作成html后缀
  3. 标签语义化(在合适的地方使用合适的标签)
  4. ……

网页头部 SEO 标签:

  • title:网页标题标签
  • description:网页描述
  • keywords:网页关键词
<!-- meta:desc -->
<meta name="description" content="小兔鲜儿官网,致力于打造全球最大的食品、生鲜电商购物平台。">
<!-- meta:kw -->
<meta name="keywords" content="小兔鲜儿,食品,生鲜,服装,家电,电商,购物">
<title>小兔鲜儿-新鲜、惠民、快捷!</title>

Favicon图标

Favicon 图标:网页图标,出现在浏览器标题栏,增加网站辨识度。

图标:favicon.ico,一般存放到网站的根目录里面

<!-- link:favicon 回车自动生成 -->
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">

版心

写在common.css

/* 版心 */
.wrapper {
  margin: 0 auto;
  width: 1240px;
}

快捷导航

-布局

<!-- 快捷导航 -->
<div class="shortcut">
  <div class="wrapper">1</div>
</div>
/* 快捷导航 */
.shortcut {
  height: 52px;
  background-color: #333;
}

.shortcut .wrapper {
display: flex;
justify-content: flex-end;
height: 52px;
background-color: pink;
}

-内容

<ul>
  <li><a href="#" class="login">请先登录</a></li>
  <li><a href="#">免费注册</a></li>
  <li><a href="#">我的订单</a></li>
  <li><a href="#">会员中心</a></li>
  <li><a href="#">帮助中心</a></li>
  <li><a href="#">在线客服</a></li>
  <li><a href="#"><span class="iconfont icon-mobile-phone"></span>手机版</a></li>
</ul>
.shortcut ul {
  display: flex;
  line-height: 52px;
}

.shortcut li a {
padding: 0 15px;
border-right: 1px solid #999;
font-size: 14px;
color: #fff;
}

.shortcut li:last-child a {
border-right: 0;
}

.shortcut li .iconfont {
margin-right: 4px;
vertical-align: middle;
}

.shortcut li .login {
color: #5EB69C;
}

头部-布局

HTML结构

<!-- 头部 -->
<div class="header wrapper">
  <!-- logo -->
  <div class="logo">logo</div>
  <!-- 导航 -->
  <div class="nav">导航</div>
  <!-- 搜索 -->
  <div class="search">搜索</div>
  <!-- 购物车 -->
  <div class="cart">购物车</div>
</div>

CSS样式

/* 头部 */
.header {
  display: flex;
  margin-top: 22px;
  margin-bottom: 22px;
  height: 88px;
  background-color: pink;
}

头部-logo

HTML结构

<!-- logo -->
<div class="logo">
  <h1><a href="#">小兔鲜儿</a></h1>
</div>

CSS样式

/* logo */
.logo {
  margin-right: 40px;
  width: 200px;
  height: 88px;
  /* background-color: skyblue; */
}

.logo a {
display: block;
width: 200px;
height: 88px;
background-image: url(../images/logo.png);
font-size: 0;
}

头部-导航

HTML结构

<ul>
  <li><a href="#">首页</a></li>
  <li><a href="#">生鲜</a></li>
  <li><a href="#">美食</a></li>
  <li><a href="#">餐厨</a></li>
  <li><a href="#">电器</a></li>
  <li><a href="#">居家</a></li>
  <li><a href="#">洗护</a></li>
  <li><a href="#">孕婴</a></li>
  <li><a href="#">服装</a></li>
</ul>

CSS样式

/* 导航 */
.nav {
  margin-top: 33px;
  margin-right: 28px;
}

.nav ul {
display: flex;
}

.nav li {
margin-right: 47px;
}

.nav li a {
padding-bottom: 10px;
/* background-color: skyblue; */
}

.nav li a:hover {
border-bottom: 2px solid #5EB69C;
color: #5EB69C;
}

搜索

HTML结构

<!-- 搜索 -->
<div class="search">
  <span class="iconfont icon-search"></span>
  <input type="text" placeholder="搜一搜">
</div>

CSS样式

/* 搜索 */
.search {
  display: flex;
  margin-top: 33px;
  margin-right: 45px;
  width: 170px;
  height: 34px;
  border-bottom: 2px solid #F4F4F4;
}

.search .iconfont {
margin-right: 8px;
font-size: 18px;
color: #ccc;
}

.search input {
/* 浏览器优先生效 input 标签的默认宽度,所以 flex:1 不生效 /
/
解决办法:重置 input 默认宽度 → width:0 */
flex: 1;
width: 0;
}

.search input::placeholder {
font-size: 16px;
color: #ccc;
}

购物车

HTML结构

<!-- 购物车 -->
<div class="cart">
  <span class="iconfont icon-cart-full"></span>
  <i>2</i>
</div>

CSS样式

/* 购物车 */
.cart {
  position: relative;
  margin-top: 32px;
}

.cart .iconfont {
font-size: 24px;
}

.cart i {
position: absolute;
top: 1px;
/* right 定位右对齐:如果文字多了,向左撑开,可能盖住其他的内容 /
/
right: 1px; /
/
left 定位左对齐:文字多了,向右撑开 */
left: 15px;
padding: 0 6px;
height: 15px;
background-color: #E26237;
border-radius: 8px;
font-size: 14px;
color: #FFFEFE;
line-height: 15px;
}

底部-布局

HTML结构

<!-- 底部 -->
<div class="footer">
  <div class="wrapper">
    <!-- 服务 -->
    <div class="service">服务</div>
    <!-- 帮助中心 -->
    <div class="help">帮助中心</div>
    <!-- 版权 -->
    <div class="copyright">版权</div>
  </div>
</div>

CSS样式

/* 底部 */
.footer {
  height: 580px;
  background-color: #F5F5F5;
}

/* 服务 */
.service {
padding: 60px 0;
height: 178px;
border-bottom: 1px solid #E8E8E8;
}

/* 帮助中心 */
.help {
display: flex;
justify-content: space-between;
padding-top: 60px;
height: 300px;
background-color: pink;
}

底部-服务区域

HTML结构

<ul>
  <li>
    <h5></h5>
    <p>价格亲民</p>
  </li>
  <li>
    <h5></h5>
    <p>物流快捷</p>
  </li>
  <li>
    <h5></h5>
    <p>品质新鲜</p>
  </li>
  <li>
    <h5></h5>
    <p>售后无忧</p>
  </li>
</ul>

CSS结构

.service ul {
  display: flex;
  justify-content: space-evenly;
}

.service li {
display: flex;
width: 190px;
height: 58px;
/* background-color: pink; */
}

.service li h5 {
margin-right: 20px;
width: 58px;
height: 58px;
background-image: url(../images/sprite.png);
}

.service li p {
font-size: 28px;
line-height: 58px;
}

.service li:nth-child(2) h5 {
background-position: 0 -58px;
}
.service li:nth-child(3) h5 {
background-position: 0 -116px;
}
.service li:nth-child(4) h5 {
background-position: 0 -174px;
}

底部-帮助中心-左侧

HTML结构

<div class="left">
  <dl>
    <dt>购物指南</dt>
    <dd><a href="#">购物流程</a></dd>
    <dd><a href="#">支付方式</a></dd>
    <dd><a href="#">售后规则</a></dd>
  </dl>
  <dl>
    <dt>配送方式</dt>
    <dd><a href="#">配送运费</a></dd>
    <dd><a href="#">配送范围</a></dd>
    <dd><a href="#">配送时间</a></dd>
  </dl>
  <dl>
    <dt>关于我们</dt>
    <dd><a href="#">平台规则</a></dd>
    <dd><a href="#">联系我们</a></dd>
    <dd><a href="#">问题反馈</a></dd>
  </dl>
  <dl>
    <dt>售后服务</dt>
    <dd><a href="#">售后政策</a></dd>
    <dd><a href="#">退款说明</a></dd>
    <dd><a href="#">取消订单</a></dd>
  </dl>
  <dl>
    <dt>服务热线</dt>
    <dd><a href="#">在线客服<span class="iconfont icon-customer-service"></span></a></dd>
    <dd><a href="#">客服电话 400-0000-000</a></dd>
    <dd><a href="#">工作时间 周一至周日 8:00-18:00</a></dd>
  </dl>
</div>

CSS样式

/* left */
.help .left {
  display: flex;
}

.help .left dl {
margin-right: 84px;
}

.help .left dl:last-child {
margin-right: 0;
}

.help .left dt {
margin-bottom: 30px;
font-size: 18px;
}

.help .left dd {
margin-bottom: 10px;
}

.help .left a {
color: #969696;
}

.help .left .iconfont {
color: #5EB69C;
}

底部-帮助中心-右侧

HTML结构

<div class="right">
  <ul>
    <li>
      <div class="pic"><img src="./images/wechat.png" alt=""></div>
      <p>微信公众号</p>
    </li>
    <li>
      <div class="pic"><img src="./images/app.png" alt=""></div>
      <p>APP下载二维码</p>
    </li>
  </ul>
</div>

CSS样式

/* right */
.help .right ul {
  display: flex;
}

.help .right li:first-child {
margin-right: 55px;
}

.help .right .pic {
margin-bottom: 10px;
width: 120px;
height: 120px;
}

.help .right p {
color: #969696;
text-align: center;
}

底部-版权

HTML结构

<p>
  <a href="#">关于我们</a>|
  <a href="#">帮助中心</a>|
  <a href="#">售后服务</a>|
  <a href="#">配送与验收</a>|
  <a href="#">商务合作</a>|
  <a href="#">搜索推荐</a>|
  <a href="#">友情链接</a>
</p>
<p>CopyRight © 小兔鲜</p>

CSS样式

/* 版权 */
.copyright {
  text-align: center;
}

.copyright p {
margin-bottom: 10px;
color: #A1A1A1;
}

.copyright p a {


评论
TwikooWaline
✅ 你无需删除空行,直接评论以获取最佳展示效果
引用到评论
随便逛逛博客分类文章标签
复制地址关闭热评深色模式轉為繁體