HTML和CSS基础(一)

前言

HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言。它由各种标签组成,这些标签定义了网页的结构和内容。HTML的早期形式诞生于1989年,由CERN的物理学家Tim Berners-Lee发明,最初用于在科学家之间共享研究成果。1996年:HTML 4.0发布,引入了样式表、框架、表单等新特性,这个版本被广泛使用了很多年。这个HTML4.0就是我们经常说的HTML语言,而2014年,HTML5发布,这是自HTML 4.01以来最大的一次更新。HTML5引入了新的结构元素、表单控件、媒体播放功能以及对图形和交互性的支持。这个就是我们常说的H5。HTML不是编程语言,而是一种用于创建网页内容的标记语言。用通俗的语言来讲,HTML是一个可以被浏览器程序渲染展示界面的语言。这里还有一个概念就是CSS,CSS(层叠样式表,Cascading Style Sheets)是一种用于描述HTML文档外观和布局的语言。

为了方便大家理解,我们可以将HTML语言比作一个房屋,HTML里的标签元素就是房屋里的房间、大门、窗户、水管、电线、煤气管道。而CSS语言就是将这个毛坯房装修漂亮的工具,你可以设置房间墙壁的颜色、是否挂壁画、屋顶吊顶。HTML和CSS组合起来就可以构造一个非常漂亮网页了。

接下来我们先整体介绍一下html语言中有哪些常用的标签元素以及CSS中有哪些常用的属性以及这些属性如何与常用标签的匹配。

一、HTML常用的标签元素

1.1标签元素分类

按照html标签元素的特性,我们将它们分为三类:块级元素(Block-level Elements)、行内元素(Inline Elements)、混合元素(可作为块级或行内)。
下面一张表格对比这三者的区别,以及每个类型的代表标签元素。

特性/元素类型块级元素行内元素混合元素(如 <input>)
常见标签示例<div>, <p>,<ul>, <li><span>, <a>, <img><input>, <button>, <select>, <textarea>
宽度宽度默认填满其父元素宽度由内容决定宽度可以自定义设置
高度可以设置高度高度由内容决定可以设置高度
外边距和内边距可以设置外边距和内边距可以设置外边距和内边距可以设置外边距和内边距
定位可以被绝对定位或相对定位可以被相对定位,但绝对定位和固定定位受限可以被绝对定位或相对定位
浮动可以设置浮动不能设置浮动可以设置浮动
块级格式化上下文创建BFC不创建BFC根据CSS display 属性可能创建BFC
可包含的子元素可以包含块级和行内元素只能包含行内元素根据元素自身特性,可以包含行内元素或特定类型的子元素
布局适合布局和结构化内容适合文本和图片等小元素的排版根据元素类型和CSS display 属性,可以用于特定布局或表单控件
换行元素前后会自动换行元素前后不会自动换行根据 display 属性决定是否换行
CSS布局可以使用所有CSS布局方式,如Flexbox和Grid主要用于文本和图片的布局,布局选项有限根据 display 属性和元素类型,可以使用CSS布局或特定样式

做为初学者以上这些特性你可能还不太明白,这些特性会在后面继续讲解。

1.2HTML元素介绍

1.2.1html结构

下图是一个web页面中各种标签存在的包含关系,我们可以大致了解html各个标签的包含关系。
在这里插入图片描述
我们浏览的网页至少包含这三个标签。还有一个表示文件类型的标签<!doctype html>
以下代码是一个html的基本结构。

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>页面标题</title>
</head>
<body><!-- 页面内容将放在这里 -->
</body>
</html>

上图可见<.head>元素可以包含四种元素:<meta><link><style><title>。

1.2.2常用<meta>标签

  • charset: 定义文档的字符编码。
    示例:<meta charset=“UTF-8”>
  • viewport: 控制布局在不同设备上的显示方式,用于响应式设计。
    示例:<meta name=“viewport” content=“width=device-width, initial-scale=1.0”>
  • description: 提供页面内容的简短描述,通常用于搜索引擎结果的摘要信息。
    示例:<meta name=“description” content=“页面描述”>
  • keywords: 提供页面的关键词,虽然现代搜索引擎可能不再依赖此标签。
    示例:<meta name=“keywords” content=“关键词1, 关键词2, 关键词3”>
  • author: 指定页面的作者。
    示例:<meta name=“author” content=“作者名”>
  • robots: 指示搜索引擎爬虫如何索引和跟随页面上的链接。
    示例:<meta name=“robots” content=“index, follow”>
  • http-equiv: 模拟HTTP头部,可以用于控制缓存或浏览器行为。
    示例:<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>
  • refresh: 设置页面在指定秒数后刷新或跳转。
    示例:<meta http-equiv=“refresh” content=“5”>
  • X-UA-Compatible: 用于指定浏览器使用最新版本的IE渲染引擎。
    示例:<meta http-equiv=“X-UA-Compatible” content=“IE=edge”>
  • og(Open Graph Protocol): 控制社交媒体网站如何显示链接的预览。
    示例:
    <meta property=“og:title” content=“页面标题” />
    <meta property=“og:description” content=“页面描述” />
    <meta property=“og:image” content=“图片URL” />

以下是一个完整的HTML文档包含常见的标签

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="This is a sample webpage for demonstrating meta tags."><meta name="keywords" content="HTML, meta tags, tutorial"><meta name="author" content="John Doe"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="robots" content="index, follow"><meta name="theme-color" content="#ffffff"><title>Sample Meta Tags</title><style>body {font-family: Arial, sans-serif;margin: 20px;}</style>
</head>
<body><h1>Understanding Meta Tags and Style Tags</h1><p>This page includes examples of meta tags and style tags.</p>
</body>
</html>

