2021-03-28

HTML学习总结

一.何为HTML

HTML是超文本标记语言(HyperText Markup Language)的缩写。我们用 HTML 来构建 Web 页面即所谓的网页。

HTML 是构成 Web 世界的一砖一瓦。它定义了网页内容的含义和结构。除 HTML 以外的其它技术则通常用来描述一个网页的表现与展示效果(如 CSS),或功能与行为(如 JavaScript)。

HTML 不是一门编程语言,而是一种用于定义内容结构的标记语言。

二. HTML文档结构

HTML文档结构一般包括包括标记(Html)、头部(Head)、主体(Body)三部分。
标记< html>:说明该文件是用超文本标记语言来描述的,它是文件的开头,而则表示该文件的结尾,它们是超文本标记语言文件的开始标记和结尾标记。
头部:表示头部信息的开始和结尾。头部中包含的标记是页面的标题、序言、说明等内容,它本身不作为内容来显示,但影响网页显示的效果。
主体:网页中显示的实际内容均包含在这2个正文标记符之间。正文标记符又称为实体标记。如下:
在这里插入图片描述

三.HTML组成

HTML使用标记来注明文本图片等内容,如head、body、p等(每个标记都应该有双尖括号,但这里使用将看不见标记)。
而HTML是由一个个HTML元素组成的,一个元素一般由一对标签构成。
for example:
在这里插入图片描述

HTML元素

HTML元素有以下分类:
1.块级元素
特点:
占据其父元素(容器)的整个空间;会新起一行;
可以包含行内元素和其他块级元素。
常用:<h1>, <pre>, <ul>, <table>,<div>
2.内联元素
特点:
1)和其他元素都在一行上
2)元素的高度、宽度以及顶部和底部边距不可设置
3)元素的宽度就是它包含的文字或图片的宽度,不可改变
常用:<span>, <input>, <td>, <a>, <img>
3.空元素
特点:只有一个标签,通常用来在此元素位置插入或嵌入一些东西
<br>, <hr>, <input>, <img>, <a>

元素属性

元素是可以有相关属性的。属性包括元素的额外信息,信息不会在浏览器中显示。
示例如下:
在这里插入图片描述
一个属性必须包含如下内容:

1、一个空格,在属性和元素名称之间。(如果已经有一个或多个属性,就与前一个属性之间有一个空格。)
2、属性名称,后面跟着一个 = 号。
3、一个属性值,由一对引号 “” 引起来。

四、重要标签

超链接 a

没有超链接就没有万维网(World Wide Web)。基本上,我们可以把任何东西加上超链接,不过常用的是文本、图片等。

超链接语法

<a href="https://www.baidu.com/" target="_blank">百度一下</a>

说明:

1、href即为要跳转去的地址 URL(Uniform Resorce Locator)
2、target属性为_blank表示在新的页面打开超链接(默认是在当前页面打开即_self
3、超链接标签包含的内容(当前为文字"百度一下")即为显示在页面上供用户点击的

锚点

锚点,也称为书签,用于标记页面的某个元素或位置。通过锚点,我们可以轻易的在长页面内实现跳转。

先使用id属性生成某元素的锚点,然后再使用超链接指向该锚点即可。

<!-- 文档其余部分 -->
<h2 id="C4">第四章 论零号病人的重要性</h2>
<!-- 文档其余部分 -->
<a href="#C4">跳到第四章</a>
<!-- 文档其余部分 -->

图片及文件路径 img

在页面插入一张图片如下:

<img src="https://mdbootstrap.com/img/logo/mdb192x192.jpg" alt="MDB Logo" width="200" height="200">

说明:

1、src属性为要显示图片文件的位置 URL,即图片文件的路径
2、alt属性当获取图片出现问题时显示的文字(占位符)
3、可为图片指定高宽度,但不建议(可能导致图片变形)

文件路径

为获取图片文件,我们需要指定该文件位于何处,这称为文件路径。文件路径有相对路径和绝对路径两种。

上面图片的例子即为绝对路径。下面是相对路径的例子:

例子解释
< img src=“picture.jpg”>该图片文件与当前文档在同一目录中
< img src="./images/picture.jpg">该图片文件在当前目录下的images目录中
< img src="…/picture.jpg">该图片文件在上一级目录中

四、其他

预设格式

如果你想在网页中展示一首诗或一些特别格式的文本,那么请使用pre标签。

<!-- pre标签中的内容将保持格式不变 -->
<pre>
              我如果爱你——
              绝不象攀援的凌霄花,
              借你的高枝炫耀自己;

              我如果爱你——
              绝不学痴情的鸟儿,
              为绿荫重复单调的歌曲;

              也不止像泉源,
              常年送来清凉的慰藉;

              也不止像险峰,
              增加你的高度,衬托你的威仪。

              甚至日光。
              甚至春雨。

              不,这些都还不够!
              我必须是你近旁的一株木棉,
              作为树的形象和你站在一起。

              根,紧握在地下,
              叶,相触在云里。

              每一阵风过,
              我们都互相致意,
              但没有人,
              听懂我们的言语。

              你有你的铜枝铁干,
              像刀,像剑,
              也像戟;

              我有我红硕的花朵,
              像沉重的叹息,
              又像英勇的火炬。

              我们分担寒潮、风雷、霹雳;
              我们共享雾霭、流岚、虹霓。
              仿佛永远分离,
              却又终身相依。

              这才是伟大的爱情,
              坚贞就在这里:
              爱——
              不仅爱你伟岸的身躯,
              也爱你坚持的位置,足下的土地。
</pre>

特殊字符
在一些情况下需要显示"< p>< /p >"等类似符号时,需要使用特殊字符来代替相应字符,特殊字符参考:ISO-8859-1 字符实体手册.

以下是一个可能的Java实现: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; public class RentPlanGenerator { private static final double RENT_INCREASE_RATE = 0.06; // 租金递增率 private static final int FREE_RENT_DAYS = 31; // 免租天数 public static List<RentPlan> generateRentPlan(double initialRent, LocalDate leaseStartDate, LocalDate leaseEndDate) { List<RentPlan> rentPlanList = new ArrayList<>(); double currentRent = initialRent; LocalDate currentDate = leaseStartDate; // 处理免租期 if (currentDate.isBefore(leaseStartDate.plusDays(FREE_RENT_DAYS))) { currentDate = leaseStartDate.plusDays(FREE_RENT_DAYS); } while (currentDate.isBefore(leaseEndDate)) { LocalDate nextIncreaseDate = currentDate.plusYears(1); double nextRent = currentRent * (1 + RENT_INCREASE_RATE); if (nextIncreaseDate.isBefore(leaseStartDate.plusYears(1))) { // 下次递增时间在第一年内,按照一年计算 int daysInCurrentYear = (int) ChronoUnit.DAYS.between(currentDate, nextIncreaseDate); rentPlanList.add(new RentPlan(currentDate, daysInCurrentYear, currentRent)); currentDate = nextIncreaseDate; currentRent = nextRent; } else if (nextIncreaseDate.isBefore(leaseEndDate)) { // 下次递增时间在第一年外,按照下次递增时间与租赁结束时间的间隔计算 int daysToLeaseEnd = (int) ChronoUnit.DAYS.between(currentDate, leaseEndDate); rentPlanList.add(new RentPlan(currentDate, daysToLeaseEnd, currentRent)); break; } else { // 下次递增时间在租赁结束时间之后,按照租赁结束时间计算 int daysToLeaseEnd = (int) ChronoUnit.DAYS.between(currentDate, leaseEndDate); rentPlanList.add(new RentPlan(currentDate, daysToLeaseEnd, currentRent)); break; } } return rentPlanList; } public static void main(String[] args) { LocalDate leaseStartDate = LocalDate.of(2021, 3, 1); LocalDate leaseEndDate = LocalDate.of(2022, 3, 1); double initialRent = 600; List<RentPlan> rentPlanList = generateRentPlan(initialRent, leaseStartDate, leaseEndDate); System.out.printf("%-12s%-12s%-12s%n", "时间", "天数", "租金"); for (RentPlan rentPlan : rentPlanList) { System.out.printf("%-12s%-12d%-12.2f%n", rentPlan.getStartDate(), rentPlan.getDays(), rentPlan.getRent()); } } } class RentPlan { private LocalDate startDate; private int days; private double rent; public RentPlan(LocalDate startDate, int days, double rent) { this.startDate = startDate; this.days = days; this.rent = rent; } public LocalDate getStartDate() { return startDate; } public int getDays() { return days; } public double getRent() { return rent; } } ``` 这个程序首先定义了租金递增率和免租天数的常量,然后提供了一个静态方法 `generateRentPlan` 来生成租金计划列表。该方法接受三个参数:初始月租金、租赁开始时间和租赁结束时间。 具体实现时,我们使用循环来逐月生成租金计划。在每次循环中,我们首先计算下次递增租金的时间和金额。然后根据下次递增时间与租赁开始时间的间隔,决定本次循环处理的天数和租金金额。最后将这些信息保存到一个 `RentPlan` 对象中,并添加到租金计划列表中。 在主函数中,我们使用 `generateRentPlan` 方法生成租金计划列表,并以表格形式输出。输出结果如下: ``` 时间 天数 租金 2021-04-01 30 600.00 2021-05-01 31 636.00 2021-06-01 30 674.16 2021-07-01 31 713.57 2021-08-01 31 754.29 2021-09-01 30 796.39 2021-10-01 31 840.94 2021-11-01 30 887.02 2021-12-01 31 934.72 2022-01-01 31 984.12 2022-02-01 28 1035.30 ``` 可以看到,程序正确地根据递增周期和递增率生成了每个月的租金计划,并且考虑了免租期的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值