HTML(超文本标记语言)和CSS(层叠样式表)是构建网页的两种基础技术。以下是关于HTML与CSS的知识点的详细说明:
一、HTML 知识点
1. HTML 基础
- HTML元素:HTML页面的基本构成单位,用标签(如
<div>、<p>、<h1>)包裹内容。元素可以嵌套,形成页面结构。 - 标签:HTML标签是由
<和>包裹的名称组成,例如<html>、<body>、<h1>。标签可以是成对的,也可以是单独的,如<img>。 - 属性:HTML标签可以使用属性添加额外信息,如
<a href="https://example.com">表示链接目标。
2. 常用HTML标签
-
文本标签:
<h1>到<h6>(标题)、<p>(段落)、<span>(内联文本)、<strong>(加粗)、<em>(斜体)。 -
链接与图片:
<a>:超链接标签,可通过href属性指定链接地址。<img>:图像标签,通过src属性指定图片路径,alt提供备用文本。
-
列表:
<ul>:无序列表,列表项由<li>组成。<ol>:有序列表,列表项也由<li>组成。
-
表格:
<table>、<tr>(行)、<th>(表头)、<td>(单元格)标签用于创建表格。 -
表单:
<form>表单用于收集用户输入,常见元素有<input>、<textarea>、<select>和<button>。- 属性:
action(数据提交位置),method(提交方式,GET或POST)。
- 属性:
-
布局标签:
<div>:块级元素,用于分隔内容。<span>:内联元素,用于小范围内容的样式应用。<header>、<footer>、<nav>、<section>、<article>等语义化标签增强了HTML的可读性。
3. HTML5 新特性
- 多媒体标签:
<video>和<audio>用于嵌入视频和音频。 - 语义化标签:增加了
<header>、<footer>、<article>、<section>等新标签,用于更清晰地描述内容结构。 - 表单增强:如
<input type="email">、<input type="date">等增加了输入数据验证和用户体验。 - 离线存储:
<localStorage>和<sessionStorage>用于在客户端保存数据。 - Canvas:
<canvas>标签用于绘制图形,如图表和游戏图形。
二、CSS 知识点
1. CSS 基础
-
选择器:用于选中页面元素,常见选择器包括:
- 类型选择器:如
p,匹配所有<p>元素。 - 类选择器:如
.class,匹配所有class="class"的元素。 - ID选择器:如
#id,匹配id="id"的元素。 - 属性选择器:如
[type="text"],匹配type="text"的元素。 - 伪类选择器:如
:hover,选择鼠标悬停状态的元素。
- 类型选择器:如
-
CSS规则结构:包含选择器、属性和值。结构为:
css 复制代码 selector { property: value; }
2. CSS 样式属性
-
文本样式:
color、font-size、font-family、text-align、text-decoration(如下划线)等。 -
盒模型:
- 内容区:显示内容的实际区域。
- 填充(Padding) :内容与边框之间的内边距。
- 边框(Border) :内容的外框。
- 外边距(Margin) :元素外部的间距。
- 常用属性:
margin、padding、border、box-sizing(content-box和border-box)。
-
布局:
-
定位(Position) :
static:默认定位。relative:相对定位。absolute:绝对定位,相对于父元素。fixed:固定定位,相对于视口。
-
浮动(Float) :用于文本环绕和简单布局。
-
弹性盒模型(Flexbox) :
- 通过
display: flex设定容器的布局模型。 - 属性包括
justify-content、align-items、flex-direction、flex-wrap。
- 通过
-
网格布局(Grid) :
- 通过
display: grid设定网格容器布局。 - 属性包括
grid-template-columns、grid-template-rows、gap。
- 通过
-
-
颜色:
- 可以使用十六进制、RGB、RGBA和HSL来指定颜色,如
#ff5733、rgb(255, 87, 51)、rgba(255, 87, 51, 0.5)。
- 可以使用十六进制、RGB、RGBA和HSL来指定颜色,如
-
背景:
background-color、background-image、background-position、background-size用于设定背景颜色和图像。 -
边框:
border-width、border-style、border-color,也可以使用border-radius实现圆角。
3. CSS 盒模型与布局
-
标准盒模型:内容、填充、边框和外边距组成的结构,影响元素的尺寸和布局。
-
弹性盒模型(Flexbox) :灵活的布局方式,支持水平和垂直方向的排布,可用于响应式设计。
display: flex激活弹性布局。- 主轴和交叉轴:
justify-content控制主轴对齐,align-items控制交叉轴对齐。
-
网格布局(Grid) :更加复杂的二维布局,可以在页面上创建栅格系统,方便实现复杂布局。
display: grid启用网格布局。grid-template-columns、grid-template-rows设置网格行列。
4. CSS 伪类和伪元素
- 伪类:针对元素的特定状态,如
:hover(鼠标悬停)、:focus(聚焦)和:nth-child(n)(匹配第n个子元素)。 - 伪元素:用于创建虚拟元素,常见的有
::before和::after,用于插入额外的内容。
5. 响应式设计
-
媒体查询:通过
@media可以根据屏幕宽度、分辨率等条件应用不同的CSS规则。css 复制代码 @media (max-width: 600px) { /* 针对小屏幕的样式 */ body { background-color: lightblue; } } -
相对单位:使用
em、rem、百分比、vw(视口宽度)和vh(视口高度)等相对单位,适应不同尺寸屏幕。
三、HTML 与 CSS 结合应用
- 页面结构设计:通过HTML标签创建页面结构,并使用CSS选择器对其进行样式化。
- 视觉效果:使用CSS的颜色、背景、边框、阴影等属性,使页面更美观。
- 动画与过渡:CSS提供了动画和过渡效果,可以增加页面的交互感。常见属性有
transition和animation。 - 响应式设计:通过媒体查询、Flexbox和Grid等技术,让页面适配不同尺寸的屏幕。
实战:个人简介页面
最终效果:
- 顶部导航栏包含个人名字和社交媒体链接。
- 主体区域展示个人简介,包括头像、名字、个人简介和一些技能标签。
- 页面在不同设备上自适应。
第一步:项目结构
新建一个项目文件夹,结构如下:
perl
复制代码
my-profile/
├── index.html
└── style.css
第二步:编写 HTML
在 index.html 文件中,定义页面结构。
html
复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>个人简介</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 顶部导航栏 -->
<header class="header">
<h1 class="name">John Doe</h1>
<nav class="social-links">
<a href="#" target="_blank">GitHub</a>
<a href="#" target="_blank">LinkedIn</a>
<a href="#" target="_blank">Twitter</a>
</nav>
</header>
<!-- 主体内容 -->
<main class="main-content">
<div class="profile">
<img src="https://via.placeholder.com/150" alt="Profile Picture" class="profile-pic">
<div class="bio">
<h2>Hello, I'm John</h2>
<p>I'm a front-end developer specializing in React and Vue.js. I enjoy creating visually appealing and highly interactive web experiences.</p>
<div class="skills">
<span class="skill">HTML</span>
<span class="skill">CSS</span>
<span class="skill">JavaScript</span>
<span class="skill">React</span>
<span class="skill">Vue</span>
</div>
</div>
</div>
</main>
</body>
</html>
第三步:编写 CSS
在 style.css 文件中编写样式,确保页面美观并在不同屏幕上自适应。
css
复制代码
/* 全局设置 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
background-color: #f0f2f5;
color: #333;
line-height: 1.6;
}
/* 顶部导航栏 */
.header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
background-color: #4a90e2;
color: #fff;
}
.name {
font-size: 24px;
font-weight: bold;
}
.social-links a {
margin-left: 15px;
color: #fff;
text-decoration: none;
font-size: 18px;
}
.social-links a:hover {
text-decoration: underline;
}
/* 主体内容 */
.main-content {
display: flex;
justify-content: center;
align-items: center;
padding: 50px;
}
.profile {
background-color: #fff;
padding: 30px;
border-radius: 10px;
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);
max-width: 600px;
text-align: center;
}
.profile-pic {
width: 150px;
height: 150px;
border-radius: 50%;
margin-bottom: 20px;
}
.bio h2 {
font-size: 28px;
color: #4a90e2;
margin-bottom: 15px;
}
.bio p {
font-size: 18px;
margin-bottom: 20px;
}
/* 技能标签 */
.skills {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 10px;
}
.skill {
background-color: #4a90e2;
color: #fff;
padding: 8px 15px;
border-radius: 5px;
font-size: 14px;
}
/* 响应式设计 */
@media (max-width: 600px) {
.header {
flex-direction: column;
text-align: center;
}
.social-links a {
margin-left: 0;
margin-top: 5px;
}
.main-content {
padding: 20px;
}
.bio h2 {
font-size: 24px;
}
.bio p {
font-size: 16px;
}
.skills {
gap: 5px;
}
.skill {
padding: 6px 10px;
font-size: 12px;
}
}
代码解释
-
全局样式:
* { margin: 0; padding: 0; box-sizing: border-box; }清除默认内外边距,设置box-sizing为border-box,确保盒模型计算更符合直觉。- 设置全局字体、背景颜色和文字颜色。
-
顶部导航栏:
.header使用flex布局,将名字和社交链接横向排列。.social-links设置间距,添加hover效果,使链接在鼠标悬浮时下划线显示。
-
主体内容:
.main-content使用flex布局,居中展示个人信息。.profile添加了白色背景、阴影和圆角,使页面风格简洁现代。
-
技能标签:
- 使用
.skills的flex-wrap: wrap;属性,让技能标签自动换行。 .skill设置背景色、字体颜色和内边距,使标签看起来更具吸引力。
- 使用
-
响应式设计:
-
通过
@media查询设定最大宽度为600px的情况下的样式调整,包括:.header在小屏幕上垂直排列元素。.main-content调整内边距,缩小字体和标签尺寸。
-