1.2.3常用<link>标签

  • 样式表: 引入外部CSS样式表。
    <link rel=“stylesheet” href=“styles.css”>
  • 图标: 定义页面的favicon图标。
    <link rel=“shortcut icon” href=“favicon.ico” type=“image/x-icon”>
  • 触摸图标(用于iOS设备)::为iOS设备定义触摸图标。
    <link rel=“apple-touch-icon” href=“touch-icon.png”>
  • 预加载: 告诉浏览器预先加载资源,用于性能优化。
    <link rel=“preload” href=“script.js” as=“script”>
  • 预连接: 提前连接到另一个域,用于性能优化。
    <link rel=“preconnect” href=“https://example.com”>
  • DNS 预查询(DNS-Prefetch): 提前执行DNS查询,用于性能优化。
    <link rel=“dns-prefetch” href=“//example.com”>
  • 模块预加载: 预加载JavaScript模块。
    <link rel=“modulepreload” href=“module.js”>:
  • 导航: 定义下一个导航目标。
    <link rel=“next” href=“next-page.html”>:
  • 前一个页面: 定义前一个导航目标。
    <link rel=“prev” href=“previous-page.html”>:
  • 授权(用于CORS): 预获取资源,用于性能优化。
    <link rel=“prefetch” href=“api/data”>:
  • Open Graph Protocol(OGP): 用于社交媒体分享时定义页面的URL。
    <link rel=“og:url” href=“https://example.com/page.html”>:
  • 短链接: 定义页面的短链接。
    <link rel=“shortlink” href=“https://example.com/s”>:
  • canonical: 指定页面的官方URL,用于防止内容重复。
    <link rel=“canonical” href=“https://example.com/”>:
  • Apple Safari主题颜色: 定义Safari的固定标签页图标和主题颜色。
    <link rel=“mask-icon” href=“safari-pinned-tab.svg” color=“#5bbad5”>:

1.2.4<style>和<title>标签

<style>主要是用来引入css样式表,如下图代码

<head><style type="text/css">body { background-color: #f8f8f8; }h1 { color: #333; }p { font-size: 16px; }</style>
</head>

<title>主要作用是指定网页的标题,这个标题就是浏览器里这个网页的tab头显示的名字。如下图所示。
在这里插入图片描述

1.2.5块级元素(Block-level Elements)类型标签

1.div元素
: 一个通用的容器元素,没有特定语义,主要用于组合其他元素
<div><p>天下之物生于有,有生于无。
道生一,一生二,二生三,三生万物。万物负阴而抱阳,中气以为和。</p>
</div>
2.p元素

: 表示段落,包含文本内容。

<p>【第一章】道,可道也,非恒道也。名,可名也,非恒名也。无,名也,天地之始也。有,名也,万物之母也。故恒无,谷也,以观其眇;恒有,谷也,以观其皦。两者同出,异名同谓。玄之有玄,众眇之门。</p>
3.ul和li元素

ul和li: 用来表示列表。

 <ul><li></li><li></li><li></li></ul>
4.table、th、tr、td元素

table: 用于显示表格数据,其中th是表头,tr是行元素,td是单元格,

<table><tr><th></th><th></th><th></th><th></th><th></th></tr><tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>

1.2.6行内元素(Inline Elements)类型标签

1.span元素

<span>: 一个通用的行内容器,没有特定语义,通常用于样式化文本的一部分。

<span style="color: red;">This text is red.</span>
2.a元素

<a> 也称为锚(anchor)元素,在HTML中用于定义超链接。通过 <a> 元素,你可以链接到另一个资源,这可以是另一个网页、同一网页的不同部分、图像、文件或任何其他URL可访问的资源。 <a> 元素最重要的属性是 href,它指定了链接的目标地址。
关键属性:

  • href (Hypertext REFerence): 指定链接的目标URL。这是创建链接时必须的属性。
  • target: 指定在何处打开链接文档。例如,_blank 会在新窗口或新标签页中打开链接,_self
    在相同的框架或窗口中打开链接(这是默认行为)。\
  • title: 提供关于链接的额外信息,通常作为工具提示显示。
  • rel: 描述当前文档与被链接文档之间的关系。例如,rel=“nofollow” 可以告诉搜索引擎不要追踪链接。
  • download: (HTML5中引入):指定链接是为了下载资源。如果指定了 download 属性,浏览器会提示用户下载链接的资源。
3.img元素

<img>: 用于在网页中嵌入图像

<img src="image.jpg" alt="Description of image">

1.2.7混合元素(可作为块级或行内)类型标签

1.input元素
  • 文本输入框
<input type="text" name="username">
  • 密码框
<input type="password" name="password">
  • 单选按钮
<input type="radio" name="gender" value="male"> 男\<br>
<input type="radio" name="gender" value="female"> 女\<br>
  • 多选按钮
    <input type=“checkbox” name=“interest” value=“coding”> 编程<br>
    <input type=“checkbox” name=“interest” value=“music”> 音乐<br>
    <input type=“checkbox” name=“interest” value=“sports”> 体育<br>
  • 提交按钮
  • 重置按钮
2.select元素

<select> 元素创建一个下拉列表,允许用户从多个选项中选择一个或多个选项(取决于 multiple 属性)
主要属性:

  • **name:**表单元素的名称,提交表单时用于标识数据。
  • id: 元素的唯一标识符,常用于CSS样式或JavaScript操作。
  • multiple: 如果存在,允许用户选择多个选项。用户可以使用键盘(通常是Ctrl或Cmd键)选择多个选项。
  • size: 定义下拉列表中可见选项的数量。对于多选下拉列表,这个属性可以提供更好的用户体验。
  • disabled: 如果存在,禁用下拉列表,用户无法与其交互。 required:表明在提交表单之前,用户必须选择一个选项。
<select name="fruits" id="fruits" multiple size="4"><option value="apple">苹果</option><option value="banana">香蕉</option><option value="cherry">樱桃</option>
</select>
3.textarea元素

<textarea> 元素创建一个多行文本输入控件,允许用户输入多行文本。

主要属性:

  • name: 表单元素的名称,用于提交表单数据时标识数据。
  • id: 元素的唯一标识符。 cols:定义文本区域的可见宽度(字符数)。
  • rows: 定义文本区域的可见高度(行数)。
  • placeholder: 提供输入字段的示例文本,当字段为空时显示。
  • disabled: 如果存在,禁用文本区域,用户无法编辑。
  • readonly: 如果存在,文本区域是只读的,用户可以看到文本但不能编辑。
  • required: 表明在提交表单之前,用户必须填写文本区域。
<textarea name="message" id="message" cols="30" rows="5" placeholder="在这里输入您的留言..." required></textarea>

二、CSS语法和常用属性

2.1CSS语法

CSS(层叠样式表,Cascading Style Sheets)的基本语法包括选择符(Selectors)和声明块(Declaration Blocks)两个主要部分。以下是CSS基本语法的介绍:

1. CSS规则的基本结构

一个完整的CSS规则由选择器和声明块组成。声明块包含一个或多个声明,每个声明由属性和值对组成,并用大括号 {} 包围。

selector {property: value;property: value;
}
选择器

选择器用于指定需要应用样式的HTML元素。常见的选择器有:

  • 元素选择器: 直接选择HTML元素。
 p {color: blue;
}
  • 类选择器: 选择指定类名的元素。
class-name {font-size: 16px;
}
  • ID选择器: 选择指定ID的元素。
#id-name {margin: 20px;
}
  • 属性选择器: 选择带有指定属性的元素。
