前端基础(HTML+CSS+JS)

前端基础

引言

前端技术栈

image-20250115091200102

关注的方面:美观,功能,安全,性能,无障碍,安全,体验

前端边界:jsnode electron,react Native ,web RTC,webGL ,WebASSEMBLY

HTML 速通

Hyper Text Markup Language

是 HTML 文档的文档类型声明(DOCTYPE Declaration),它的作用是告诉浏览器这个文档使用的是哪种 HTML 版本,以便正确地渲染内容。

DOM树

  • 标题<h>1-6

  • 列表

  1. first
  2. second
  3. third

  • first
  • second
  • third

start

first

second

third

  • 链接

    wangzhi

    超链接

    image-20250115093214842

  • 输入:

    <input placeholder="please enter your name">

    <input type = "range">

    <input type="number" min="1" max="10">

  • 标签

    apple banana

    展示了两个复选框(checkbox),它们可以独立选择。默认情况下,第一个复选框未选中,第二个复选框已选中(通过 checked 属性)。

    footbal basketball

    你的代码中展示了两个单选按钮(radio),它们属于同一个分组(通过 name="sport" 属性指定)。由于它们有相同的 name 属性,用户在选择时只能选中一个。

        key     clock     others   

    提供的代码展示了一个下拉选择框(<select>),包含三个选项:key、clock 和 others。以下是对你的代码的完整示例改进和优化。

Enter a name (you can select from the suggestions):

代码展示了一个 datalist 元素,它可以为输入框提供可选的建议列表。以下是如何将其与输入框结合使用的完整示例:这样就类似于搜索文框

标签:<blockquote>

  1. **标签**:

• 用于引用长段落的内容,并通过 cite 属性标明引用的来源。

天才并不是自生自长……

2. <cite> 标签

• 用于标记书名、文章标题等。

我最喜欢的一本书是小王子。

  1. <q> 标签

• 用于标记行内引用。

在第一章,我们讲过字符串是不可变量。

4. <code> 标签

• 用于标记代码片段。

const声明创建一个只读的常量。

5. <pre> 标签

• 保持内容的格式化输出(包括空格和换行)。


const add = (a, b) => a + b;
const multiply = (a, b) => a * b;

  • 内容划分

    image-20250115101542216

语义化

HTML语义化 是指在编写HTML代码时,通过使用具有明确含义的标签来结构化网页内容,使代码具有更好的可读性和可维护性,同时帮助浏览器、开发者、搜索引擎更准确地理解网页内容的结构和含义。

为什么需要HTML语义化?

1. 提升代码可读性

• 让开发者通过标签的名称就能直观地理解内容的用途。

• 方便团队协作和后续维护。

2. 增强SEO(搜索引擎优化)

• 语义化标签帮助搜索引擎更准确地抓取和理解网页内容,提高网页排名。

3. 改进无障碍支持

• 辅助技术(如屏幕阅读器)可以更好地解析网页内容,提升对残障用户的友好程度。

4. 更好的样式和行为分离

• 语义化标签可以更容易被CSS和JavaScript针对性地应用样式或功能。

image-20250115101840447

这样会更好 理解每一个部分是什么意思

CSS

CSS(Cascading Style Sheets,层叠样式表)是一种用来控制网页外观和布局的语言,它用于与HTML搭配,为网页添加样式,使其更加美观和易用。

  • CSS的作用

1. 控制样式

• 改变文字颜色、大小、字体等。

• 设置背景颜色、图片等。

2. 布局设计

• 通过盒模型、弹性布局(Flexbox)、网格布局(Grid)等,创建复杂的网页布局。

3. 响应式设计

• 利用媒体查询(Media Query)适配不同设备屏幕尺寸。

4. 行为分离

• 将内容(HTML)与样式(CSS)分离,提升网页的可维护性。

  • 组成

image-20250115102250443

