HTML与CSS

188 阅读7分钟

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(提交方式,GETPOST)。
  • 布局标签

    • <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 样式属性

  • 文本样式colorfont-sizefont-familytext-aligntext-decoration(如下划线)等。

  • 盒模型

    • 内容区:显示内容的实际区域。
    • 填充(Padding) :内容与边框之间的内边距。
    • 边框(Border) :内容的外框。
    • 外边距(Margin) :元素外部的间距。
    • 常用属性:marginpaddingborderbox-sizingcontent-boxborder-box)。
  • 布局

    • 定位(Position)

      • static:默认定位。
      • relative:相对定位。
      • absolute:绝对定位,相对于父元素。
      • fixed:固定定位,相对于视口。
    • 浮动(Float) :用于文本环绕和简单布局。

    • 弹性盒模型(Flexbox)

      • 通过 display: flex 设定容器的布局模型。
      • 属性包括 justify-contentalign-itemsflex-directionflex-wrap
    • 网格布局(Grid)

      • 通过 display: grid 设定网格容器布局。
      • 属性包括 grid-template-columnsgrid-template-rowsgap
  • 颜色

    • 可以使用十六进制、RGB、RGBA和HSL来指定颜色,如 #ff5733rgb(255, 87, 51)rgba(255, 87, 51, 0.5)
  • 背景background-colorbackground-imagebackground-positionbackground-size 用于设定背景颜色和图像。

  • 边框border-widthborder-styleborder-color,也可以使用 border-radius 实现圆角。

3. CSS 盒模型与布局

  • 标准盒模型:内容、填充、边框和外边距组成的结构,影响元素的尺寸和布局。

  • 弹性盒模型(Flexbox) :灵活的布局方式,支持水平和垂直方向的排布,可用于响应式设计。

    • display: flex 激活弹性布局。
    • 主轴和交叉轴:justify-content 控制主轴对齐,align-items 控制交叉轴对齐。
  • 网格布局(Grid) :更加复杂的二维布局,可以在页面上创建栅格系统,方便实现复杂布局。

    • display: grid 启用网格布局。
    • grid-template-columnsgrid-template-rows 设置网格行列。

4. CSS 伪类和伪元素

  • 伪类:针对元素的特定状态,如 :hover(鼠标悬停)、:focus(聚焦)和 :nth-child(n)(匹配第n个子元素)。
  • 伪元素:用于创建虚拟元素,常见的有 ::before::after,用于插入额外的内容。

5. 响应式设计

  • 媒体查询:通过 @media 可以根据屏幕宽度、分辨率等条件应用不同的CSS规则。

    css
    复制代码
    @media (max-width: 600px) {
        /* 针对小屏幕的样式 */
        body {
            background-color: lightblue;
        }
    }
    
  • 相对单位:使用 emrem、百分比、vw(视口宽度)和vh(视口高度)等相对单位,适应不同尺寸屏幕。


三、HTML 与 CSS 结合应用

  1. 页面结构设计:通过HTML标签创建页面结构,并使用CSS选择器对其进行样式化。
  2. 视觉效果:使用CSS的颜色、背景、边框、阴影等属性,使页面更美观。
  3. 动画与过渡:CSS提供了动画和过渡效果,可以增加页面的交互感。常见属性有 transitionanimation
  4. 响应式设计:通过媒体查询、Flexbox和Grid等技术,让页面适配不同尺寸的屏幕。

实战:个人简介页面

最终效果:

  1. 顶部导航栏包含个人名字和社交媒体链接。
  2. 主体区域展示个人简介,包括头像、名字、个人简介和一些技能标签。
  3. 页面在不同设备上自适应。

第一步:项目结构

新建一个项目文件夹,结构如下:

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;
    }
}

代码解释

  1. 全局样式

    • * { margin: 0; padding: 0; box-sizing: border-box; } 清除默认内外边距,设置 box-sizingborder-box,确保盒模型计算更符合直觉。
    • 设置全局字体、背景颜色和文字颜色。
  2. 顶部导航栏

    • .header 使用 flex 布局,将名字和社交链接横向排列。
    • .social-links 设置间距,添加 hover 效果,使链接在鼠标悬浮时下划线显示。
  3. 主体内容

    • .main-content 使用 flex 布局,居中展示个人信息。
    • .profile 添加了白色背景、阴影和圆角,使页面风格简洁现代。
  4. 技能标签

    • 使用 .skillsflex-wrap: wrap; 属性,让技能标签自动换行。
    • .skill 设置背景色、字体颜色和内边距,使标签看起来更具吸引力。
  5. 响应式设计

    • 通过 @media 查询设定最大宽度为600px的情况下的样式调整,包括:

      • .header 在小屏幕上垂直排列元素。
      • .main-content 调整内边距,缩小字体和标签尺寸。