[type="text"] {border: 1px solid #ccc;
}
  • 伪类选择器: 选择特定状态的元素。
a:hover {color: red;
}
属性和值

CSS属性用于定义元素的样式。每个属性都有对应的值。常见的属性和值包括:

  • 颜色和背景:
color: red;
background-color: yellow;
background-image: url('image.jpg');
  • 文本:
font-size: 14px;
font-family: Arial, sans-serif;
text-align: center;
text-decoration: underline;
  • 盒模型:
width: 100px;
height: 200px;
padding: 10px;
margin: 20px;
border: 1px solid black;
  • 布局:
display: block;
display: inline-block;
position: relative;
top: 10px;
left: 20px;
  • 浮动和清除浮动:
float: left;
float: right;
clear: both;
注释

注释用于在CSS代码中添加说明,浏览器会忽略注释内容。注释的语法是使用 /* 和 */ 包围注释文本。

/* 这是一个注释 */
p {color: blue; /* 行内注释 */
}
示例

以下是一个完整的CSS示例,展示了如何为不同的元素应用不同的样式:

/* 元素选择器 */
h1 {color: navy;font-size: 24px;
}/* 类选择器 */
.intro {font-size: 16px;color: gray;
}/* ID选择器 */
#main {width: 800px;margin: 0 auto;
}/* 属性选择器 */
input[type="text"] {border: 1px solid #ccc;padding: 5px;
}/* 伪类选择器 */
a:hover {color: red;text-decoration: underline;
}

2.2常用CSS属性

这里总结了最常用的几个CSS属性,它们分别是font、background、border、visibility、display、width、height、min-width、max-width、line-hight、overflow、position、left、top、bottom、padding、margin,float、clear。本结会对这些属性做详细介绍,尤其最重要的display、position、padding、margin、float。

2.2.1元素和属性关系表

以下表格对比了常用的标签元素和常用CSS的属性的对应关系,这张表格可以清晰的看出CSS属性在哪些元素上有效,哪些元素上无效。

属性/元素divpullispanatabletrtdimginput
font
background
border
visibility
display
width
heightxxx
min-width/min-height
max-width/max-height
line-height
overflow
positionxx
left/top/right/bottomxx
padding
marginxx
float

总结:

  • font 相关属性可以应用于所有列出的元素,但对 img 无效,因为img本身不能包含文字。
  • background 、border 、visibility 对所有元素都有效。
  • line-height 主要影响文本行间距,对 img 无效
  • overflow可以控制内容溢出的处理方式,但对 img 和 input 无效
  • position、left、top、bottom 用于定位,不适用于p、li 等自然文档流中的元素
  • padding 和 margin 可以应用于所有元素,但padding 对 img 无效。

2.2.2常用CSS属性

font
  • font-style: normal(默认)| italic | oblique font-variant: normal(默认)| small-caps
  • font-weight: normal | bold | bolder | lighter | 数值(100-900)
  • font-size: 如 16px, 1.2em 等
  • line-height: 如 1.5, 24px, normal(默认)
  • font-family: 字体系列,如 Arial, sans-serif

CSS 示例:


/* 属性分开的形式 */
p {font-style: italic;font-variant: small-caps;font-weight: bold;font-size: 16px;line-height: 1.5;font-family: Arial, sans-serif;
}/* 简写形式 */
p {font: italic small-caps bold 16px/1.5 Arial, sans-serif;
}
background
  • background-color: 背景颜色,如 #fff, white, rgba(0,0,0,0.5)
  • background-image: 背景图像,如 url(‘image.png’)
  • background-repeat: repeat(默认)| repeat-x | repeat-y | no-repeat
  • background-attachment: scroll(默认)| fixed
  • background-position: 如 center, top left, 10px 20px
  • background-size: cover | contain | 100% 100% | auto

CSS 示例:

/* 属性分开的形式 */
div {background-color: #f8f8f8;background-image: url('background.jpg');background-repeat: no-repeat;background-attachment: fixed;background-position: center;background-size: cover;
}/* 简写形式 */
div {background: #f8f8f8 url('background.jpg') no-repeat fixed center/cover;
}
border
  • border-width: 边框宽度,如 1px, medium(默认)
  • border-style: 边框样式,如 solid, dotted, dashed
  • border-color: 边框颜色,如 #000, black
  • 简写属性:border 可以同时设置宽度、样式和颜色

CSS 示例:

/* 属性分开的形式 */
.bordered {border-width: 2px;border-style: dashed;border-color: #ccc;
}/* 简写形式 */
.bordered {border: 2px dashed #ccc;
}
visibility
  • visible: 元素可见(默认)
  • hidden: 元素不可见,但占据空间
  • collapse: 用于表格,隐藏元素并删除其空间
    CSS 示例:
/* 属性分开的形式 */
.hidden-element {visibility: hidden;
}/* 直接使用 visibility 属性 */
.hidden-element {visibility: collapse;
}
display(重点)
  • none:元素不会被显示,且不会占用任何空间。
  • block:元素将显示为块级元素,开始于新行,并且它的宽度默认填满其父元素。
  • inline:元素将显示为行内元素,不开始新行,周围没有块级元素的间距。
  • inline-block:元素将内联显示,但可以设置宽度和高度。

说明: display还有一些其他属性值,像table、table-row、table-cell等非常不常用,就不在此列出。

CSS 示例:

/* 块级元素 */
div.block-element {display: block;width: 300px;height: 100px;background-color: lightblue;
}/* 行内元素 */
span.inline-element {display: inline;color: red;
}/* 内联块级元素 */
img.inline-block-element {display: inline-block;width: 50px;height: 50px;
}
position(重点)
  • static:默认值。元素按照正常的文档流进行排列,top, right, bottom, left 和 z-index 属性不适用。
  • relative:元素相对于其正常位置进行定位,仍保留在文档流中,top, right, bottom, left 属性决定偏移量。
  • absolute:元素相对于其最近的已定位(非 static)祖先元素进行定位,如果没有这样的祖先元素,则相对于 元素(即,文档的根元素)定位。
  • fixed:元素相对于浏览器窗口进行定位,即使滚动页面,元素也会停留在视口中的固定位置,top, right, bottom, left 属性决定偏移量。
  • sticky:元素根据用户的滚动位置相对于其最近的已定位祖先元素或视口进行定位,类似于 relative 和 fixed 的结合。元素在一定范围内表现为 relative,超出范围表现为 fixed。

CSS 示例:

/* 静态定位 */
.static-element {position: static;/* top, right, bottom, left, z-index 不适用 */
}/* 相对定位 */
.relative-element {position: relative;top: 10px;left: 20px;/* 相对于正常位置的偏移 */
}/* 绝对定位 */
.absolute-element {position: absolute;top: 30px;right: 0;/* 相对于最近的已定位非 static 祖先元素或<html>元素的偏移 */
}/* 固定定位 */
.fixed-element {position: fixed;bottom: 0;left: 0;/* 相对于浏览器窗口的偏移 */
}/* 粘性定位 */
.sticky-element {position: sticky;top: 50px; /* 当滚动到这个距离时,元素将固定 */
}/* 一个示例HTML结构 */
<div class="static-element">静态定位元素</div>
<div class="relative-element">相对定位元素</div>
<div class="absolute-element">绝对定位元素</div>
<div class="fixed-element">固定定位元素</div>
<div class="sticky-element">粘性定位元素</div>

在这个示例中,我们演示了不同的 position 属性值如何影响元素的布局:

  • .static-element 不会脱离文档流,没有偏移。
  • .relative-element 会相对于其正常位置进行偏移。
  • .absolute-element 会从文档流中脱离,并相对于其最近的已定位非 static 祖先元素或 元素进行定位。
  • .fixed-element 会相对于浏览器窗口进行定位,页面滚动时它不会移动。
  • .sticky-element 会根据滚动位置在相对定位和固定定位之间切换。
left/top/right/bottom

left, top, right, bottom 这些属性在CSS中用于控制元素的定位。它们的生效与否以及具体表现,依赖于元素的 position 属性值:

  • 当 position 为 static 时:
    • left, top, right, bottom 不会生效,因为静态定位的元素按照正常的文档流排列。
  • 当 position 为 relative 时:
    • 这些属性会相对于元素的原始位置进行偏移。
  • 当 position 为 absolute 或 fixed 时:
    • left 和 right 至少会有一个生效,用于定义元素在水平方向上的位置。
  • top 和 bottom 至少会有一个生效,用于定义元素在垂直方向上的位置。
    • 如果同时设置 left 和 right(或 top 和 bottom),浏览器将根据元素的尺寸决定覆盖哪个值。
  • 当 position 为 sticky 时:
    • 这些属性的行为与 relative 类似,但在元素超出其包含块的边界时,它们的行为会转变为 fixed。

CSS 示例:

.container {position: relative;width: 500px;height: 300px;border: 1px solid #000;
}/* 相对定位元素 */
.relative-box {position: relative;top: 20px;left: 30px;width: 100px;height: 100px;background-color: lightcoral;
}/* 绝对定位元素 */
.absolute-box {position: absolute;top: 50px;right: 20px;width: 100px;height: 100px;background-color: lightblue;
}/* 固定定位元素 */
.fixed-box {position: fixed;bottom: 0;left: 0;width: 100px;height: 50px;background-color: lightgreen;
}/* 粘性定位元素 */
.sticky-box {position: sticky;top: 0; /* 当滚动到顶部时,元素将固定在视口顶部 */width: 100px;height: 100px;background-color: lightgoldenrodyellow;
}/* 一个示例HTML结构 */
<div class="container"><div class="relative-box"></div><div class="absolute-box"></div>
</div>
<div class="fixed-box"></div>
<div class="sticky-box"></div>

在这个示例中:

  • .relative-box 使用相对定位,相对于其正常位置在容器内向下和向左偏移。
  • .absolute-box 使用绝对定位,相对于其最近的已定位祖先元素(这里是 .container)进行定位。
  • .fixed-box 使用固定定位,相对于浏览器窗口定位在视口底部。
  • .sticky-box 使用粘性定位,当页面滚动到顶部时,它将固定在视口顶部。

请注意,left 和 right 通常不会与 top 和 bottom 同时使用,除非有特殊的布局需求。浏览器将根据元素的尺寸和布局环境决定如何应用这些值。