在页面中使用css

  • 外链

    一般是将样式写在单独的.css文件中,然后在html页面中通过<link>标签使用

    主要是实现样式与html分离,代码结构清晰

    可以复用同一个css文件到多个html页面

    更易于维护

    下面是一个例子

    Hey!buddy!

    This is a paragraph styled with external CSS.

    h1 {
        color: blue;
        font-size: 24px;
        text-align: center;
    }
    ​
    p {
        color: gray;
        font-size: 16px;
        line-height: 1.5;
    }

  • 嵌入

    将CSS代码直接写在HTML文档的 <style> 标签中,通常位于 <head> 部分。

    • 优点:

      • 试用于页面特定的样式需求

      • 不需要额外css文件,方便快速测试

    • 缺点

      • 样式与html混合,降低可读性与可维护性

      • 无法复用到其他页面

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Embedded CSS</title>
    <style>    <!--这里就是实现的内嵌了-->
        h1 {
            color: green;
            font-size: 24px;
            text-align: center;
        }
​
        p {
            color: black;
            font-size: 14px;
            line-height: 1.5;
        }
    </style>
</head>
<body>
    <h1>Hello, World!</h1>
    <p>This is a paragraph styled with embedded CSS.</p>
</body>
</html>  
  • 内联

    将样式直接写在HTML元素的 style 属性中。

    优点:

    • 适用于单独调整某个元素的样式。

    • 立即生效,无需额外的CSS文件或样式块。

    缺点:

    • 破坏了内容和样式的分离。

    • 代码冗长,不适合大规模样式控制。

    • 无法复用,降低代码维护性。

Hello, World!

This is a paragraph styled with inline CSS.

所以我个人推荐用外联,因为外联确实更清楚

image-20250115103757371

工作布置。

css选择器

1. 通配选择器 (*)

描述:

通配选择器选中页面中的所有元素。

特点:

• 应用于全局样式初始化。

• 通配选择器的性能开销较大,尽量避免频繁使用。

* {
    margin: 0;
    padding: 0;
}

效果:

• 去掉所有HTML元素的默认外边距(margin)和内边距(padding)。

• 常用于CSS reset(重置样式表)或初始化。

场景:

• 在项目开始时统一重置浏览器的默认样式。

• 调试时快速查看未被特殊样式覆盖的默认效果。

2. 元素选择器

描述:

直接使用HTML标签名称选择页面中的所有该类型的元素。

特点:

• 简单直观。

• 适用于为某一类标签设置全局样式。

• 优先级低,容易被其他选择器覆盖。

p {
    color: blue;
    line-height: 1.5;
}

效果:

• 将所有段落(<p>)文字设置为蓝色,并增加行高。

场景:

• 为段落、标题、表格、按钮等标签设置通用样式。

• 如 body 元素中设置全局字体:

body {
    font-family: Arial, sans-serif;
}

3. 类选择器 (.)

描述:

通过类名(class)选择HTML元素。类选择器使用 . 前缀。

特点:

• 一个类名可以应用于多个元素。

• 支持组合多个类名,具有高灵活性。

• 优先级比元素选择器高,但低于ID选择器。

.box {
    background: yellow;
    border: 1px solid black;
    padding: 10px;
}

这是在css里面呈现的

现在下面这个是在html里面实现的

<div class="box">This is a box.</div>

4. ID选择器 (#)

描述:

通过ID选择器选中具有特定 id 属性的元素。ID选择器使用 # 前缀。

特点:

• 选择器唯一,应用于单个HTML元素。

• 优先级高于类选择器。

• 不推荐频繁使用,因为ID的唯一性限制了其复用性。

在css里面

#header {
    font-size: 20px;
    color: white;
    background-color: black;
    padding: 15px;
}

对应的html

<div id="header">This is the header.</div>

注意:

• 同一页面中,一个ID只能出现一次:

<div id="unique-id"></div> <!-- 合法 -->
<div id="unique-id"></div> <!-- 非法,重复ID -->

CSS属性选择器

<p><a href="#top">回到顶部</a></p>
<p><a href="a.jpg">查看图片</a></p>

