整合_整合包 - CSDN
精华内容
参与话题
  • 资源名称:JavaWeb整合开发与项目实战(第二版)内容简介:本书共分3部分,详细介绍了HTML、CSS、Javascript、Servlet、Ajax、JSP等与Java Web前端开发相关的技术,并从应用的角度向读者介绍了Web开发中各种技术...
  • Android多Module合并aar打包 最近项目需要这方面的东西,折磨了我好些时间,做下笔记免得忘记 fat-aar 开发Android几年了,没有百度解决不了的问题,如果有那就谷歌(水平菜,接触不到高深项目)。...

    Android多Module合并aar打包

    最近项目需要这方面的东西,折磨了我好些时间,做下笔记免得忘记

    fat-aar

    开发Android几年了,没有百度解决不了的问题,如果有那就谷歌(水平菜,接触不到高深项目)。在网上找到了 com.kezong:fat-aar:1.2.12(https://github.com/kezong/fat-aar-android),这个算是维护得比较好的,其它不少都没维护了。加上这些配置就行:
    根目录:

    buildscript {
        dependencies {
            classpath 'com.android.tools.build:gradle:3.6.2'
            classpath 'com.kezong:fat-aar:1.2.12'
        }
    }
    

    主module:

    apply plugin: 'com.kezong.fat-aar'
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        embed project(path: ':moduleName', configuration: 'default')
        ...
    }
    

    再就是com.android.tools.build:gradle和gradle-wrapper.properties的配置,这个要按照fat-aar的文档来,这个很重要,gradle更新换代,intermediates变得很不一样,对不上就GG。我配的是,3.6.2和5.6.4,是可行的,同步代码会报错,问题不大,编译能过就行。

    打aar肯定要混淆,这就是折磨我两天的东西了,文档没写,我挨个module都写混淆规则,结果混淆的类都没打进包(原因不明,水平太菜),各个模块下的aar也没有相应的混淆类,-keep的倒是在,找了好多资料突然想起之前看过的一篇文章说fat-aar是通过复制各module编译后的一些资源来合并的,那混淆规则是不是只要写到主module就行了,OK,搞定了。

    编译前资源复制合并

    这个是使用fat-aar之前使用的方式,效果不是很好,而且很麻烦容易犯错。

    思路:很简单,复制Java、资源文件(清单文件等一些奇奇怪怪的资源就得手动合并了,不是不能写,但那可太恶心了)到一个新的module,定义一个核心module,如果资源冲突,以核心module为准,纯体力活。这里贴下代码,也许以后用得上:

    String[] modules = ["moduleNamexxxx", "moduleNamexxxx"];
    String[] manifestAddOrIgnore = ["uses-permission", "permission"];
    
    String centerModule = "centermodule";
    
    task mergeModules (type: Exec){
        mergeManifest(centerModule, modules, manifestAddOrIgnore)
        mergeOnlyCopyContent(modules)
        mergeOnlyCopy(centerModule, modules)
    }
    
    /**
     * 清单文件整合
     */
    def mergeManifest(String centerModule, String[] modules, String[] manifestAddOrIgnore) {
        println("===============mergeManifest===============")
        String manifestPath = "src/main/AndroidManifest.xml";
        for (String aoi : manifestAddOrIgnore) {
            for (String module : modules) {
                handleAddOrIgnoreManifest("../${module}/${manifestPath}", manifestPath, aoi)
            }
        }
    
        copyApplication(centerModule, manifestPath)
        for (String module : modules) {
            if (centerModule != module) {
                copyApplicationValue("../${module}/${manifestPath}", manifestPath);
            }
        }
    }
    
    def copyApplicationValue(String moduleXmlPath, String xmlPath) {
        File original = file(moduleXmlPath)
        File target = file(xmlPath)
    
        XmlParser targetParser = new XmlParser()
        Node targetNode = targetParser.parse(target)
    
        XmlParser originalParser = new XmlParser()
        Node origNode = originalParser.parse(original)
    
        List oApplicationList = origNode.get("application")
        if (oApplicationList.isEmpty()) {
            return
        }
        Node oApplication = oApplicationList.get(0)
        Node tApplication = targetNode.get("application").get(0)
        tApplication.value().addAll(completeComponentName(oApplication, origNode.@package))
    
        new XmlNodePrinter(new PrintWriter(new FileWriter(target))).print(targetNode)
    }
    
    def completeComponentName(Node oApplication, String packageName) {
        List list = oApplication.value()
        String nameValue;
        for (Node n : list) {
            for (Map.Entry entry : n.attributes().entrySet()) {
                if (entry.getKey().getLocalPart() == "name") {
                    nameValue = entry.getValue();
                    if (nameValue.startsWith(".")) {
                        entry.value = packageName + nameValue
                    }
                    break
                }
            }
        }
        return oApplication.value()
    }
    
    def copyApplication(String centerModule, String manifestPath) {
        String moduleXmlPath = "../${centerModule}/${manifestPath}";
        File original = file(moduleXmlPath)
        File target = file(manifestPath)
    
        XmlParser targetParser = new XmlParser()
        Node targetNode = targetParser.parse(target)
    
        XmlParser originalParser = new XmlParser()
        Node origNode = originalParser.parse(original)
    
        List tApplication = targetNode.get("application")
        if (!tApplication.isEmpty()) {
            targetNode.remove(targetNode.get("application"))
        }
        targetNode.append(origNode.get("application").get(0))
    
        new XmlNodePrinter(new PrintWriter(new FileWriter(target))).print(targetNode)
    }
    
    def handleAddOrIgnoreManifest(String moduleXmlPath, String xmlPath, String eleName) {
        File original = file(moduleXmlPath)
        File target = file(xmlPath)
    
        XmlParser targetParser = new XmlParser()
        Node targetNode = targetParser.parse(target)
    
        XmlParser originalParser = new XmlParser()
        Node origNode = originalParser.parse(original)
    
        List targetElements = targetNode.get(eleName)
        List originalElements = origNode.get(eleName)
    
        if (originalElements.isEmpty()) {
            return;
        }
        if (targetElements.isEmpty()) {
            for (Node n : originalElements) {
                targetNode.append(n)
            }
        } else {
            addOrIgnore(targetElements, originalElements, targetNode);
        }
        new XmlNodePrinter(new PrintWriter(new FileWriter(target))).print(targetNode)
    }
    
    static def addOrIgnore(List targetElements, List originalElements, Node target) {
        for (Node oNode : originalElements) {
            if (!isRepeat(oNode, targetElements)) {
                target.append(oNode)
            }
        }
    }
    
    static def isRepeat(Node checkNode, List targetElements) {
        Object nameValue = "";
        for (Map.Entry entry : checkNode.attributes().entrySet()) {
            if (entry.getKey().getLocalPart() == "name") {
                nameValue = entry.getValue();
                break
            }
        }
        for (Node tNode : targetElements) {
            for (Map.Entry<String, Object> en : tNode.attributes().entrySet()) {
                if (en.getKey().getLocalPart() == "name") {
                    if (nameValue == en.getValue()) {
                        return true
                    }
                }
            }
        }
        return false
    }
    
    
    
    /**
     * values文件整合
     */
    def mergeOnlyCopyContent(String[] modules) {
        println("===============mergeOnlyCopyContent===============")
        String colorPath = "src/main/res/values/colors.xml";
        for (String module : modules) {
            mergeValueByName("../${module}/${colorPath}", colorPath)
        }
    
        String stringPath = "src/main/res/values/strings.xml";
        for (String module : modules) {
            mergeValueByName("../${module}/${stringPath}", stringPath)
        }
    
        String stylePath = "src/main/res/values/styles.xml";
        for (String module : modules) {
            mergeValueByName("../${module}/${stylePath}", stylePath)
        }
    }
    
    def mergeValueByName(String moduleXmlPath, String xmlPath) {
        File original = file(moduleXmlPath)
        if (!original.exists()) {
            println("${moduleXmlPath} is not exist")
            return
        }
        File target = file(xmlPath)
        if (!target.exists()) {
            println(xmlPath)
            println("${xmlPath} is not exist")
            copy {
                from moduleXmlPath
                into xmlPath.substring(0, xmlPath.lastIndexOf('/'))
            }
            return
        }
    
        XmlParser targetParser = new XmlParser()
        Node targetNode = targetParser.parse(target)
    
        XmlParser originalParser = new XmlParser()
        Node origNode = originalParser.parse(original)
        for (Node child : origNode.iterator()) {
            if (!updateNode(targetNode, child)) {
                targetNode.appendNode(child.name(), child.attributes(), child.value())
            }
        }
        new XmlNodePrinter(new PrintWriter(new FileWriter(target))).print(targetNode)
    }
    
    static def updateNode(Node targetNode, Node child) {
        for (Node it : targetNode.iterator()) {
            if (it.attributes().get("name") == child.attributes().get("name")) {
                it.setValue(child.value())
                it.attributes().clear();
                it.attributes().putAll(child.attributes())
                return true
            }
        }
        return false;
    }
    
    
    /**
     * 仅仅需要copy的文件整合
     */
    def mergeOnlyCopy(String centerModule, String[] modules) {
        println("===============mergeOnlyCopy===============")
        String javaPath = "src/main/java/";
        for (String module : modules) {
            copyJavaDirFile(module, javaPath)
        }
    
        String resPath = "src/main/res/";
        ArrayList<String> filter = new ArrayList<>()
        filter.add("values");
        for (String module : modules) {
            copyJavaDirFile(module, resPath, filter)
        }
    
        String assetsPath = "src/main/assets/";
        for (String module : modules) {
            copyJavaDirFile(module, assetsPath)
        }
    
        String libsPath = "libs/";
        for (String module : modules) {
            copyJavaDirFile(module, libsPath)
        }
    //
        String sdkPath = "sdk/";
        for (String module : modules) {
            copyJavaDirFile(module, sdkPath)
        }
    }
    
    def copyJavaDirFile(String moduleFileName, String targetDir) {
        copyJavaDirFile(moduleFileName, targetDir, new ArrayList<String>())
    }
    
    def copyJavaDirFile(String moduleFileName, String targetDir, ArrayList<String> dirFilter) {
        String origJavaPath = "../${moduleFileName}/${targetDir}"
        FileTree tree = fileTree(dir: origJavaPath)
        tree.visit { file ->
            if (!file.isDirectory()) {
                String path = file.path;
                println("=======path======" + path)
                if (!filterCheck(path, dirFilter)) {
                    String originPath = origJavaPath + path;
                    String targetPath = targetDir + getParentDir(path);
                    copy {
                        from originPath
                        into targetPath
                    }
                }
            }
        }
    }
    
    static def getParentDir(String path) {
        if (path.contains("/")) {
            return path.substring(0, path.lastIndexOf("/"))
        }
        return "/";
    }
    
    static def filterCheck(String target, ArrayList<String> dirFilter) {
        for (String dir : dirFilter) {
            if (target.contains(dir)) {
                return true
            }
        }
        return false
    }
    

    sourceSets配置资源

    项目最后采用的这种方式,很适合我们的项目,因为res里面的文件非常的少,不用考虑这里面的合并问题,混淆也没啥问题。同事的前同事提供的方案,老实说没想到这种方案。

    思路:配置一个打包核心module,在module里面配置sourceSets来达到目的,具体就不写了,sourceSets的配置CSDN一大堆,肯定比我强。

    不过就算这样仍然遇到了问题,项目针对一些渠道需要在其它module中改代码,但是又不希望改这些代码,模块内处理最好,sourceSets研究了老半天也没整出个所以然,最后干起了老本行——复制代码。

    思路:module中开个渠道,更改的代码写在渠道文件夹的Java下面,然后将其它module的代码复制过来,排除被重新了的代码,通过sourceSets配置资源。贴下代码:

    String[] javaSources = [
            '../module-name/src/main/java',
            ...
    ]
    
    String[] covers = [
            'com/xxx/xxx/xxx/xxxxx.java',
    ];
    
    task syncCode(type: Exec) {
        for (String source : javaSources) {
            copyFrom(source, covers)
        }
    }
    
    def copyFrom(String sourceDir, String[] covers) {
        FileTree tree = fileTree(dir: sourceDir)
        tree.visit {FileTreeElement file ->
            if (!file.isDirectory()) {
                String path = file.path;
                if (!isCover(path, covers)) {
                    String sourceFilePath = sourceDir + "/" + path
                    String targetPath = getTargetPath(sourceDir, path)
                    copy {
                        from sourceFilePath
                        into targetPath
                    }
                }
            }
        }
    }
    
    static def getTargetPath(String sourceDir, String path) {
        // 这里只处理src,有啥奇怪的目录自己处理
        String[] spl = sourceDir.split("/")
        int length = spl.length;
        boolean isJavaDirGet = false;
        List<String> dirs = new ArrayList<>()
        for (int i = length - 1; i >= 0; i--) {
            if (!isJavaDirGet) {
                isJavaDirGet = "java" == spl[i]
            }
            dirs.add(spl[i])
            if ("src" == spl[i] && isJavaDirGet) {
                break
            }
        }
        int size = dirs.size()
        StringBuilder sb = new StringBuilder();
        for (int i = size - 1; i >= 0; i--) {
            sb.append(dirs.get(i)).append("/")
        }
        sb.append(getParentDir(path))
        return sb.toString()
    }
    
    def isCover(String path, String[] covers) {
        boolean isCover = false
        for (String c : covers) {
            if (c == path) {
                println "file ruled out, [path]: ${path}, [c]: ${c}"
                isCover = true;
                break
            }
        }
        return isCover
    }
    
    static def getParentDir(String path) {
        if (path.contains("/")) {
            return path.substring(0, path.lastIndexOf("/"))
        }
        return "/";
    }
    

    写这个主要是为了做笔记,出了啥问题别问候我哈。

    展开全文
  • 整合Nacos组件,环境搭建和入门案例详解1、Nacos基础简介1.1 关键特性1.2 专业术语解释1.3 Nacos生态圈2、SpringBoot整合Nacos2.1 新建配置2.2 核心依赖2.3 Yml配置文件2.4 启动类配置2.5 核心配置类2.6 基础API用例...

    1、Nacos基础简介

    Nacos 是构建以“服务”为中心的现代应用架构,如微服务范式、云原生范式等服务基础设施。聚焦于发现、配置和管理微服务。Nacos提供一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。敏捷构建、交付和管理微服务平台。

    1.1 关键特性

    • 动态配置服务
    • 服务发现和服务健康监测
    • 动态 DNS 服务
    • 服务及其元数据管理

    1.2 专业术语解释

    • 命名空间
      用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。

    • 配置集
      一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。

    • 配置集 ID
      Nacos 中的某个配置集的ID。配置集ID是组织划分配置的维度之一。DataID通常用于组织划分系统的配置集。

    • 配置分组
      Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串对配置集进行(Group)分组,从而区分 Data ID 相同的配置集。

    • 配置快照
      Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。

    • 服务注册
      存储服务实例和服务负载均衡策略的数据库。

    • 服务发现
      使用服务名对服务下的实例的地址和元数据进行探测,并以预先定义的接口提供给客户端进行查询。

    • 元数据
      Nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略等。

    1.3 Nacos生态圈

    Nacos 无缝支持一些主流的开源框架生态:

    • Spring Cloud 微服务框架 ;
    • Dubbo RPC框架 ;
    • Kubernetes 容器应用 ;

    2、SpringBoot整合Nacos

    2.1 新建配置

    2.2 核心依赖

    <!-- Nacos 组件依赖 -->
    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>nacos-discovery-spring-boot-starter</artifactId>
        <version>0.2.3</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>nacos-config-spring-boot-starter</artifactId>
        <version>0.2.3</version>
    </dependency>
    

    2.3 Yml配置文件

    这里把项目作为服务注册到Nacos中。

    nacos:
      config:
        server-addr: 127.0.0.1:8848
      discovery:
        server-addr: 127.0.0.1:8848
    

    2.4 启动类配置

    启动类关联配置中心的dataId标识。

    @EnableSwagger2
    @SpringBootApplication
    @NacosPropertySource(dataId = "WARE_ID", autoRefreshed = true)
    public class Application7017 {
        public static void main(String[] args) {
            SpringApplication.run(Application7017.class,args) ;
        }
    }
    

    2.5 核心配置类

    import com.alibaba.nacos.api.annotation.NacosInjected;
    import com.alibaba.nacos.api.exception.NacosException;
    import com.alibaba.nacos.api.naming.NamingService;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Configuration;
    import javax.annotation.PostConstruct;
    @Configuration
    public class NacosConfig {
        @Value("${server.port}")
        private int serverPort;
        @Value("${spring.application.name}")
        private String applicationName;
        @NacosInjected
        private NamingService namingService;
        @PostConstruct
        public void registerInstance() throws NacosException {
            namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
        }
    }
    

    启动成功后查询服务列表:

    2.6 基础API用例

    @Api("Nacos接口管理")
    @RestController
    @RequestMapping("/nacos")
    public class NacosController {
    
        @NacosValue(value = "${MyName:null}", autoRefreshed = true)
        private String myName;
        @NacosValue(value = "${project:null}", autoRefreshed = true)
        private String project;
    
        @ApiOperation(value="查询配置信息")
        @GetMapping(value = "/info")
        public String info () {
            return myName+":"+project;
        }
    
        @NacosInjected
        private NamingService namingService;
    
        @ApiOperation(value="查询服务列表")
        @GetMapping(value = "/getServerList")
        public List<Instance> getServerList (@RequestParam String serviceName) {
            try {
                return namingService.getAllInstances(serviceName) ;
            } catch (Exception e){
                e.printStackTrace();
            }
            return null ;
        }
    }
    
    展开全文
  • HTML大整合

    万次阅读 2020-06-27 14:55:45
    ...有各种标签组成,用来制作网页,告诉浏览器如何显示页面 2.作用 制作网页,控制网页和内容的显示 插入图片、音乐、视频、动画等多媒体 通过链接来检索信息 使用表单获取用户的信息,实现交互 ...

    一、HTML简介

    1.HTML是什么?

    HTML:htper text markup language超文本标记(标签)语言

    有各种标签组成,用来制作网页,告诉浏览器如何显示页面

    2.作用
    • 制作网页,控制网页和内容的显示
    • 插入图片、音乐、视频、动画等多媒体
    • 通过链接来检索信息
    • 使用表单获取用户的信息,实现交互
    3.版本

    w3c:world wide web consortium万维网联盟,制定web技术相关标准和规范的组织,HTML激素hi由w3c制定的标准

    两个版本:HTML4.0.1、HTML5.0-----通常H5

    官网:http://www.W3shcool.com.cn

    4.扩展名

    HTML文档是以.html或.htm结尾

    二、HTML文档结构

    1.基本结构

    1.1简介
    • HTML标签是由尖括号括起来的关键词,如,通常是成对出现的,如<html></html>
    • <html>为根标签,包含: <head>头部和<body>主体部分
    • 头部提供关于网页的相关信息,如标题、文档类型、字符编码、关键字等摘要信息
    • 主体部分提供网页的显示内容,真正显示在页面中的内容
    • 合理的进行缩进
    • 标签名不区分大小写,但是一般要用小写
    1.2.开发工具

    记事本notepad、sublime、Notepad++、Dreamweaver、VScode、Webstorm等

    使用步骤:

    1. 新建文件(cltr+N),然后保存(ctrl+s),指定扩展名为.html
    2. 编写HTML代码
    3. 在浏览器中打开文件

    使用技巧:

    • 先保存再写代码,否则代码无颜色提示

    • 创建一个文件夹,用于保存所有的网页内容,将文件夹拖拽到sublime中,便于管理

    • 显示/隐藏侧边栏

      方式1:查看–>侧边栏–>显示/隐藏侧边栏

      方式2:ctrl+K紧接着按B

    • 显示多栏

      方式1:查看–>布局–>列数:2列

      方式2:Alt+shift+2

    1.3浏览器

    常见的浏览器:IE浏览器微软、chrome谷哥浏览器、fifirefox火狐、safari苹果

    浏览器的作用是读取html文件,并以网页的形式来显示

    浏览器不会直接显示html标签,而是使用标签来解释网页的内容

    2.标签
    2.1标签的组成

    一个完整的html标签的组成:

    <标签名 属性名="属性值">内容</标签名>

    <!DOCTYPE html>
    <html lang="en">
    	<head>
    		<meta charset="UTF-8">
    		<title>标签</title>
    	</head>
    	<body  bgcolor="red" text="blue">
    		html从入门到精通!
        </body>
    </html>
    

    属性值要用双撇号括起来,一般用双引号

    2.2标签的分类

    根据标签是否关闭,分为,关闭型和非关闭型

    • 关闭型:有结束标签,即标签成对出现

      <html></html>
      <head></head>
      <title></title>
      
    • 非关闭型:没有结束标签

      <meta>
      <br>
      <h1>....<h6>
      

    根据标签是否独占一行,分为块级标签和行级标签

    • 块级标签:显示为块状,独占一行

      <h1>大家好</h1>
      <hr>
      
    • 行级标签:在行内显示,可与其他内容在同一行显示

      <span></span>

      2.3注释

      注释在浏览器中不会显示,是用来标注解释html语句,但通过查看源代码的方式可以看到

      语法:

      <--注释内容-->

      2.4实体字符

      也称为特殊字符,用于显示一些特殊符号,如<>&空格等

      语法:

      <&实体字符的名称>

      • 2.5文档类型

        在html文档的第一行,使用<!DOCTYPE html>

        声明HTML文档的类型用来告诉浏览器页面的文档嘞型,用来制定html版本的规范

        目前基本上最常用的html5

        <!DOCTYPE html>
        <html lang="en">
        <head>
        	<meta charset="UTF-8">
        	<title>Document</title>
        </head>
        <body>
        	
        </body>
        </html>
        

        三\常用标签

        3.1基本标签

        标签 含义 说明
        br 黄行标签 非关闭性
        p 段落标签 关闭型块级标签\亲啊后有明显的间隔
        h1…h5 标题标签 按照h1到h6逐渐变小.块级标签

      块级标签\亲啊后有明显的间隔 |
      | h1…h5 | 标题标签 | 按照h1到h6逐渐变小.块级标签 |
      | | | |
      | | | |

      img

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    三、常用标签

    1.基本标签

    标签 含义 说明
    br 换行标签 非关闭型
    p 段落标签 关闭型,块级标签,前后段落之间有明显的距离
    h1、h2、…h6 标题标签 按照h1到h6逐渐变小,块级标签,加粗显示
    pre 预格式化标签 保留编码时的格式
    div 分区标签 常用作容器来使用,一般用于页面的布局划分,,块级标签
    span 范围标签 默认没有任何效果,一般用来设置行内的特殊样式
    ol、li 有序列表 有顺序的项目列表
    ui、li 无序列表 无顺序的项目列表
    dl、dt、dd 定义列表 对术语、图片等进行描述而定义的列表
    hr 水平线标签 非关闭型标签,块级标签
    img 图像标签 非关闭型标签,行级标签

    1.1 有序列表
    ol:ordered listli:list item默认使用阿拉伯数字、从1开始标记,可以通过属性进行修改
    · type属性:设置列表的符号标记、取值;数字1(默认)、字母(a或A)、罗马数字(i或I) · start属性:设置起始值,值必须是数字
    1.2 无序列表
    ul:unodered list
    li:list item
    默认情况下使用实心圆表作为符号标记,可以通过属性进行修改
    · type属性:设置列表的符号标记、取值:disc实心圆(默认)、circle空心圆、square正方形、none不 显示项目符号
    1.3 定义列表
    dl:definition list
    dt:definition title
    dd:definition description
    1.4 水平线标签
    hr:horizontal
    常用属性:
    · color:颜色

    两种方式:

    颜色名称:如red、green、blue、white、black、pink、orange等

    16进制的RGB表示法:Red、Green、Blue用法:#RRGGBB 每种颜色的取值范值0-255,转换为16 进制00-FF

    如: #FF0000 红色 #00FF00绿色 #0000FF蓝色 #FFFFFF白色、#CCCCCC #FF7300桔色

    · size:粗细,数值

    · width宽度

    ​ 两种写法:

    ​ 像素:绝对值(固定值)

    ​ 百分比:相对值,相对于水平线标签所在父容器宽度的百分比

    · align对齐

    ​ 取值:center居中 left right
    1.5图像标签
    img:image
    常见的图片格式:.jpg .png .gif .bmp
    常见的属性:
    · src:source指定图片的路径(来源),必选叁数

    如果图片与html源代码在同一个文件夹中,可以直接在src中写图片名称即可

    习惯上,我们会将多个图片与html代码文档分别放在同一个文件夹project中的不同目录下,此时需要 在src中指定图片的路径为相对路径

    路径的分类:

    ​ · 相对路径

    ​ 表示: ./当前路径
    …/当前位置的上一级文件夹

    ​ 提示:…/image

    ​ · alt:当图片无法显示时显示的提示信息

    ​ · title:当鼠标放到图片上时显示的提示信息

    ​ · width和 height:设置图片的宽度和高度
    默认图片以原始尺寸显示

    ​ 如果只设置其中一个,则另一个会按比例缩放

    ​ 如果同时设置宽和高,可能导致图片变形

    ​ 两种写法:

    ​ 像素:绝对值(固定值)

    ​ 百分比:相对值,相对于父容器的尺寸的百分比
    2.其他标签

    标签 含义 说明
    i 斜体标签 italic
    em 强调的内容 在浏览器中显示时一般为斜体
    address 地址 在浏览器中显示时一般为斜体,块级标签
    b 加粗显示 bold
    strong 强调的内容 在浏览器中显示时一般为加粗显示
    del 删除线 delete
    ins 下划线
    sub 下标
    sup 上标
    bdo 设置文本的方向 通过属性dir=“ltr” left to right “rtl” right to left从右 至左
    abbr 设置文字缩写 通过title属性设置当鼠标停留在文字上时显示的提示 内容
    small 相对于当前文本的字号缩小一 号
    big 相对于当前文本的字号增大一 号

    为了更好语义化
    3.头部标签
    · meta定义网页的摘要信息,如字符编码,关键词,描述,作者等
    · title定义网页的标题
    · style定义内容css样式
    · link引用外部css样式
    · script定义或引用脚本
    · base定义基础路径
    默认以当前页面文件所在的位置为相对路径参照
    4.标签嵌套
    一个标签中嵌套另外一个标签
    标签不能乱嵌套
    浏览器渲染后显示的页面代码与编码时有所不同
    chrome浏览器提供的开发工具:帮助开发人员查看和调试页面的
    如何打开:
    · Elements:从浏览器的角度来看页面,浏览器渲染页面时内部的结构
    · console:控制台,显示各种警告和错误信息
    · network:查看网络请求信息,浏览器向服务器请求了哪些资源,资源大小,
    加载资源所消耗的时间
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    !在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、超链接
    1.简介
    使用超链接可以从一个页面跳转到另外一个页面,实现页面之间导航
    当鼠标移动到超链接文本或图片时,鼠标箭头会变成一只小手
    超链接有三种类型:
    普通链接/页面间的链接,跳转到另一个页面 锚链接:链接到锚点(链接到同一个页面的指定位置) 功能链接:实现特殊功能(发邮件,下载)
    2.基本用法
    使用 标签来创建超链接
    语法格式:

    常用属性:
    href:链接地址或路径,链接地址

    world

    链接文本或图片

    1 2 3 4 5 1 target:链接打开的位置,取值

    路径分类:
    绝对路径 以根开始的路径
    file:///D:/software/b.html https://www.baidu.com/img/bd_logo1.png
    相对路径 相对于当前页面文件所在的路径,不是以根开始的路径 ./ 当前路径 …/ 当前位置上一级目录

    3.锚链接
    3.1简介
    点击链接后跳转到某一个页面的指定位置(锚点anchor)
    锚链接的分类:
    页面内的锚链接 页面间的锚链接
    3.2 页面内的锚链接
    步骤:

    1. 定义锚点(标记)
    2. 链接锚点
      _self 自身,当前,默认值 _blank新的,空白的 _parent父层框架 _top顶层框架
      目标位置
      1 2 3 4
      1

    3.3 页面间的锚链接

    4.功能链接
    5.URL
    5.1 简介
    URL:Uniform Resource Locator 统一资源定位器,用来定位资源所在的位置,最常见的就是网址

    5.2 组成
    一个完整的URL由8个部分组成:
    协议:prococol 如 http:超文本传输协议,用来访问WEB网站Hyper text Transfer protocal https:更加安全的协议 SSL安全套接子层 ftp文件传输协议,用来访问服务器上的文件,实现文件的上传和下载File Transfer protocol file:文件协议,用来访问本地文件 主机名hostname服务器地址或服务器Netbios名称,如www.baidu.com ftp://10.255.254.254 端口:port位于主机名的后面,使用冒号进行分隔 不同的协议使用不同的端口,如http使用80端口,https使用的443端口,ftp使用20和21 如果使用的是默认端口,则端口可以省略 如果使用的不是默认端口,则必须指定端口http://59.49.32.213:7070/ 路径:path目标文件所在的路径结构,如:www.baidu.com/img/ 资源resource要访问的目标文件,如bd_logo1.png 查询字符串:query string 也称为参数 在资源后面使用?开头的一组名称/值
    链接文本
    链接文本
    https://www.baidu.com/img/bd_logo1.png?name=tom&age=2&sex=male https://www.w3school.com.cn/html/html_quotation_elements.asp file:///C:/Users/Administrator/Desktop/project/code/09.%E5%B8%B8%E7%94%A8%E6%A0%87%E7%A D%BE3.html http://www.sxgjpx.net/ ftp://10.255.254.253/
    1
    1
    1 2 3
    4 5
    名称和值之间以=分隔,多个之间用&分隔,如:name=tom&age=2&sex=male 锚点anchor,在资源后面使用#开头的文本,如#6 身份认证authentication,指定身份信息,如:ftp://账户:密码@ftp.bbshh010.com
    五、表格
    1.简介
    表格是一个规则的行列结构,每个表格是由若干行组成,每行由若干个单元格组成
    table row column
    2.基本结构
    2.1 table标签
    用来定义表格
    常用属性:
    border:表格边框 默认为0 width/height:宽度/高度 bordercolor:边框的颜色 align:对齐方式,取值:left(默认) center居中 right居右 bgcolor:背景颜色 background:背景图片 cellspacing间距:单元格与单元格之间的距离 cellpadding边距:单元格中的内容到边界之间的距离
    2.2 tr标签
    用来定义行:table row
    常用属性:
    align:水平对齐 取值:left(默认) center right valign垂直对齐 取值:top center bottom bgcolor:背景颜色 background:背景图片
    2.3 td标签
    用来定义单元格,table data
    常用属性:align、valign、bgcolor、background
    注意:表格必须是由行组成,行必须由单元格来组成,数据必须放到单元格中
    3.合并单元格
    合并单元格也称为单元格的跨行跨列
    两个属性:
    rowspan 设置单元格所跨的行数 colspan 设置单元格所跨的列数
    步骤:

    1. 在跨越的单元格中设置rowspan/colspan属性 2. 将被跨越的单元格删除
      必须要保证每行的实际列数是相同的,否则表格可能会出错乱
      4.高级标签
      4.1caption标签
      表格的标题标签
      4.2thead标签
      表格的头部table head
      4.3th标签
      表格的头部标题table head title
      一般用在thead中,设置头部的标题,替代td标签,与td的区别,th中的文本会加粗且居中显示
      4.4tbody标签
      表格的主体table body
      4.5tfoot标签
      表格的底部table foot
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    六、表单
    1.简介
    表单是一个包含若干个表单元素的区域,用于获取琐类型的用户数据

    表单元素是允许用户在表单输入信息的元素,如文本框、密码框、单选按钮、复选框、下拉列表、按钮等
    2.表单结构
    2.1表单语法

    1

    2.2form标签
    用来定义表单,可以包含多个表单元素
    常用属性:
    action:提交数据给谁处理,即处理数据的程序,默认为当前页面 method:提交数据的方式或方法,取值:get(默认),post get和post的区别: get:以查询字符串的形式提交,在地址栏中能看到,长度有限制,不安全 post以表单数据组的形式进行提交,在地址栏中看不到,长度无限制,安全 enctype(encode type)编码类型:提交数据的编码,取值:application/X-www-form-urlencoded(默 认)、multipart/form-data(文件上传)
    3.表单元素
    大多数的表单元素都是使用 标签来定义的,通过设置属性type来定义不同的表单元素

    1

    表单元素的类型 含义 说明
    text 单行文本框 省略时默认就是text
    password 密码框 输入的数据是以点号显示,安全
    radio 单选按钮 只能选择其中一个
    checkbox 复选框 可以同时选择多个
    submit 提交按钮 提交表单数据
    reset 重置按钮 重置表单元素为初始值
    image 图像按钮 可以使用图片作为一个按钮,也具有提交的功能
    button 普通按钮 默认无功能
    file 文件选择器 选择要上传的文件
    hidden 隐藏域 在页面不显示,但是会提交,可以用来存储数据

    3.1单行文本框
    常用属性:
    ·name名称,很重要,如果没有定义name属性,则该表单元素的数据是无法提交的

    ·value初始值

    ·size显示宽度

    ·maxlength:大字符数,默认是没有限制

    ·readonly只读:readonly=“readonly”,可简写readonly,即只写属性名

    ·disabled禁用:disabled=“disabled”, 可简写disabled完全禁用

    表单元素被提交的两个条件,1.有name属性2.非disabled

    3.2 单选按钮
    常用属性:

    ·name名称:多个radio的name属性必须相同,才能实现互斥(单选)

    ·value值

    ·checked:是否被选中,两种状态,选中,未选中 checked=“checked” 简写 checked

    3.3 复选框
    常用属性与单选按钮radio类似

    3.4 文件选择器
    常用属性:

    ·name:名称

    ·accept设置可选择的文件类型,用来限制上传的文件类型

    使用MIME格式字符串对资源类型进行限制

    常见的MIME类型:

    ·纯文本:text/plain text/xml text/html

    · 图像:image/png image/jpeg image/gif

    4.特殊表单元素

    表单元素 含 义 说 明
    select 下拉列表
    option 列表选项
    optgroup 选项组 用来对option进行分组
    textarea 文本域/多行文本框 用来创建一个多行文本框

    4.1下拉列表

    select常用属性:

    ·name名称

    ·size行数,同时显示多个选项

    ·multiple允许同时选择多个

    option常用属性:

    ·value选项值

    ·selected设置默认选中项

    optgroup常用属性:

    ·label分组的标签

    4.2文本域

    ·name名称

    ·rows行数

    ·cols列数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5、其他标签

    5.1 label标签

    为表单元素提供标签,当选中label标签中的文本内容时会自动将光标切换到与之相关联的表单元素。

    常用属性:

    ·for必须将该属性值设置为与相关联的表单元素的Id属性值相同。

    注:几乎所有HTML标签都具有id属性,且id值必须唯一。

    5.2 button标签

    也表示按钮,与input按钮类似

    语法:

    1按钮文字或图像

    常用属性:

    ·type按钮的类型,取值: submit(默认)、reset、button

    5.3 fieldset和legend标签

    fieldset标签,对表单元素进行分组

    legend标签,对分组添加标题

    七、内嵌框架
    1、简介

    使用iframe可以在一个页面中引用另一个页面,实现复用、灵活

    2、基本用法

    语法:

    1

    常用属性:

    · src:引用的页面

    · width/height宽度/高度 ,像素或百分比

    · frameborder是否显示边框,取值:1(yes) 0(no)—默认

    · scrolling是否显示滚动条,取值:yes no auto

    · name属性 为框架定义名称

    3、在框架中打开链接

    1

    2

    3链接的文本或图像

    八、HTML5简介

    1、发展

    W3C于1992年12月发布了HTML4.0.1标准
    W3C于2014年10月发布了HTML5标准

    2、特点

    · 取消了过时的标签,如font、center等,它们仅具有展示外观的功能

    · 增加了一些更具有语义化的标签,如header、footer、aside等

    · 增加了一些新功能标签,如canvas、audio、video

    · 增加了一些表单控件,如email、date、time、url、search等

    · 可以直接在浏览器中绘画(canvas),无需flash

    · 增加了本地存储的支持

    3、兼容性

    http://caniuse.com

    提供了各种浏览器版本对HTML5和CSS规范的支持度

    九、HTML5新增内容
    1、结构相关的标签

    用来进行页面结构布局,本身无任何特殊样式,需要使用CSS进行样式设置

    · article定义一个独立的内容,完整的文章

    · section定义文档的章节、段落

    · header文章的头部、页眉、标题

    · footer文章的底部、页脚、标注

    · aside定义侧边栏

    · figure图片区域

    · figcaption为图片区域定义标题

    · nav定义导航菜单

    结构标签只是表明各部分的角色,并无实际的外观样式,与普通div相同

    2、语义相关的标签
    2.1 mark标签
    标注,用来突出显示文本,默认添加黄色背景
    2.2 time标签
    定义日期和时间,便于搜索引擎智能查找
    2.3 details和 summary标签
    默认显示summary中的内容,点击后显示details中的内容
    注:并不是所有的浏览器都兼容,chrome、opera支持、Firefox、IE浏览器不支持
    2.4 meter标签
    计数仪,表示度量
    常用属性:

    · max定义大值,默认为1

    · min定义小值,默认为0

    · value定义当前值

    · high定义限定为高的值

    · low定义限定为低的值

    · optimum定义佳值

    规则:

    1. 如果optimum大于high,则表示值越大越好

    当value大于high时为绿色

    当value在low与high之间时为黄色

    当value小于low时为红色

    1. 如果optimum小于low,则表示值越小越好

    当value小于low时为绿色

    当value在low与high之间时为黄色

    当value大于high时为红色

    1. 当optimum介于low和high之间,则表示值在low和high之间好

      当value在low与high之间时显示绿色,否则显示黄色

    2.5 progress标签
    进度条,表示运行中的进度
    常用属性:

    · value定义当前值

    · max定义完成的值

    3.表单相关
    3.1 新增表单元素
    新增以下type类型:

    · email接收邮箱

    · url接收URL

    · tel接收电话号码,目前仅在移动设备上有效

    · search搜索文框

    · number/range接收数字/数字滑块,包含min,max,step属性

    · date/month/week/time/datetime日期时间选择器,兼容性不好

    · color颜色拾取

    作用:

    · 具有格式校验的功能

    · 可以与移动设备的键盘相关联

    3.2新增表单属性
    form标签的属性:

    · autocomplete是否启动表单的自动完成功能, 取值:on(默认)、off

    · novalidate提交表单时不进行校验,默认会进行表单校验

    3.3 新增表单元素的属性
    新增表单元素属性:input/select/textarea等

    · placeholder提示文字

    · required是否必填

    · autocomplete是否启用该表单元素的自动完成功能

    · autofocus设置初始焦点元素

    · pattern使用正则表达式(RegExp后面会讲解),进行数据校验

    · list使文本元素具有下拉列表的功能,需要配合datalist和option标签一起使用

    · form可以将表单元素写在form标签外面,然后通过该属性关联指定的表单

    4、多媒体标签
    4.1audio标签
    在页面中插入音频,不同的浏览器对音频格式的支持不一样
    audio常用属性:

    · src音频文件的来源

    · controls是否显示控制面板,默认不显示

    · autoplay是否自动播放,默认不自动播放

    · loop是否循环播放

    · muted是否静音

    · preload是否预加载,取值:none不预加载、auto预加载(默认)、metadata只加载元数据

    如果设置了autoplay属性,则该属性无效

    可以结合source标签使用,指定多个音频文,浏览器会检测并使用第一个可用的音频文件

    4.2 video标签
    在页面中插入视频,不同的浏览器对视频格式的支持不一样
    用法与audio标签基本相同,增加属性:

    · widht/height视频播放器的宽度/高度

    · poster在视频加载前显示的图片

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    案例1hello.html

    <html>
    	<body>
    		<tiele>HTML技术</tiele>
    	</body>
    	<body>
    		大家好,欢迎学习html技术!
    	</body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h271e4v6-1593240920352)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例1.png)]

    案例2标签的组成.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>标签</title>
    </head>
    <body text="blue">
    	标签的组成
    	<br>
    	html从入门到精通!
    	<hr>
    	<h1>标签的分类</h1>
    	<hr>
    
    	<h2>标签的分类</h2>
    	<hr>
    
    	<h6>标签的分类</h6>
    	<hr>
    
    	<span>哈哈</span>嘿嘿
    	
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jx6zJE1P-1593240920354)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例2.png)]

    案例3实体字符.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	图书:&lt;&lt;HTML从入门到精通&lt;&lt;
    	<hr>
    
    	北京&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上海&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;广州
    	<hr>
    
    	在HTML中用&amp;lt;表示<小于号
    	<hr>
    
    	“HTML语言” 或 &qout;HTML语言&qout;
    	<hr>
    
    	版权所有&copy; 2000-2020 高教培训
    	<hr>
    
    	&times;关闭符号
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuFLl3hm-1593240920355)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例3.png)]

    案例4常用标签.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	HTML从入门到精通!
    	<br>   <!--换行-->
    	欢迎学习HTML技术
    
    	<hr>
    
    <p>
    	超级文本标记语言是 标准通用标记语言下的一个应用,也是一种规范,一种 标准, 
    HTML
    HTML(16)
    它通过标记符号来标记要显示的网页中的各个部分。网页 文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉 浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。 浏览器按顺序阅读网页 文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的 浏览器,对同一标记符可能会有不完全 相 同的解释,因而可能会有不同的显示效果。
    </p>
    
    <p>
    	简易性:超级文本标记语言 版本升级采用 超集方式,从而更加灵活方便。
    </p>
    	
    
    	<h1>一级标题</h1>
    	<h2>二级标题</h2>
    	<h4>四级标题</h4>
    	<h6>六级标题</h6>
    	<hr>
    			<pre>
    				&lt;&lt;HTML从入门到精通&gt;&gt;
    				欢迎学习HTML技术
    			</pre>
    	
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yw6CHVL1-1593240920356)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例4.png)]

    案例5常用标签2.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<div style="width:400px;height:100px;background:red">导航部分</div>
    	<div style="width:400px;height:500px;background:yellow">正文部分</div>
    	<div style="width:400px;height:100px;background:blue">版权部分</div>
    	<hr>
    
    	iphone XP 不要8888,也不要1888,只要<span style="font-size:50px;color:red">98
    	</span>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qqLIPRpW-1593240920357)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例5.png)]

    案例6常用标签3.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<h3>2020年网络游戏排行榜</h3>
    	<ol type="a" start="3">
    		<li>吃鸡</li>
    		<li>王者农药</li>
    		<li>LOL</li>
    		<li>WOL</li>
    	</ol>
    	<hr>
    
    	<h3>亲爱的同学们</h3>
    	<ul type="disc">
    		<li>冯乐</li>
    		<li>赵宁</li>
    		<li>木木</li>
    		<li>丹丹</li>
    	</ul>
    	<hr>
    
    	<h3>术语的解释</h3>
    	<dl>
    		<dt>LOL</dt>
    		<dd>它是由腾讯公司代理的一款网络游戏,中文称为叫英雄联盟</dd>
    		<dd>它分为pc端和移动端</dd>
    		<dt>HTML</dt>
    		<dd>是一种用来制作网页的标记语言</dd>
    		<dt>JAVA</dt>
    		<dd>是一种跨平台的编程语言</dd>
    	</dl>
    
    
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CZHuTwuN-1593240920359)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例6.png)]

    案例7常用标签4.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<hr color="#FF7300" size="10px">
    	<hr color="red">
    	<hr color="blue" width="400">
    	<hr color="#00FF00" width="50%">
    	<div style="width:600px;height:300px;background:#FF7300">
    		<hr color="red" width="50%" size="9px" align="right">
    	</div>
    	
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7sI2hPAB-1593240920359)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例7.png)]

    案例8常用标签5.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<img src="google.png" alt="图片加载失败...."title="只是一个标志">
    	<hr>
    
    
    
    	<div style="width:800px;height:800px;background:red">
    		<img src="mac(1).jpg" alt=""width="50%">
    		<div style="width:500px;height:500px;background:#CCCCCC">
    			<img src="mac(1).jpg" alt=""width="50%">
    		</div>
    	</div>
    
    	<img src="mac(1).jpg" alt=""width="50%"> 父容器body
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yU93yyiJ-1593240920360)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例8.png)]

    案例9其他标签.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	welcome <i>to</i>HTML! <br>
    	welcome <em>to</em>HTML! <br>
    	welcome to <address>上海市南京东路</address>
    	<hr>
    
    	HTML从<b>入门</b>到精通!
    	HTML从<strong>入门</strong>到精通!
    	<br>
    	原价:<del>188元</del>, 优惠价:<span style="font-size:40px;color:#FF7300">
    	98元</span>
    	<hr>
    	主讲:<ins>hector</ins>
    	<br>
    	<hr>
    	水的分子表达式:H<sub>2</sub>0 <br>
    	2<sup>3</sup>=8
    	<hr>
    	
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XdmsP4or-1593240920362)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例9.png)]

    案例10头部标签.html

    <!DOCTYPE html>
    <html lang="en">
    	<!-- 设置字符编号 -->
    	<meta charset="UTF-8">
    	<!-- 设置关键字 -->
    	<meta name="keywords"content="IT教育,JAVA开发,WEB前端,
    	Aandroid开发,python">
    	<!-- 设置描述信息 -->
    	<meta name="descaription" content="做专业的IT教育.....">
    	<!-- 设置网站作者 -->
    	<meta name="author" content="hector">
    	<!-- 设置网站的跳转 -->
    	<!-- <meta http-equiv="refrest" content="2";url=https://www.
    	baidu.com -->
    	<title>头部标签</title>
    	<!-- 定义内部的CSS样式 -->
    	<style>
    		body{
    			color:red;
    		}
    	</style>
    	<!-- 引用外部的CSS样式文件 -->
    	<link rel="stylesheet" href="CSS样式文件的路径">
    	<!-- 定义或引用脚本 -->
    	<<script>
    		alert("欢迎登录")
    	</script>
    	<!-- 定义一个基础路径 -->
    	<base href="../image/">
    </head>
    <body>
    	IT教育,计算机等级考试--Hrctor
    	<img src="../image/google.png" alt="">
    	<img src="../image/p1.jpg" alt="">
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-445E4McR-1593240920362)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例10.png)]

    案例11标签嵌套.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<script>
    		alert("哈哈! ");
    	</script>
    </head>
    <body>
    	<div style="width:200px;height:200px;background:red">
    		<p>
    		hello
    		</p>
    	</div>
    	<p style="width:300px;height:300px;background:green">
    		<div style="width:200px;height:200px;background:blue">
    			worid
    		</div>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IoPZWeC1-1593240920363)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例11.png)]

    案例12超链接.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<a href="http://www.baidu.com">百度</a>
    	<hr>
    	<a href="d:/b.html" target="_self">b</a>
    	<hr>
    	<a href="c.html" target="_blank">c</a>
    	<hr>
    	<a href="../d.html">d</a>
    	<hr>
    	<a href="../../e.html">e</a>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xsXKs86m-1593240920364)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例12.png)]

    案例13锚点链接.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<ol>
    		<li><a href="#first">1 简介</a></li>
    		<li><a href="#second">2 HTML版本</a></li>
    		<li><a href="#three">3 特点</a></li>
    		<li><a href="#four">4 编辑方式</a></li>
    		<li><a href="#five">5 整体结构</a></li>
    		<li><a href="#six">6 相关要求</a></li>
    	</ol>
    
    	<p>
    		<a name="first">简介</a>
        </p>
        <P>
        HTML的英文全称是 Hypertext Marked Language,即超文本标记语言。HTML是由Web的发明者 Tim Berners-Lee和同事 Daniel W. Connolly于1990年创立的一种标记语言,它是标准通用化标记语言SGML的应用。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX, Windows等)。使用HTML语言,将所需要表达的信息按某种规则写成HTML文件,通过专用的浏览器来识别,并将这些HTML文件“翻译”成可以识别的信息,即现在所见到的网页。
        </p>
        <p>  
        自1990年以来,HTML就一直被用作WWW的信息表示语言,使用HTML语言描述的文件需要通过WWW浏览器显示出效果。HTML是一种建立网页文件的语言,通过标记式的指令(Tag),将影像、声音、图片、文字动画、影视等内容显示出来。事实上,每一个HTML文档都是一种静态的网页文件,这个文件里面包含了HTML指令代码,这些指令代码并不是一种程序语言,只是一种排版网页中资料显示位置的标记结构语言,易学易懂,非常简单。HTML的普遍应用就是带来了超文本的技术―通过单击鼠标从一个主题跳转到另一个主题,从一个页面跳转到另一个页面,与世界各地主机的文件链接超文本传输协议规定了浏览器在运行HTML文档时所遵循的规则和进行的操作。HTTP协议的制定使浏览器在运行超文本时有了统一的规则和标准。
        </P>
        <p><a name="second">HTML版本</a></p>
        <p>HTML是用来标记Web信息如何展示以及其他特性的一种语法规则,它最初于1989年由GERN的Tim Berners-Lee发明。HTML基于更古老一些的语言SGML定义,并简化了其中的语言元素。这些元素用于告诉浏览器如何在用户的屏幕上展示数据,所以很早就得到各个Web浏览器厂商的支持。 
        </p>
        <p>HTML历史上有如下版本:  
        ①HTML 1.0:在1993年6月作为互联网工程工作小组(IETF)工作草案发布。<br>
        ②HTML 2.0:1995年1 1月作为RFC 1866发布,于2000年6月发布之后被宣布已经过时。 <br> 
        ③HTML 3.2:1997年1月14日,W3C推荐标准。 <br>
        ④HTML 4.0:1997年12月18日,W3C推荐标准。<br> 
        ⑤HTML 4.01(微小改进):1999年12月24日,W3C推荐标准。<br> 
        ⑥HTML 5:HTML5是公认的下一代Web语言,极大地提升了Web在富媒体、富内容和富应用等方面的能力,被喻为终将改变移动互联网的重要推手。<br>
        </p>
    
        <p><a name="three">特点</a></p>
        <p>
        超级文本标记语言文档制作不是很复杂,但功能强大,支持不同数据格式的文件镶入,这也是万维网(WWW)盛行的原因之一,其主要特点如下: [4] 
        简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便。 [4] 
        可扩展性:超级文本标记语言的广泛应用带来了加强功能,增加标识符等要求,超级文本标记语言采取子类元素的方式,为系统扩展带来保证。 [4] 
        平台无关性:虽然个人计算机大行其道,但使用MAC等其他机器的大有人在,超级文本标记语言可以使用在广泛的平台上,这也是万维网(WWW)盛行的另一个原因。 [4] 
        通用性:另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器。
        </p>
    
        <p><a name="four">编辑方式</a></p>
        <p>
        HTML其实是文本,它需要浏览器的解释,它的编辑器大体可以分为以下几种:
    基本文本、文档编辑软件,使用微软自带的记事本或写字板都可以编写,当然,如果你用WPS来编写,也可以。不过存盘时请使用.htm或.html作为扩展名,这样就方便浏览器认出直接解释执行了。 [7] 
    半所见即所得软件,如:FCK-Editer、E-webediter等在线网页编辑器;尤其推荐:Sublime Text代码编辑器(由Jon Skinner开发,Sublime Text2收费但可以无限期试用)。 [7] 
    所见即所得软件,使用最广泛的编辑器,完全可以一点不懂HTML的知识就可以做出网页,如:AMAYA(出品单位:万维网联盟);FRONTPAGE(出品单位:微软);Dreamweaver(出品单位Adobe)。Microsoft Visual Studio(出品公司:微软):其中所见即所得软件与半所见即所得的软件相比,开发速度更快,效率更高,且直观的表现更强。任何地方进行修改只需要刷新即可显示。缺点是生成的代码结构复杂,不利于大型网站的多人协作和精准定位等高级功能的实现。
        </p> 
    
    
        <p><a name="five">整体结构</a></p>
        <p>
        一个网页对应多个HTML文件,超文本标记语言文件以.htm(磁盘操作系统DOS限制的外语缩写)为扩展名或.html(外语缩写)为扩展名。可以使用任何能够生成TXT类型源文件的文本编辑器来产生超文本标记语言文件,只用修改文件后缀即可。标准的超文本标记语言文件都具有一个基本的整体结构,标记一般都是成对出现(部分标记除外例如:<br/>),即超文本标记语言文件的开头与结尾标志和超文本标记语言的头部与实体两大部分。有三个双标记符用于页面整体结构的确认。 [10] 
        标记符<html>,说明该文件是用超文本标记语言(本标签的中文全称)来描述的,它是文件的开头;而</html>,则表示该文件的结尾,它们是超文本标记语言文件的开始标记和结尾标记。
        </p>
    
        <p><a name="six">相关要求</a></p>
        <p>
        在编辑超文本标记语言文件和使用有关标记符时有一些约定或默认的要求。 [9] 
        文本标记语言源程序的文件扩展名默认使用htm(磁盘操作系统DOS限制的外语缩写为扩展名)或
        html(外语缩写为扩展名),以便于操作系统或程序辨认,除自定义的汉字扩展名。在使用文本编辑器时,注意修改扩展名。而常用的图像文件的扩展名为gif和jpg。 [9] 
        超文本标记语言源程序为文本文件,其列宽可不受限制,即多个标记可写成一行,甚至整个文件可写成
        一行;若写成多行,浏览器一般忽略文件中的回车符(标记指定除外);对文件中的空格通常也不按源程序中的效果显示。完整的空格可使用特殊符号(实体符)“&nbsp(注意此字母必须小写,方可空格)”表示非换行空格;表示文件路径时使用符号“/”分隔,文件名及路径描述可用双引号也可不用引号括起。 [9] 
        标记符中的标记元素用尖括号括起来,带斜杠的元素表示该标记说明结束;大多数标记符必须成对使用,以表示作用的起始和结束;标记元素忽略大小写,即其作用相同,但完整的空格可使用特殊符号“&nbsp(注意此字母必须小写,方可空格)”;许多标记元素具有属性说明,可用参数对元素作进一步的限定,多个参数或属性项说明次序不限,其间用空格分隔即可;一个标记元素的内容可以写成多行。 [9] 
        标记符号,包括尖括号、标记元素、属性项等必须使用半角的西文字符,而不能使用全角字符。 [9] 
        HTML注释由"<!--"号开始,由符号”-->“结束结束,例如<!--注释内容-->。注释内容可插入文本中任何位置。任何标记若在其最前插入惊叹号,即被标识为注释,不予显示。
        </p>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nQwkft9w-1593240920364)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例13.png)]

    案例14页面间的锚点链接.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<ol>
    		<li><a href="13.锚点链接.html#first" target="_blank">
    		简介</a></li>
    		<li><a href="13.锚点链接.html#second" target="_blank">
    		HTML版本</a></li>
    		<li><a href="13.锚点链接.html#three" target="_blank">
    		特点</a></li>
    		<li><a href="13.锚点链接.html#four" target="_blank">
    		编辑方式</a></li>
    		<li><a href="13.锚点链接.html#five" target="_blank">
    		整体结构</a></li>
    		<li><a href="13.锚点链接.html#six" target="_blank">
    		相关要求</a></li>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Z1Yrksq-1593240920366)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例14.png)]

    案例15功能链接.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<a href="../image/hh.gif">点击此处下载图片</a>
    	<br>
    
    	<a href="mailto:422133899@qq.com">联系我们</a>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rSbm5qsd-1593240920366)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例15.png)]

    案例01.表格.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<table border="2" width="400px" height="300px" align="
    	center" bordercolor="red" bgcolor="#cccccc" backgroud
    	="../..image/timg (1).jpg" cellspacing="0" cellpading="1">
    		<tr alige="center" bgcolor="cyain">
    			<td>hello</td>
    			<td>hello</td>
    			<td>hello</td>
    			<td>hello</td>
    		</tr>
    		<tr align="right">
    			<td>hello</td>
    			<td>hello</td>
    			<td>hello</td>
    			<td>hello</td>
    		</tr>
    		<tr align="leign" valign="top">
    			<td>hello</td>
    			<td align="right" bgcolor="blue">hello</td>
    			<td>hello</td>
    			<td>hello</td>
    		</tr>
    		<tr align="right" valign="bottom" background="
    		../../image/hh.gif">
    			<td>hello</td>
    			<td>hello</td>
    			<td>hello</td>
    			<td>hello</td>
    		</tr>
    	</table>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b7NrHKsq-1593240920367)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例01.png)]

    案例02.合并单元格.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<!-- table>(tr>tb{hello$}*4)*4 -->
    	<table border="1" width="500px" height="300px">
    		<tr>
    			<td colspan="4" align="center">hello1</td>
    		</tr>
    		<tr>
    			<td rowspan="3">hello</td>
    			<td>hello2</td>
    			<td>hello3</td>
    			<td>hello4</td>
    		</tr>
    		<tr>
    			<td>hello2</td>
    			<td rowspan="2" colspan="2">hello3</td>
    		</tr>
    		<tr>
    			<td>hello2</td>
    		</tr>
    	</table>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-53fwwown-1593240920368)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例02.png)]

    案例03.表格的高级标签.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<!-- table>(tr>td*4)*6 -->
    	<table border="1" width="500px" height="300px" align="
    	center">
    	<caption><h2>学生基本信息表</h2></caption>
    	<<thead bgcolor="cyan">
    			<td>学号</td>
    			<td>姓名</td>
    			<td>年龄</td>
    			<td>性别</td>
    	</thead>
    	<tbody align="center" bgcolor="yellow">
    	<tr>
    			<td>1001</td>
    			<td>小明</td>
    			<td>19</td>
    			<td></td>
    		</tr>
    		<tr>
    			<td>1002</td>
    			<td>小花</td>
    			<td>18</td>
    			<td></td>
    		</tr>
    		<tr>
    			<td>1003</td>
    			<td>小张</td>
    			<td>19</td>
    			<td></td>
    		</tr>
    		<tr>
    			<td>1004</td>
    			<td>小狗</td>
    			<td>19</td>
    			<td></td>
    		</tr>
    	</tbody>
    		<tfoot bgcolor="#FF7300" align="center">
    			<td width="%25">合计</td>
    			<td colspan="3">4</td>
    		</tfoot>
    	</table>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rbf0ftcZ-1593240920368)(C:\Users\lenovo\Desktop\新建文件夹\静态网页2\案例\result\案例03.png)]

    案例04.表单的基本用法.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<h2>用户注册</h2>
    	<form action="" method="get" enctype="multipart/form-data">
    	用户名:<input type="text" name="usname" maxlength="4" value="
    	碧瑶" readonly="readonly">
    	<br>
    	密  码:<input type="password" name="pwd" size="6">
    	<br>
    	年  龄:<input type="text" name="age" value="18" disabled="">
    	<br>
    	性	别: <input type="radio" name="sex" value="male"><input type="radio" name="sex" value="female" checked><br>
    	爱	好: <input type="checkbox" name="hobby" value="eat" checked>吃饭
    			<input type="checkbox" name="hobby" value="sleep">睡觉
    			<input type="checkbox" name="hobby" value="doudou">打豆豆
    	<hr>
    	头  像: <input type="file" name="head" accept="image/jpg">
    			<input type="hidden" name="usr_id" value="8888">
    	<br>
    	<input type="submit" value="注  册">
    	<input type="reset" value="重  置">
    	<hr>
    	<input type="image" src="../../image/tijiao.gif">
    	<input type="image" src="../../image/chongtian.gif">
    	<hr>
    	<input type="button" value="普通按钮">
    	</form>
    </body>
    </html>

    效果
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X2qAPVMq-1593240920368)(C:\Users\lenovo\Desktop\project\result\案例04-2.png)]

    案例05.特殊表单元素.html

    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	学  历:
    	<select name="degree">
    		<option value="0">--请选择你的学历--</option>
    		<option value="dazhuan">大专</option>
    		<option value="benke" selected>本科</option>
    		<option value="yanjiusheng">研究生</option>
    		<option value="shuoshi">硕士</option>
    	</select>
    	<br>
    	城  市:
    	<select name="city">
    		<optgroup label="山西省>"
    			<option value="taiyuan">太原</option>
    			<option value="datong">大同</option>
    			<option value="changzhi">长治</option>
    		</optgroup>
    		<optgroup label="山东省">
    			<option value="jinan">济南</option>
    			<option value="qingdao">青岛</option>
    			<option value="rizhao">日照</option>
    		</optgroup>
    		<optgroup label="江苏省">
    			<option value="nanjing">南京</option>
    			<option value="suzhou">苏州</option>
    			<option value="yangzhou">扬州</option>
    		</optgroup>
    	</select>
    	<br>
    	服务协议;
    	<textarea name="introduce" rows="10" cols="100"  readonly>
    		请遵守本网站的相关协议和国家的法律法规...
    		请遵守本网站的相关协议和国家的法律法规...
    		请遵守本网站的相关协议和国家的法律法规...
    		请遵守本网站的相关协议和国家的法律法规...
    		请遵守本网站的相关协议和国家的法律法规...
    	</textarea>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-slxqIosF-1593240920370)(C:\Users\lenovo\Desktop\project\result\案例05.png)]

    案例06.其他表单元素.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<fieldset>
    		<legend>个人信息</legend>
    		<label for="name">用户名</label>
    		<input type="text" name="ursname" id="name"><br>
    		<label for="email">邮  箱</label>
    		<input type="text" name="email" id="email"><br>
    	</fieldset>
    
    	<hr>
    
    	<input type="submit" value="提交按钮">
    	<input type="reset" value="重置按钮">
    	<input type="image" src="../../image/tijiao.gif">
    	<input type="button" value="普通按钮">
    	<hr>
    
    	<button type="submit">提交按钮</button>
    	<button type="reset">重置按钮</button>
    	<button type="button">普通按钮</button>
    	<button><img src="../../image/tijiao.gif" alt=""></button>
    	<hr>
    	<fieldset>
    		<legend>院校信息</legend>
    		学号:<input type="text" name="stuld"><br>
    		学校:<input type="text" name="stuSchool"><br>
    		专业:<input type="text" name="stuMajor"><br>
    	</fieldset>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hlv43r7m-1593240920371)(C:\Users\lenovo\Desktop\project\result\案例06.png)]

    案例07.内嵌框架.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<iframe src="top.html" width="100%" height="200px" frameborder="0" 
    	scrolling="auto"></iframe>
    	<h3>主体部分</h3>
    	<br>
    	<a href="01.表格.html" target="hello">01.html</a>
    	<a href="02.合并单元格.html" target="hello">02.html</a>
    	<br>
    	<iframe src="./foot.html" width="600px" height="600px" frameborder
    	="0" name="hello"></iframe>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BvKrpi8R-1593240920371)(C:\Users\lenovo\Desktop\project\result\案例07.png)]

    案例1>.html5新增.结构相关的标签.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<article>
    		<header>标题</header>
    		<section>
    			第一段
    		</section>
    		<section>
    			第二段
    		</section>
    		<footer>脚注</footer>
    	</article>
    
    	<aside>广告</aside>
    
    	<figure>
    		<figcaption>log标识</figcaption>
    		<img src="../../image/facebook.png" alt="">
    		<img src="../../image/google.png" alt="">
    	</figure>
    	<nav>
    		<ul>
    		<li>网页</li>
    		<li>咨讯</li>
    		<li>视频</li>
    		<li>图片</li>
    		<li>知道</li>
    		<li>贴吧</li>
    		<li>采购</li>
    		<li>地图</li>
    	</ul>
    	</nav>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AR5V99DS-1593240920373)(C:\Users\lenovo\Desktop\project\result\案例01…png)]

    案例02.>HTML5新增.语义相关.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	welcome <mark>to</mark> html!
    	<hr>
    	我在<time datetime="2020年2月14日">情人节</time>有个会!
    	<hr>
    	<details>
    		<summary>HTML简介</summary>
    		<p>HTML是一门用来制作网页的标签语言</p>
    		<p>HTML可以包含文本、图像、音频、视频等各种多媒体信息</p>
    	</details>
    	<meter max="100" min="1" value="30"></meter>
    	<hr>
    
    	<meter max="100" min="1" value="90" high="60" low="20" optimum="10"></meter>
    	<hr>
    
    	<meter max="100" min="1" value="90" high="60" low="20" optimum="65"></meter>
    	<meter max="100" min="1" value="30" high="60" low="20" optimum="65"></meter>
    	<meter max="100" min="1" value="10" high="60" low="20" optimum="65"></meter>
    	<hr>
    
    	<meter max="100" min="1" value="10" high="60" low="20" optimum="15"></meter>
    	<meter max="100" min="1" value="65" high="60" low="20" optimum="15"></meter>
    	<meter max="100" min="1" value="40" high="60" low="20" optimum="15"></meter>
    	<meter max="100" min="1" value="15" high="60" low="20" optimum="15"></meter>
    	<hr>
    
    	<meter max="100" min="1" value="15" high="60" low="20" optimum="35"></meter>
    	<meter max="100" min="1" value="70" high="60" low="20" optimum="35"></meter>
    	<meter max="100" min="1" value="40" high="60" low="20" optimum="35"></meter>
    	<hr>
    
    	<progress value="10" max="50"></progress>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PcuZlH7Z-1593240920373)(C:\Users\lenovo\Desktop\project\result\案例02.。.png)]

    案例03>HTML5新增.表单相关.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<form action="" autocomplete="on" id="myform">
    		<label for="email">邮箱</label>
    		<input type="email" name="email" id="email">
    
    		<br>
    		<label for="home">个人主页:</label>
    		<input type="url" name="home" id="home">
    
    		<br>
    		<label for="phone">电话:</label>
    		<input type="tel" name="phone" id="phone">
    
    		<br>
    		<label for="keywords">关键字:</label>
    		<input type="search" name="keywords" id="keywords">
    
    		<br>
    		<label for="num">数字:</label>
    		<input type="range" name="num" id="num" min="1" max="10" step="2">
    
    		<br>
    		<label for="birthday">出生日期:</label>
    		<input type="datetime" name="birthday" id="birthday">
    
    		<br>
    		<label for="color">颜色:</label>
    		<input type="color" name="color" id="color">
    
    		<br>
    		<label for="name">用户名:</label>
    		<input type="text" name="usrname" id="name" placeholder="请输入用户名" required="" autocomplete="on" autofocus="">
    
    		<br>
    		<label for="age">年龄:</label>
    		<input type="text" name="age id="age pattern="\d{1,2}">
    		<br>
    		<label for="city">城市:</label>
    		<input type="text" name+"city" id="city" list="citylist" autocomplete="off">
    		<datalist id="citylist">
    			<option value="1">北京</option>
    			<option value="2">上海</option>
    			<option value="3">深圳</option>
    			<option value="4">广州</option>
    		</datalist>
    		<hr>
    		<input type="submit" form="myform">
    	</form>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ul7yIjAz-1593240920374)(C:\Users\lenovo\Desktop\project\result\案例03…png)]

    案例04>HTML5新增.多媒体相关.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    <!-- <audio src="../../audio/water.mp3" controls="" autoplay=""
    loop="" muted="" preload="metadeta"></audio> -->
    <audio controls="">
    	<source src="../../audio/earth.ogg">
    	<source src="../../audio/water.mp3">
    	您的浏览器不支持audio标签,请更换浏览器
    </audio>
    
    <video src="../../video/volcano.mp4" controls="" width="400px" poster
    ="../../image/ timg (1).jpg"></video>
    </body>
    </html>

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpMsaoe7-1593240920375)(C:\Users\lenovo\Desktop\project\result\案例04…png)]

    <input type="url" name="home" id="home">
    
    	<br>
    	<label for="phone">电话:</label>
    	<input type="tel" name="phone" id="phone">
    
    	<br>
    	<label for="keywords">关键字:</label>
    	<input type="search" name="keywords" id="keywords">
    
    	<br>
    	<label for="num">数字:</label>
    	<input type="range" name="num" id="num" min="1" max="10" step="2">
    
    	<br>
    	<label for="birthday">出生日期:</label>
    	<input type="datetime" name="birthday" id="birthday">
    
    	<br>
    	<label for="color">颜色:</label>
    	<input type="color" name="color" id="color">
    
    	<br>
    	<label for="name">用户名:</label>
    	<input type="text" name="usrname" id="name" placeholder="请输入用户名" required="" autocomplete="on" autofocus="">
    
    	<br>
    	<label for="age">年龄:</label>
    	<input type="text" name="age id="age pattern="\d{1,2}">
    	<br>
    	<label for="city">城市:</label>
    	<input type="text" name+"city" id="city" list="citylist" autocomplete="off">
    	<datalist id="citylist">
    		<option value="1">北京</option>
    		<option value="2">上海</option>
    		<option value="3">深圳</option>
    		<option value="4">广州</option>
    	</datalist>
    	<hr>
    	<input type="submit" form="myform">
    </form>
    
    ```

    效果

    [外链图片转存中…(img-ul7yIjAz-1593240920374)]

    案例04>HTML5新增.多媒体相关.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    <!-- <audio src="../../audio/water.mp3" controls="" autoplay=""
    loop="" muted="" preload="metadeta"></audio> -->
    <audio controls="">
    	<source src="../../audio/earth.ogg">
    	<source src="../../audio/water.mp3">
    	您的浏览器不支持audio标签,请更换浏览器
    </audio>
    
    <video src="../../video/volcano.mp4" controls="" width="400px" poster
    ="../../image/ timg (1).jpg"></video>
    </body>
    </html>

    效果

    [外链图片转存中…(img-vpMsaoe7-1593240920375)]

    展开全文
  • Hive整合HBase完整笔记(亲测)

    万次阅读 2018-03-26 13:35:50
    Hive与HBase整合文档1、 Hive整合HBase配置1.1 拷贝hbase 相关jar包将hbase 相关jar包拷贝到hive lib目录下hbase-client-0.98.13-hadoop2.jarhbase-common-0.98.13-hadoop2.jarhbase-server-0.98.13-hadoop2....

    Hive与HBase整合文档

    1、  Hive整合HBase配置

    1.1   拷贝hbase 相关jar包

    将hbase 相关jar包拷贝到hive lib目录下

    hbase-client-0.98.13-hadoop2.jar

    hbase-common-0.98.13-hadoop2.jar

    hbase-server-0.98.13-hadoop2.jar

    hbase-common-0.98.13-hadoop2-tests.jar

    hbase-protocol-0.98.13-hadoop2.jar

    htrace-core-2.04.jar

    hive-hbase-handler-1.0.0.jar

    zookeeper-3.4.5.jar

    1.2   修改hive-site.xml配置文件

    将上述jar包添加到hive-site.xml配置的hive.aux.jars.path属性中。

       修改hive.zookeeper.quorum属性

        添加hbase.zookeeper.quorum属性,此属性hive-site.xml之前不存在。

    1.3   修改hive-env.sh配置文件

    同默认配置文件中copy一份hive-env.sh文件

    修改hive-env.sh配置文件

    1.4   启动Hive

    上述配置完成之后,通过bin/hive命令启动hive

    如果出现以上输出信息,说明hive整合hbase成功。

    2、  Hive整合HBase后使用

    2.1 准备测试数据

    (1)测试数据文件

    创建测试文件course.csv

    第一列为课程名称,第二列为课程分数

    (2)数据加载到HDFS

    在hdfs文件系统中创建hive-hbase目录,并加载测试数据。

    查看hdfs文件目录

    创建/hive-hbase/course目录

    将course.csv文件上传至/hive-hbase/course目录下

    (3)创建Hive数据库

    进入Hive Shell 客户端创建库course

    (4)创建Hive表

    进入Hive Shell 客户端创建外部表。

    create external table if notexists course.testcourse(cname string,score int) row format delimited fieldsterminated by '\t' stored as textfile location '/hive-hbase/course';

    (5)查看hive表数据

    select * from course.testcourse;

    从查询语句的执行结果可以看出,Hive表中的数据和hdfs上的数据一致。

    2.2 创建Hive内部表

    create table 建表语句声明

    course.hbase_testcourse  所创建的Hive表名称

    (cname string,score int) 所创建Hive表字段

    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 指定使用Hive Storage Handlers

    WITHSERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score")  指定HBase表与Hive表字段映射关系。

    TBLPROPERTIES("hbase.table.name"= "hbase_testcourse"); 指定HBase表名

    内部表创建语句如下:

    create tablecourse.hbase_testcourse(cname string,score int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITHSERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score")TBLPROPERTIES("hbase.table.name" = "hbase_testcourse","hbase.mapred.output.outputtable" = "hbase_testcourse");


    (1)查看Hive中所创建的表

    进入Hive Shell 客户端执行

    hive> use course;

    hive> show tables;

    (2)查看HBase 中所创建的表

    进入HBase Shell 客户端执行

    bin/hbase shell

    2.3 加载数据

     创建完内部表,可以通过Hive支持的insert overwrite 方式将一个表的数据导入HBase。

    下面是对应的执行语句:

    insert overwrite table course.hbase_testcourseselect cname,score from course.testcourse;

     

    2.4 执行查询

    加载完数据后,需要验证一下加载结果是否存在问题,验证一下总记录数。

    select count(*) fromcourse.hbase_testcourse;


    2.5 创建外部表

    创建外部表适用于该表在HBase中已经存在,但在Hive中并没有相关信息。此时可以通过创建外部表的方式,为HBase现有表提供SQL查询条件。而内部表适用于Hive和HBase都没有相关表的情况。

    (1)创建HBase表

    进入HBase Shell客户端执行建表命令

    create 'hbase_test',{ NAME =>'cf'}

    (2)插入数据

    执行以下命令插入数据

    put 'hbase_test','hadoop','cf:score', '95'

    put 'hbase_test','storm','cf:score', '96'

    put 'hbase_test','spark','cf:score', '97'

    (3)查看数据

    执行扫描表操作

    scan 'hbase_test'

    (4)创建Hive外部表

    进入Hive Shell 客户端,创建外部表course.hbase_test,建表命令如下所示:

    create external tablecourse.hbase_test(cname string,score int) STORED BY  'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES("hbase.columns.mapping" =":key,cf:score") TBLPROPERTIES("hbase.table.name" ="hbase_test", "hbase.mapred.output.outputtable" = "hbase_test");

    备注:创建外部表和创建内部表的命令基本一致,唯一的区别就是:创建内部表使用create table,创建外部表使用create external table。

    (5)Hive 查看数据

    执行Hive命令查询HBase 表中的数据。

    select * from hbase_test;

    通过创建外部表可以成功从Hive 查询HBase表中的数据。

     技术交流群:695520445

    展开全文
  • 分享一个强大资源网站整合

    万次阅读 2018-11-26 21:29:26
    https://blog.csdn.net/qq_38354073/article/details/84438184
  • 如今时代,越来越看不懂,创业者叫CEO不叫老板,很高大上,不再睡地板了,到处吹牛逼,动不动就整合资源,作为老一辈吃过苦耐过劳睡过地板的满脸沧桑满肚唠叨的IT创业者,我很是忧虑,也感觉到自已内心的彷徨,...
  • Spring及三大框架整合

    千次阅读 2017-10-26 16:42:07
    课堂笔记 Spring概述 Spring介绍  Spring它是一个一站式的分层轻量级框架。 Spring体系结构    1. core container a) beans与core 它们提供spring框架最基本功能,包含ioc与di ...c) 
  • 系统架构改进--多系统用户整合

    千次阅读 2017-12-12 11:16:31
    单WEB应用登录登出实现原理首先,我们来分析下单Web应用系统登录登出的实现机理。 Web系统登录登出功能,通常属于系统安全管理模块的一部分。登录,意味着用户与系统之间的一次会话开始,登出,意味着本次会话的...
  • SpringBoot 整合Activiti(一)

    万次阅读 热门讨论 2018-01-16 15:35:23
    最近在学习Activiti工作流,学习过程整理下,方便以后回顾。 我这里用的Activiti版本是5.22,考虑后面应该会做在线绘制流程图,而6.0版本网上信息过少。。。(如下配置6.0也可试用) ... 项目目录结构如下:
  • SpringBoot整合Elasticsearch

    万次阅读 多人点赞 2020-04-19 00:33:11
    1 SpringBoot整合Spring Data Elasticsearch Elasticsearch提供的Java客户端有一些不太方便的地方: 很多地方需要拼接Json字符串,在java中拼接字符串有多恐怖你应该懂的 需要自己把对象序列化为json存储 查询...
  • 应该是跟VDP有关,可能是由隐藏的快照之类的。 解决办法:新生成快照后再删除或者是克隆一下再删除,可以去除这个告警。
  • SpringMVC、Spring、Mybatis整合开发,包含了PPT进行讲解和实例展示如何进行整合开发,快速上手SSM框架,能进行一般的业务逻辑的开发,希望此项目可以帮助你进行学习
  • 数据整合(Data Consolidation) 数据整合(Data Consolidation)的概念数据整合是把在不同数据源的数据收集、整理、清洗,转换后(有点像ETL)加载到一个新的数据源,为数据消费者提供统一数据视图的数据集成方式...
  • 下载加我2691784946QQ
  • SpringBoot整合Hbase

    千次阅读 2020-05-14 17:39:30
    接下来是用Spring整合Hbase的实际案例,且在最后会给出整合中可能会出现的问题,以及解决方案。这里我是用本地Windows的IDEA,与局域网的伪分布Hbase集群做的连接,其中Hbase集群包括的组件有:Jdk1.8、Hadoop2.7.6...
  • 转载请注明:来自http://blog.csdn.net/M_ChangGong/ 作者:...Spring2.5+Struts2+Jpa的整合跟Spring2.5+Struts1.3.8+Jpa的整合过程非常相似:第1步:Spring2.5+Jpa进行整合。第2步:在整合完毕的Spring2.5+Jpa的基础上进
  • Spring和ActiveMQ的整合实例源码

    千次下载 热门讨论 2020-07-30 23:32:18
    此实例基于Spring+JMS+ActiveMQ+Tomcat,注解的完整实例,包含jar包
  • Struts2整合Spring的两种方式(最新)

    千次阅读 2017-08-07 01:12:29
    方式一只需要在项目中引入struts2-spring-plugin-2.2.1.1.jar这个Jar包就可以了。这个Jar包引入之后确保web.xml中加载了spring配置,否则会报空指针异常(原因是方式一会自动在spring配置文件中找action依赖的...
  • 1. 快速实现篇(实现最基本的登录): ...SpringBoot 整合 Security(一)实现用户认证并判断返回json还是view SpringBoot 整合 Security(二)实现验证码登录 SpringBoot 整合 oauth2(三)实现 token 认证 S...
1 2 3 4 5 ... 20
收藏数 761,978
精华内容 304,791
关键字:

整合