overfow
  • overflow 属性在CSS中用于控制元素内容溢出其指定大小时的显示方式。以下是 overflow 的属性值及其含义:
  • visible:溢出的内容不会被裁剪,会显示在元素框之外。
  • hidden:溢出的内容会被裁剪,不显示超出部分。
  • scroll:无论内容是否溢出,都会提供滚动条。
  • auto:如果内容溢出,滚动条将根据需要显示或隐藏。
  • overlay:溢出的内容会被裁剪,滚动条总是显示在内容的上方,不会占用元素的空间(这是一个非标准值,不是所有浏览器都支持)。
float(重点)
  • float 属性在CSS中用于将元素放置在容器的左侧或右侧,使其周围的内容环绕在元素的周围。以下是 float 的属性值及其含义:
  • none:默认值。元素不浮动,按照正常的文档流排列。
  • left:元素浮动到其包含块的左侧。
  • right:元素浮动到其包含块的右侧。

CSS 示例代码:

/* 不浮动元素 */
.not-floated {float: none;width: 300px;background-color: lightgray;
}/* 向左浮动的元素 */
.float-left {float: left;width: 150px;height: 150px;background-color: lightblue;margin: 10px;
}/* 向右浮动的元素 */
.float-right {float: right;width: 150px;height: 150px;background-color: lightcoral;margin: 10px;
}/* 清除浮动的元素 */
.clear-float {clear: both; /* 清除左右两侧的浮动 */
}/* 示例HTML结构 */
<div class="not-floated">这是不浮动的元素。
</div>
<div class="float-left">这是向左浮动的元素。
</div>
<div class="float-right">这是向右浮动的元素。
</div>
<div class="clear-float">这是清除浮动的元素,确保下面的元素不会环绕在浮动元素周围。
</div>

在这个示例中:

  • .not-floated 类的元素不会浮动,按照正常的文档流显示。
  • .float-left 类的元素将向左浮动,并且宽度设置为 150px,高度为 150px。
  • .float-right 类的元素将向右浮动,同样具有确定的尺寸。
  • .clear-float 类的元素使用 clear: both; 来清除任何方向的浮动,确保其下方的元素不会环绕在浮动元素周围。

浮动元素常用于创建多列布局,但需要注意浮动元素脱离了正常的文档流,可能会影响页面的布局。因此,经常需要使用清除浮动的技术(如 clear 属性)来确保布局的准确性。

2.2.3常用元素的CSS属性

div的css属性

margin 和 padding 属性在CSS中用于控制元素与其周围元素之间的空间(外边距)和元素内容与边框之间的空间(内边距)。下图演示padding和margin代表的含义:
在这里插入图片描述

以下是 margin 和 padding 的属性值及其含义:

margin 属性:

  • margin-top: 顶部外边距。

  • margin-right: 右侧外边距。

  • margin-bottom: 底部外边距。

  • margin-left: 左侧外边距。

  • margin: 简写属性,可以同时设置所有四个方向的外边距。

  • 具体数值,如 10px。

  • 百分比,相对于包含块的宽度。

  • auto:自动计算外边距,常用于水平居中。

/* 属性分开的形式 */
.example-margin {margin-top: 20px;margin-right: 30px;margin-bottom: 20px;margin-left: 30px;
}/* 简写形式 */
.example-margin {margin: 20px 30px; /* 上下为20px,左右为30px */
}
/* 两个值:垂直 | 水平 */
.example-margin-2 {margin: 10px 20px; /* 上下为10px,左右为20px */
}/* 三个值:顶部 | 右侧和左侧 | 底部 */
.example-margin-3 {margin: 5px 10px 15px; /* 上为5px,左右为10px,下为15px */
}/* 四个值:顶部 | 右侧 | 底部 | 左侧 */
.example-margin-4 {margin: 8px 12px 8px 12px; /* 上右下左分别为8px, 12px, 8px, 12px */
}

padding 属性:

  • padding-top: 顶部内边距。
  • padding-right: 右侧内边距。
  • padding-bottom: 底部内边距。
  • padding-left: 左侧内边距。
  • padding: 简写属性,可以同时设置所有四个方向的内边距。

padding 的值可以是:

  • 具体数值,如 10px。
  • 百分比,相对于包含块的宽度。
/* 属性分开的形式 */
.example-padding {padding-top: 15px;padding-right: 25px;padding-bottom: 15px;padding-left: 25px;
}/* 简写形式 */
.example-padding {padding: 15px 25px; /* 上下为15px,左右为25px */
}
/* 两个值:垂直 | 水平 */
.example-padding-2 {padding: 10% 20%; /* 上下为10%,左右为20% */
}/* 三个值:顶部 | 右侧和左侧 | 底部 */
.example-padding-3 {padding: 2em 4em 1em; /* 上为2em,左右为4em,下为1em */
}/* 四个值:顶部 | 右侧 | 底部 | 左侧 */
.example-padding-4 {padding: 8px 12px 15px 20px; /* 上右下左分别为8px, 12px, 15px, 20px */
}
ul的css属性

ul元素有几个控制列表效果的专有属性:

  • list-style-type:

    • disc: 默认值,显示为实心圆点。
    • circle: 显示为空心圆圈。
    • square: 显示为实心方块。
    • none: 不显示列表项标记。
    • decimal: 显示为数字。
    • decimal-leading-zero: 显示为带有前导零的数字(例如,01, 02, 03, 等)。
    • lower-roman: 显示为小写罗马数字。
    • upper-roman: 显示为大写罗马数字。
    • lower-alpha: 显示为小写字母。
    • upper-alpha: 显示为大写字母。
  • list-style-image:

    • 使用图像作为列表项的标记。可以是URL路径或图像。
  • list-style-position:

    • inside: 列表项标记位于文本内部,紧贴文本。
    • outside: 列表项标记位于文本外部,与文本对齐。
  • list-style:简写属性,用于同时设置 list-style-type, list-style-image, 和 list-style-position。