第一个链接:<a href="#top"> 表示锚点链接,用于跳转到页面顶部。

第二个链接:<a href="a.jpg"> 表示超链接,用于查看图片。

CSS 部分

属性选择器 a[href^="#"]

a[href^="#"] {
    color: #f54767;
    background: 0 center/1em url(https://assets.codepen.io/59477/arrow-up.png) no-repeat;
    padding-left: 1.1em;
}

[href^="#"]:

• 选择器 ^= 用于选择 href 属性值以 # 开头的 <a> 元素。

• 在本例中,匹配的是 <a href="#top">。

1. color: #f54767;:

设置文字颜色为粉红色(#f54767)。

2. background: 0 center/1em url(...) no-repeat;:

• 设置背景图片为 arrow-up.png,背景图片居中对齐(center)。

• 使用 1em 设置背景图片的大小。

• 不重复显示背景图片(no-repeat)。

3. padding-left: 1.1em;:

为左侧添加1.1em的内边距,使文字与背景图片保持间距。

a[href$=".jpg"] {
    color: deepskyblue;
    background: 0 center/1em url(https://assets.codepen.io/59477/image3.png) no-repeat;
    padding-left: 1.2em;
}

• [href$=".jpg"]:

选择器 $= 用于选择 href 属性值以 .jpg 结尾的 <a> 元素

• 在本例中,匹配的是 <a href="a.jpg">。

样式解释

1. color: deepskyblue;:

设置文字颜色为天蓝色。

2. background: 0 center/1em url(...) no-repeat;:

• 设置背景图片为 image3.png,图片居中对齐。

• 使用 1em 设置背景图片的大小。

• 背景图片不重复显示。

3. padding-left: 1.2em;:

为左侧添加1.2em的内边距,使文字与背景图片保持间距。

组合选择器

image-20250115133544822

1)直接组合

语法:

A B

说明:

选择满足条件的 B 元素,前提是它是 A 元素的后代(可以是子元素,也可以是更深层的嵌套)。

示例:

nav a {
    color: blue;
}

解释:选择所有 nav 标签中的后代 a 标签(超链接),并将其文字颜色设置为蓝色。

2)后代组合

语法:

A > B

说明:

选择满足条件的 B 元素,前提是它是 A 元素的直接子元素。

示例:

section > p {
    color: red;
}

解释:选择所有 section 标签下直接嵌套的 p 标签,将其文字颜色设置为红色。

区别:

• 与直接组合(A B)相比,后代组合只能选中一级子元素,不会匹配更深层的嵌套。

3. 相邻兄弟选择器(A + B)

语法:

A + B

说明:

选择满足条件的 B 元素,前提是它紧接在 A 元素之后,且两者是同级兄弟。

示例:

h2 + p {
    font-size: 18px;
}

解释:选择所有紧接在 h2 标签后面的 p 标签,将其字体大小设置为18px。

4. 通用兄弟选择器(A ~ B)

语法:

A ~ B

说明:

选择满足条件的 B 元素,前提是它位于 A 元素之后,且两者是同级兄弟。

示例:\

h2 ~ p {
    color: gray;
}

解释:选择 h2 标签之后的所有 p 标签,将其文字颜色设置为灰色。

HTML

<nav>
    <a href="#home">Home</a>
    <a href="#about">About</a>
</nav>
<section>
    <p>First paragraph inside section.</p>
    <div>
        <p>Nested paragraph inside div.</p>
    </div>
</section>
<h2>Header 2</h2>
<p>Paragraph directly after h2.</p>
<p>Another paragraph after h2.</p>

css

/* 直接组合:选择 nav 下的所有 a 标签 */
nav a {
    color: blue;
}
​
/* 后代组合:选择 section 下的直接子元素 p */
section > p {
    color: red;
}
​
/* 相邻兄弟选择器:选择 h2 后紧邻的 p */
h2 + p {
    font-weight: bold;
}
​
/* 通用兄弟选择器:选择 h2 后的所有 p */
h2 ~ p {
    color: gray;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值