ul.custom-list-type {list-style-type: square; /* 使用实心方块作为标记 */list-style-image: url('custom-bullet.png'); /* 使用自定义图像作为标记 */list-style-position: inside; /* 标记位于文本内部 */
}

li.custom-list-item {
padding-left: 10px; /* 为列表项添加左内边距 */
}

table、tr、td的特殊css属性

1.table专有:

border-collapse 属性: 决定表格的边框是否合并为一个单一的边框。

  • collapse: 相邻单元格的边框会合并为一个单一的边框,这是默认值。
  • separate: 每个单元格的边框独立显示,单元格之间的间隙由 border-spacing 属性控制。
    table-layout 属性: table-layout 属性定义了表格的布局算法。
  • auto: 浏览器根据表格的行和列的尺寸自动计算表格的布局,这可能导致行和列的尺寸根据内容动态变化。
  • fixed: 表格的宽度和列宽固定,列宽由表格宽度和 width 属性决定,行的高度由内容决定。
/* 表格样式示例 */
table.collapse-border {border-collapse: collapse; /* 边框合并 */border: 1px solid black; /* 边框样式 */
}table.separate-border {border-collapse: separate; /* 边框独立 */border: 1px solid #ccc; /* 边框样式 */border-spacing: 10px; /* 边框间距 */
}table.auto-layout {table-layout: auto; /* 自动布局 */width: 100%; /* 表格宽度 */
}table.fixed-layout {table-layout: fixed; /* 固定布局 */width: 60%; /* 表格宽度 */border: 2px solid blue; /* 边框样式 */
}/* 示例HTML结构 */
<table class="collapse-border"><tr><th>标题1</th><th>标题2</th></tr><tr><td>内容1</td><td>内容2</td></tr>
</table><table class="separate-border"><tr><th>标题1</th><th>标题2</th></tr><tr><td>内容1</td><td>内容2</td></tr>
</table><table class="auto-layout"><!-- 表格内容 -->
</table><table class="fixed-layout"><!-- 表格内容 -->
</table>

在这个示例中,我们演示了不同的 border-collapse 和 table-layout 属性值如何影响表格的显示:

  • .collapse-border 类的表格使用了 collapse 属性,边框合并为单一的边框。
  • .separate-border 类的表格使用了 separate 属性,边框独立显示,并通过 border-spacing 属性设置了边框间距。
  • .auto-layout 类的表格使用了 auto 属性,表格布局根据内容自动调整。
  • .fixed-layout 类的表格使用了 fixed 属性,表格布局固定,宽度由 width 属性决定。

2.tr和td专有:

  • vertical-align: 设置单元格内容的垂直对齐方式。
  • vertical-align: 设置单元格内容的垂直对齐方式。
input的css属性

outline属性
outline 属性在CSS中用于绘制元素轮廓,它是一个简写属性,允许你在一个声明中设置多个轮廓属性。以下是 outline 的属性值及其含义:

  • outline-width:设置轮廓的宽度。可以是具体数值(如 1px)、百分比或关键字(如 thin, medium, thick)。
  • outline-style:设置轮廓的样式,如 solid(实线)、dotted(点线)、dashed(虚线)、double(双线)、groove、ridge、inset、outset 等。
  • outline-color:设置轮廓的颜色。可以是颜色名称(如 red)、十六进制值(如 #ff0000)、RGB 值(如 rgb(255, 0, 0))等。
  • outline-offset:设置轮廓与元素边框之间的距离。
  • outline 属性的值可以组合使用,例如 outline: 1px solid red;,也可以只设置一个值,如 outline: none;。

CSS 示例代码:

/* 无轮廓 */
.no-outline {outline: none;
}/* 实线轮廓 */
.solid-outline {outline: 2px solid blue;
}/* 点线轮廓 */
.dotted-outline {outline: 1px dotted green;
}/* 虚线轮廓 */
.dashed-outline {outline: 3px dashed #333;
}/* 双线轮廓 */
.double-outline {outline: 3px double #000;
}/* 轮廓偏移 */
.offset-outline {outline: 2px solid red;outline-offset: 5px;
}/* 轮廓样式组合 */
.custom-outline {outline-width: 1px;outline-style: dashed;outline-color: #ff00ff;
}

在这个示例中:

  • .no-outline 类移除了轮廓。
  • .solid-outline 类添加了蓝色实线轮廓。
  • .dotted-outline 类添加了绿色点线轮廓。
  • .dashed-outline 类添加了灰色虚线轮廓。
  • .double-outline 类添加了黑色双线轮廓。
  • .offset-outline 类添加了红色轮廓,并设置了轮廓偏移。
  • .custom-outline 类组合使用了轮廓宽度、样式和颜色。

轮廓通常用于视觉反馈,如当元素获得焦点时,可以通过 :focus 伪类来添加轮廓样式

2.2.3CSS优先级(重点)

在 CSS 中,优先级(Specificity)决定了当多个规则应用于同一个元素时,哪条规则会生效。优先级是由选择器的类型和复杂度决定的。CSS属性的优先级可以分为以下几种:

  1. 重要性(Importance)
  !important 是一种特殊的优先级,优先于所有其他规则。即使其他规则的优先级更高,带有 !important 的规则仍然会覆盖它们。、p {color: red !important;
}
  1. 内联样式(Inline Styles)
    通过元素的 style 属性直接设置的样式,优先级高于所有CSS选择器,但低于 !important。
<p style="color: blue;">This is a paragraph.</p>
  1. ID选择器(ID Selectors)
    ID选择器的优先级较高,它的权重为100。
#my-id {color: green;
}
  1. 类、伪类和属性选择器(Class, Pseudo-class, and Attribute Selectors)
    类选择器、伪类选择器和属性选择器的优先级相同,它们的权重为10。
.my-class {color: purple;
}p:hover {color: orange;
}input[type="text"] {color: bro

wn;
}
5. 元素和伪元素选择器(Element and Pseudo-element Selectors)
元素选择器和伪元素选择器的优先级最低,它们的权重为1。

div {color: black;
}p::after {content: "!";color: red;
}
  1. 选择器组合和层叠(Selector Combinations and Cascade)
    当选择器组合在一起时,其优先级是各个部分权重的总和。例如:
div span {color: blue; /* 1 + 1 = 2 */
}ul li .item {color: green; /* 1 + 1 + 10 = 12 */
}#main .highlight {color: yellow; /* 100 + 10 = 110 */
}
  1. 层叠顺序(Cascade Order)
    当多个选择器的优先级相同时,离目标元素最近的规则将覆盖其他规则。如果它们在同一个层次上,后定义的规则将覆盖之前的规则。
<style>p {color: red;}.intro {color: blue;}#main {color: green;}p {color: orange; /* 此规则将覆盖第一个 p 规则 */}
</style>

具体示例
下面是一个具体示例,展示了优先级的实际应用:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS Specificity Example</title><style>p {color: red; /* 权重 1 */}.intro {color: blue; /* 权重 10 */}#main {color: green; /* 权重 100 */}p {color: orange; /* 权重 1,但在文档流中更靠后 */}p.intro {color: purple; /* 权重 11 */}</style>
</head>
<body><p>This is a paragraph with low specificity.</p><p class="intro">This is a paragraph with class.</p><div id="main"><p>This is a paragraph inside a div with id.</p></div>
</body>
</html>

在上述示例中,不同选择器的优先级将决定每个段落的最终颜色:

  • 第一个段落颜色为 orange,因为 p { color: orange; } 规则在文档流中更靠后。
  • 第二个段落颜色为 purple,因为 .intro { color: blue; } 的权重是 10,而 p.intro { color: purple; } 的权重是 11。
  • 第三个段落颜色为 green,因为 #main { color: green; } 的权重是 100。‘’

总结
CSS 优先级由 !important、内联样式、ID选择器、类选择器、伪类选择器、属性选择器、元素选择器和伪元素选择器的权重决定。当多个规则作用于同一元素时,优先级更高的规则将生效。理解并正确运用CSS优先级,有助于更有效地控制样式应用和解决样式冲突。

三、初学者常见错误

1. 标签未闭合或嵌套不正确

错误: 初学者常常忘记闭合标签或者标签嵌套不正确。

<!-- 错误示例 -->
<p>This is a paragraph
<div>This is a div</div>

正确示例:

<p>This is a paragraph</p>
<div>This is a div</div>

2. 块级元素和行内元素的混淆

错误: 将块级元素放在行内元素内部。

<!-- 错误示例 -->
<span><div>This is a div inside a span</div></span>

正确示例:

<div><span>This is a span inside a div</span></div>

3. 使用错误的标签

错误: 使用不合适的标签来标记内容。

<b>This is bold text</b>
<i>This is italic text</i>

正确示例: 现在推荐使用具有语义的标签。

<strong>This is bold text</strong>
<em>This is italic text</em>

4. 忘记包括<!DOCTYPE html>

错误: 忘记在HTML文档开头声明文档类型。

<!-- 错误示例 -->
<html>
<head><title>My Page</title>
</head>
<body><p>Hello World!</p>
</body>
</html>

正确示例:

<!DOCTYPE html>
<html>
<head><title>My Page</title>
</head>
<body><p>Hello World!</p>
</body>
</html>

5. 不正确的注释使用

错误: 错误地使用注释标签。

<-- This is incorrect -->
正确示例:

<!-- This is a correct comment -->

6. 忘记字符编码声明

错误: 忘记在部分设置字符编码。

<!-- 错误示例 -->
<head><title>My Page</title>
</head>

正确示例:

<head><meta charset="UTF-8"><title>My Page</title>
</head>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/356039.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IPTCP知识

1. IP&#xff1a; IP地址是一个32位的二进制数&#xff0c;通常被分割为4个“8位二进制数”IP地址分类&#xff1a;A类地址、B类地址、C类地址、D类地址、E类地址 A类地址分配给规模特别大的网络使用&#xff0c;B类地址分配给一般的中型网络&#xff0c;C类地址分配给小型网…

Day 29:1600. 王位继承顺序

Leetcode1600. 王位继承顺序 一个王国里住着国王、他的孩子们、他的孙子们等等。每一个时间点&#xff0c;这个家庭里有人出生也有人死亡。 这个王国有一个明确规定的王位继承顺序&#xff0c;第一继承人总是国王自己。我们定义递归函数 Successor(x, curOrder) &#xff0c;给…

DN-DETR

可以看到&#xff0c;与 DAB-DETR 相比&#xff0c;最大的差别仍然在 decoder 处&#xff0c;主要是 query 的输入。DN-DETR 认为可以把对 offsets 的学习&#xff0c;看作一种对噪声学习的过程&#xff0c;因此&#xff0c;可以直接在 GT 周围生成一些 noised boxes&#xff0…

ASP.NET Core 6.0 使用 Log4Net 和 Nlog日志中间件

前言 两年前,浅浅的学过 .NET 6,为啥要记录下来,大概是为了以后搭架子留下引线,还有抛砖引玉。 1. 环境准备 下载 建议使用 Visual Studio 2022 开发版 官网的下载地址:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具借助 Visual Studio 设计,具有自动完成…

【MySQL】 -- 事务

如果对表中的数据进行CRUD操作时&#xff0c;不加控制&#xff0c;会带来一些问题。 比如下面这种场景&#xff1a; 有一个tickets表&#xff0c;这个数据库被两个客户端机器A和B用时连接对此表进行操作。客户端A检查tickets表中还有一张票的时候&#xff0c;将票出售了&#x…

面试官:JavaScript执行机制中的闭包?

前言 JavaScript 中的闭包指的是一个函数以及其捆绑的周边环境状态的引用的组合。闭包可以让开发者从内部函数访问外部函数的作用域&#xff0c;即使外部函数已经执行完毕 今天我们通过JavaScript执行机制来聊聊闭包 正文 首先来分析这段代码的执行机制&#xff0c;这段代码…

太牛了!AI换脸数字人,限制解除,免费用!

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 今天给大家安利一款美图公司出品的神器&#xff0c;功能限制完全解除&#xff0c;可以免费使用AI换脸数字人、AI提词器、AI脚本、AI抠图、AI清除、AI封面等超多超实用功能&#xff0c;…

Freertos-----任务之间的消息传递(使用消息队列信号量方法)

这次来分享任务之间的数据传递的方法&#xff0c;方法有很多种&#xff0c;我展示2种&#xff0c;让大家对freertos有更深刻的印象 目录 消息队列 信号量 消息队列 首先直接打开普中的例程&#xff0c;然后在里面加上ADC的驱动代码&#xff0c;先初始化外设先&#xff0c;我…

【ARMv8/ARMv9 硬件加速系列 1 -- SVE | NEON | SIMD | VFP | MVE | MPE 基础介绍】

文章目录 ARM 扩展功能介绍VFP (Vector Floating Point)SIMD (Single Instruction, Multiple Data)NEONSVE (Scalable Vector Extension)SME (Scalable Matrix Extension)CME (Compute Matrix Engine)MVE (M-profile Vector Extension)MPE (Media Processing Engine)总结 ARM 扩…

【刷力扣】23. 合并 K 个升序链表(dummy节点技巧 + 分治思维 + 优先队列)

目录 一、合并升序链表问题二、题目&#xff1a;[21. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/description/)1、掌握dummy节点的技巧 三、题目&#xff1a;[23. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/descri…

ASP.NET Core 6.0 启动方式

启动方式 Visualstudio 2022启动 IIS Express IIS Express 是一个专为开发人员优化的轻型独立版本的 IIS。 借助 IIS Express,可以轻松地使用最新版本的 IIS 开发和测试网站。 控制台版面 直接在浏览器输入监听的地址,监听的是 http://localhost:5137 脚本启动 dotnet run…

Dockerfile 自定义镜像

大家好 , 今天我要和大家分享一个现代软件开发中不可或缺的工具 - Docker . 在这个快速发展的技术时代 , 我们经常面临着应用部署的复杂性、环境差异以及不同操作系统之间的兼容性问题 . 这些问题不仅消耗大量时间 , 还可能导致项目延期和成本增加 . Docker 的出现解决了我们在…

成都晨持绪:现在的抖音网店怎么做更快起店

在当今社交媒体的浪潮中&#xff0c;抖音已经成为一个不可忽视的电商平台。对于想要快速起步的抖音网店来说&#xff0c;掌握一些关键策略至关重要。 首要的是定位清晰。你的网店需要有一个鲜明的主题&#xff0c;这可以是某一特定领域的产品&#xff0c;如美妆、服饰或是手工艺…

银河麒麟V10安装docker和docker-compose

1. 说明 系统镜像使用的是Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso如果是在VMware中安装这个系统&#xff0c;需选择Ubuntu&#xff0c;如果选Centos会有问题。 尝试使用在线方式安装docker&#xff0c;报了很多错误&#xff0c;比较麻烦&#xff0c;建议使用离…

分享由AI制定一个商城网站的开发计划及推荐的开发语言

商城网站开发计划 一、项目概述 本商城网站开发计划旨在创建一个功能齐全、用户友好的在线购物平台&#xff0c;为顾客提供商品浏览、搜索、购物车管理、订单跟踪、在线支付等服务。商城将支持多种商品分类&#xff0c;包括但不限于电子产品、家居用品、服饰鞋帽等。 二、开…

数据结构【二叉树】

前言 我们在前面学习了使用数组来实现二叉树&#xff0c;但是数组实现二叉树仅适用于完全二叉树&#xff08;非完全二叉树会有空间浪费&#xff09;&#xff0c;所以我们本章讲解的是链式二叉树&#xff0c;但由于学习二叉树的操作需要有一颗树&#xff0c;才能学习相关的基本…

【Web APIs】DOM 文档对象模型 ④ ( querySelector 函数 | querySelectorAll 函数 | NodeList 对象 )

文章目录 一、querySelector 函数1、querySelector 函数简介2、完整代码示例 二、querySelectorAll 函数1、querySelectorAll 函数简介2、完整代码示例 三、NodeList 对象1、NodeList 对象简介2、完整代码示例 本博客相关参考文档 : WebAPIs 参考文档 : https://developer.moz…

Java中将文件转换为Base64编码的字节码

在Java中&#xff0c;将文件转换为Base64编码的字节码通常涉及以下步骤&#xff1a; 读取文件内容到字节数组。使用java.util.Base64类对字节数组进行编码。 下面是一个简单的Java示例代码&#xff0c;演示如何实现这个过程&#xff1a; import java.io.File; import java.io…

【HarmonyOS NEXT】鸿蒙 如何在包含web组件的页面 让默认焦点有效

页面包含web组件Button组件等&#xff0c;把页面的默认焦点放到Button组件上&#xff0c;不起效果。 因为web组件默认会在组件加载完成后获取焦点&#xff1b; 可以在web的网页加载完成时onPageEnd回调中&#xff0c;将设置默认获焦的组件通过focusControl.requestFocus方法主…

gitlab升级16.11.3-ee

背景 这是事后一段时间补充记录的博客。 升级目的&#xff1a;修补漏洞CVE-2024-4835 未经认证的威胁攻击者能够利用该漏洞在跨站脚本 (XSS) 攻击中&#xff0c;轻松接管受害者账户。 gitlab版本为14.6.2-ee升级至16.11.3-ee 思路 翻阅文档找升级方法及升级版本路径。使用…