当前位置: 首页 > news >正文

HTML5和CSS3新增特性

HTML5的新特性

HTML5新增的语义化标签

HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。

这些新特性都有兼容性问题,基本是 IE9+ 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这 些新特性。

好图当赏

一千布局我们是用div来做的,但是div对搜索引擎来说是没有语义的

<div class=“header”> </div> 
<div class=“nav”> </div> 
<div class=“content”> </div> 
<div class=“footer”> </div> 

HTML5新增了语义化标签:

 

tips:

这种语义化标准主要是针对搜索引擎的

这些新标签页面中可以使用多次

在IE9中,需要把这些元素转换为块级元素

HTML5新增的多媒体标签

 新增的多媒体标签主要包含:

音频:<audio>

视频:<video>

使用他们可以更方便的在页面中嵌入音频和视频,而不再使用flash和其他浏览器插件 

HTML5 在不使用插件的情况下,也可以原生的支持视频格式文件的播放,支持的格式是有限的

当前<video>元素支持三种视频格式,尽量使用MP4格式

<video src="文件地址" controls="controls"></video> 

 有些低版本浏览器可能不支持这个格式

video有一些常见的属性:

关于音频,当前的 <audio>元素支持三种音频格式:

<audio src="文件地址" controls="controls"></audio> 
< audio controls="controls" > <source src="happy.mp3" type="audio/mpeg" > <source src="happy.ogg" type="audio/ogg" >
</ audio> 

音频的常见属性:

 

谷歌浏览器吧音频和视频的自动播放给禁止了 

多媒体标签总结:

HTML5新增的input类型

 语义化会更明显

我们需要重点记住number tel search这三个

有了这个提交表单如果格式不一样会报错

HTML5新增的表单属性

 我们可以通过以下的方式修改placeholder里面的字体颜色:

input::placeholder { color: pink; } 

CSS3的新特性

CSS3现状

新增的CSS3特性有兼容性问题,ie9+才支持

移动端支持优于PC端

不断的改进中

应用相对广泛

CSS新增选择器

CSS新增的选择器可以更加便捷更加自由的选择目标元素

属性选择器

属性选择器可以根据元素特定的属性来选择元素,这样就可以不用借助类或者id选择器

 看到了吗孩子这就是属性选择器

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>input[value]{color: pink;}</style>
</head>
<body><input type="text" value="请输入"><input type="text">
</body>
</html>

 

类选择器,属性选择器,伪类选择器的权重为10

结构伪类选择器

结构伪类选择器主要根据文档结构来选择器元素,经常用于根据父级选择器里面的子元素

这个nth-child可以选择某个父元素的一个或者多个特定的子元素

n可以是数字,关键字和公式

n如果是数字,就是选择第n个子元素,里面的数字从1开始

n 可以是关键字:even 偶数,odd 奇数

n 可以是公式:常见的公式如下 ( 如果n是公式,则从0开始计算,但是第 0 个元素或者超出了元素的个数会被忽略 )

 

这俩的区别:

1. nth-child 对父元素里面所有孩子排序选择(序号是固定的)

先找到第n个孩子,然后看看是否和E匹配

2. nth-of-type 对父元素里面指定子元素进行排序选择

先去匹配E ,然后再根据E找第n个孩子

小结

 

伪元素选择器

伪元素选择器可以帮助我们利用CSS创建新标签元素,而不需要HTML标签从而简化HTML结构

tips:

1.before 和 after 创建一个元素,但是属于行内元素

2.新创建的这个元素在文档树中是找不到的,所以我们称为伪元素

3.语法: element::before {}

4.before 和 after 必须有 content 属性

5.before 在父元素内容的前面创建元素,after 在父元素内容的后面插入元素

6.伪元素选择器和标签选择器一样,权重为 1

伪元素选择器有使用的场景:伪元素字体图标

p::before { position: absolute; right: 20px; top: 10px; content: '\e91e'; font-size: 20px; }

 这就是,,,伪元素选择器

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>p{position: relative;width: 300px;height: 100px;background-color: pink;}p::before {position: absolute;right: 20px;top: 10px;background-color: aqua;content: '>';font-size: 20px;}</style>
</head>
<body><p>你好</p>
</body>
</html>

content是必须要写的,否则显示不出来

伪元素选择器使用场景2:仿土豆效果:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.tudou{position: relative;width: 500px;height: 400px;}.tudou img{width: 100%;height: 100%;}.tudou::before{display: none;position: absolute;top: 0;left: 0;width: 100%;height: 100%;content: '';background-color: rgb(0,0,0,0.4);}.tudou:hover::before{display: block;}</style>
</head>
<body><div class="tudou"><img src="./1714915128_new_IMG-20240503-WA0094.jpg" alt=""></div>
</body>
</html>

 

就是这个

然后伪元素还有一个使用场景是:伪元素清除浮动

伪元素清除浮动

1.额外标签法也称为隔墙法,是W3C推荐的做法

2.父级添加overflow属性

3.父级添加after伪元素

4.父级添加双伪元素

这个要求新的空标签必须是块级元素

伪元素清除浮动算是第一种额外标签法的升级和优化

CSS3盒子模型

CSS3中可以通过box-sizing来指定盒模型,有两个值:content-box和border-box

这样计算盒子大小的方式就发生了改变

可以分成两种情况:

1. box-sizing: content-box 盒子大小为 width + padding + border (以前默认的)

2. box-sizing: border-box 盒子大小为 width

如果盒子模型我们改为了box-sizing: border-box , 那padding和border就不会撑大盒子了(前提padding 和border不会超过width宽度)

CSS3还有其他特性,了解即可,可以让图片变模糊,计算盒子宽度width:calc函数

filter CSS属性将模糊或颜色偏移等图形效果应用于元素。

filter: 函数(); 例如: filter: blur(5px); blur模糊处理 数值越大越模糊 

calc()此CSS函数让我们声明CSS属性值时执行一些计算

 width: calc(100% - 80px);

括号里面可以使用 + - * / 来进行计算

CSS过渡

这是一个重点的特性,过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。 过渡动画: 是从一个状态 渐渐的过渡到另外一个状态 可以让我们页面更好看,更动感十足,虽然 低版本浏览器不支持(ie9以下版本) 但是不会影响 页面布局。

现在经常和:hover一起搭配使用

transition: 要过渡的属性 花费时间 运动曲线 何时开始; 

1.属性 : 想要变化的 css 属性, 宽度高度 背景颜色 内外边距都可以 。如果想要所有的属性都 变化过渡, 写一个all 就可以。

2. 花费时间: 单位是 秒(必须写单位) 比如 0.5s

3. 运动曲线: 默认是 ease (可以省略)

4.何时开始 :单位是 秒(必须写单位)可以设置延迟触发时间 默认是 0s (可以省略)

过渡就是谁需要就给谁加

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 200px;height: 100px;background-color: pink;transition: width .5s;}div:hover{width: 400px;}</style>
</head>
<body><div></div>
</body>
</html>

如果想要写多个属性,就要利用,进行分割

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 200px;height: 100px;background-color: pink;transition: width .5s,height .5s;}div:hover{width: 400px;height: 400px;}</style>
</head>
<body><div></div>
</body>
</html>

在Linux阶段我们自己手工搓了一个进度条,很原始(我们后端原始人是这样的)

前端可以实现更优雅的进度条(至少看起来是这样,代码难度肯定是后端高)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.bar{width: 250px;height: 10px;border: 1px solid red;border-radius: 7px;padding: 1px;}.bar_in{width: 50%;height: 100%;background-color: red;transition: width .8s;}.bar:hover .bar_in{width: 100%;}</style>
</head>
<body><div class="bar"><div class="bar_in"></div></div>
</body>
</html>

 针对H5和C3有他们自己的相对论

HTML5结构标签本身:

CSS3相关样式:

 

而广义的HTML5是HTML5+CSS3+JS

这是HTML5 MDN的介绍:

https://developer.mozilla.org/zh-CN/docs/Web/Guide/HTML/HTML 

课后作业

制作这样的模块

有点不完全一样但是也还行

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box{height: 300px;width: 200px;background-color: white;}.box1 img{width: 100%;height: 180px;}span{font-size: 14px;color: #707070;}.old{font-size: 22px;color: rgb(226, 49, 49);font-weight: 700;}.new{font-weight: 700;text-decoration: line-through;}.box2{width: 150px;height: 30px;}.box2-in{width: 100px;height: 8px;border: 1px solid red;border-radius: 7px;padding: 1px;}.box2-in-in{width: 50%;height: 100%;background-color: red;transition: width .8s;}.box2-in:hover .box2-in-in{width: 100%;}.box3{width: 200px;height: 50px;color: white;font-weight: 700;background-color: rgb(179, 25, 27);text-align: center;line-height: 50px;}</style>
</head>
<body><div class="box"><div class="box1"><img src="./1714915128_new_IMG-20240503-WA0094.jpg" alt=""></div><span>安分守己,苹果石榴,(128G) 银色移动联通电信5G手机</span><span class="old">$6088</span><span class="new">$6988</span><div class="box2"><div class="box2-in"><div class="box2-in-in"></div></div></div><div class="box3">立即抢购</div></div>
</body>
</html>

这就是前端

相关文章:

HTML5和CSS3新增特性

HTML5的新特性 HTML5新增的语义化标签 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量…...

linux运行vue编译后的项目

如果你的 Vue 项目使用了 history 模式&#xff08;而非默认的 hash 模式&#xff09;&#xff0c;在纯静态服务器中会出现类似的问题。因为 Vue Router 的 history 模式要求所有未匹配的路径都重定向到 index.html&#xff0c;以便 Vue 前端处理路径。 首先在本地执行npm run…...

论文阅读:A Software Platform for Manipulating theCamera Imaging Pipeline

论文代码开源链接&#xff1a; A Software Platform for Manipulating the Camera Imaging Pipelinehttps://karaimer.github.io/camera-pipeline/摘要&#xff1a;论文提出了一个Pipline软件平台&#xff0c;可以方便地访问相机成像Pipline的每个阶段。该软件允许修改单个模块…...

【MySQL篇】持久化和非持久化统计信息的深度剖析(第一篇,总共六篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…...

Ubuntu下安装Qt

1.如图1所示&#xff0c;在Index of /archive上下载安装包&#xff1b; 图1 2.将图1安装包下载好之后&#xff0c;通过共享文件夹的方式拷贝到ubutntu&#xff0c;如图2所示&#xff1b; 图2 3.如图3所示&#xff0c;执行chmod x qt-creator-opensource-linux-x86_64-10.0.2.…...

丹摩征文活动 | AI创新之路,DAMODEL助你一臂之力GPU

目录 前言—— DAMODEL&#xff08;丹摩智算&#xff09; 算力服务 直观的感受算力提供商的强大​ 平台功能介绍​ 镜像选择 云磁盘创建 总结 前言—— 只需轻点鼠标,开发者便可拥有属于自己的AI计算王国 - 从丰富的GPU实例选择,到高性能的云磁盘,再到预配置的深度学习…...

数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undo log、redo log、binlog 作用、MySQL和Redis的区别

数据库&#xff08;总结自小林coding&#xff09;|索引失效的场景、慢查询、原因及如何优化&#xff1f;undo log、redo log、binlog 作用、MySQL和Redis的区别 说一下索引失效的场景&#xff1f;什么是慢查询&#xff1f;原因是什么&#xff1f;可以怎么优化&#xff1f;undo …...

Docker容器运行CentOS镜像,执行yum命令提示“Failed to set locale, defaulting to C.UTF-8”

最近对运维比较感兴趣&#xff0c;以前虽然对公司负责的项目做过运维工作&#xff0c;但用的都是最原始的方法&#xff0c;例如是在阿里云服务器上直接安装jdk&#xff0c;tomcat,redis ,nginx 。这种方式对不大的项目还能够支持&#xff0c;随着项目变大&#xff0c;服务增加&…...

OpenCV基本图像处理操作(六)——直方图与模版匹配

直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的…...

【LLM学习笔记】第四篇:模型压缩方法——量化、剪枝、蒸馏、分解

文章目录 1. 为什么要进行模型压缩2. 模型量化2.1 常见数据类型2.2 浮点数表示2.3 线性量化2.4 非线性量化2.5 挑战2.6 实际应用 3. 模型剪枝4. 模型蒸馏4.1 模型蒸馏的基本流程4.2 模型蒸馏的优势4.3 实际应用 5. 低秩分解&#xff08;低秩近似&#xff09;5.1 基本概念5.2 实…...

python3 自动更新的缓存类

这个类会在后台自动更新缓存数据&#xff0c;你只需要调用方法来获取数据即可。 自动更新缓存类 以下是 AutoUpdatingCache 类的实现&#xff1a; import threading import timeclass AutoUpdatingCache:def __init__(self, update_function, expiry_time60):""&qu…...

英语知识网站开发:Spring Boot框架应用

3系统分析 3.1可行性分析 通过对本英语知识应用网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本英语知识应用网站采用SSM框架&#xff0c;JAVA作为开发语…...

文件上传upload-labs-docker通关

&#xff08;图片加载不出&#xff0c;说明被和谐了&#xff09; 项目一&#xff1a; sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充&#xff1a;环境搭建在Linux虚拟机上的同时&#xff0c;以另一台Windows虚拟机进行测试最…...

git(Linux)

1.git 三板斧 基本准备工作&#xff1a; 把远端仓库拉拉取到本地了 .git --> 本地仓库 git在提交的时候&#xff0c;只会提交变化的部分 就可以在当前目录下新增代码了 test.c 并没有被仓库管理起来 怎么添加&#xff1f; 1.1 git add test.c 也不算完全添加到仓库里面&…...

Doris实战—构建日志存储与分析平台

构建日志存储与分析平台 日志是系统运行的详细记录,包含各种事件发生的主体、时间、位置、内容等关键信息。出于运维可观测、网络安全监控及业务分析等多重需求,企业通常需要将分散的日志采集起来,进行集中存储、查询和分析,以进一步从日志数据里挖掘出有价值的内容。 针…...

【vue3+Typescript】unapp+stompsj模式下替代plus-websocket的封装模块

由于plus-websocket实测存在消息丢失的问题&#xff0c;只能寻找替代的方案&#xff0c;看文章说使用原生的即可很好的工作。而目前在stompjs里需要使用websocket类型的封装模块&#xff0c;看了下原来提供的接口&#xff0c;采用uniapp原生的websocket模式&#xff0c;对原模块…...

Tcon技术和Tconless技术介绍

文章目录 TCON技术&#xff08;传统时序控制器&#xff09;定义&#xff1a;主要功能&#xff1a;优点&#xff1a;缺点&#xff1a; TCONless技术&#xff08;无独立时序控制器&#xff09;定义&#xff1a;工作原理&#xff1a;优点&#xff1a;缺点&#xff1a; TCON与TCONl…...

C#-利用反射自动绑定请求标志类和具体执行命令类

文章速览 概述例程请求类命名空间父类示例子类示例 命令类命名空间子类示例 记录的数据结构实现绑定方法 坚持记录实属不易&#xff0c;希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区&#xff01; 谢谢~ 概述 需求&#xff1a; 将指定的两种类型的…...

高中数学练习:初探均值换元法

文章目录 1. 均值换元法定义2. 均值换元法优点3. 均值换元法应用4. 均值换元法示例4.1 求解分式方程4.2 求解指数方程4.3 计算最大值 5. 实战小结 1. 均值换元法定义 均值换元法是一种数学技巧&#xff0c;通过引入新变量 t t t将两个变量 x x x和 y y y表示为它们的平均值加上…...

数据结构单链表,顺序表,广义表,多重链表,堆栈的学习

单链表 比如一个多项式&#xff0c;主要包括x的系数&#xff0c;x的指数&#xff0c;那么可以创建一个一维数组来存储它的系数和指数&#xff0c;用数组下标来表示。它的系数可以用数组下标对应的数组元素来储存。 可是这样储存会浪费空间所以采用单链表形式来存储。 即创建一…...

【保姆级教程】使用lora微调LLM并在truthfulQA数据集评估(Part 2.在truthfulQA上评估LLM)

上一期我们成功用lora微调了一个模型传送门&#xff0c;怎样评估模型呢&#xff1f;目前LLM没有一个统一的BENCHMARK。我们今天选用truthfulQA。 truthfulQA数据集格式如下所示 {question: What is the smallest country in the world that is at least one square mile in ar…...

thinkphp中对请求封装

请求的封装 //调用 $res Http::post($this->baseUrl . $url,$params,[CURLOPT_HTTPHEADER > [Content-Type: application/json,Content-Length: . strlen($params),],]);<?php namespace fast; /*** 字符串类*/ class Http {/*** 发送一个POST请求*/public static …...

leetcode hot100【LeetCode 215.数组中的第K个最大元素】java实现

LeetCode 215.数组中的第K个最大元素 题目描述 给定一个整数数组 nums 和一个整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;要求排名是从大到小的&#xff0c;因此第 k 个最大元素是排序后的第 k 个元素。你需要设计一个高效的算法来解决这个问题。…...

簡單易懂:如何在Windows系統中修改IP地址?

無論是為了連接到一個新的網路&#xff0c;還是為了解決網路連接問題&#xff0c;修改IP地址都是一個常見的操作。本文將詳細介紹如何在Windows系統中修改IP地址&#xff0c;包括靜態IP地址的設置和動態IP地址的獲取。 IP地址是什麼&#xff1f; IP地址是互聯網協議地址的簡稱…...

Python中的23种设计模式:详细分类与总结

设计模式是解决特定问题的通用方法&#xff0c;分为创建型模式、结构型模式和行为型模式三大类。以下是对每种模式的详细介绍&#xff0c;包括其核心思想、应用场景和优缺点。 一、创建型模式&#xff08;Creational Patterns&#xff09; 创建型模式关注对象的创建&#xff0…...

日历使用及汉化——fullcalendar前端

官网 FullCalendar - JavaScript Event Calendar 引入项目 <link hrefhttps://cdnjs.cloudflare.com/ajax/libs/fullcalendar/5.10.1/main.min.css relstylesheet /><script srchttps://cdnjs.cloudflare.com/ajax/libs/fullcalendar/5.10.1/main.min.js></sc…...

视频截断,使用 FFmpeg

使用 FFmpeg 截取视频并去掉 5 分 49 秒后的内容&#xff0c;可以使用以下命令&#xff1a; ffmpeg -i input.mp4 -t 00:05:49 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 192k output.mp4-i input.mp4&#xff1a; 指定输入视频文件 input.mp4。 -t 00:05:49&#x…...

使用系统内NCCL环境重新编译Pytorch

intro&#xff1a; 费了老大劲,来重新编译pytorch&#xff0c;中间报了无数错误。原生的编译好的pytorch是直接用的其自带NCCL库&#xff0c;并且从外部是不能进行插桩的&#xff0c;因为根本找不到libnccl.so文件。下面记录下重新编译pytorch的过程。指定USE_SYSTEM_NCCL1。这…...

1. Klipper从安装到运行

本文记录Klipper固件从安装&#xff0c;配置到运行的详细过程 Klipper是3D打印机固件之一&#xff0c;它通常运行在linux系统&#xff08;常使用Debian&#xff0c;其它的linux版本也可以&#xff09;上&#xff0c;因此需要一个能运行Linux系统的硬件&#xff0c;比如电脑&am…...

docker 卸载与安装

卸载 查询之前安装的docker, 没有查到则不用卸载删除 yum list installed | grep docker 卸载安装包 yum remove docker-* -y 删除镜像、容器、默认挂载卷 rm -rf /var/lib/docker 安装 -ce 安装稳定版本 -y 当安装过程提示选择全部为 "yes" yum install d…...

南昌企业建站/seo课程培训

题面 \(Solution:\) 一开始想的是先跑一遍最短路&#xff0c;然后拆点之后再跑一遍&#xff0c;比较两次dis&#xff0c;然后发现拆点后会有负环(可能是我没想对拆点的方法)&#xff0c;于是就放弃了拆点法。 我们考虑强制让每头牛选择走一条最短的&#xff0c;有草堆的路径&am…...

网站制作中英文天津/seo综合查询国产

目录 1.开启Hadoop集群和Hive元数据、Hive远程连接 2.配置 3.读取日志文件并清洗 4.单独处理第四列的数据——方法一&#xff1a; 5.单独处理第四列的数据——方法二&#xff1a; 6.单独处理第四列的数据——方法三&#xff1a; 7.数据清洗结果展示 8.存入Hive中 9.…...

jsp做网站遇到的问题/百度竞价点击价格公式

1、修改manifest.json中的id 2、修改包名 转载于&#xff1a;https://www.jianshu.com/p/ce4688b9c856...

品牌全案策划案例/上海谷歌seo

1、类加载机制 虚拟机把描述类的数据从Class文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这就是虚拟机的类加载机制。 2、类加载的时机 类从被加载到虚拟机内存中开始&#xff0c;到卸载出…...

设计说明模板300字/怎么做seo关键词优化

目前常用的DEM有90米、30米、12.5米等精度 90米DEM 90米的DEM数据来自于美国航空航天局NASA SRTM C波段的数据&#xff0c;覆盖了全球南北纬60度以内的区域。有两种精度&#xff0c;分别是1角秒和3角秒精度&#xff0c;也因此被称作SRTM1和SRTM3&#xff0c;两者分别对应精度…...

企业的网站开发费用如何入账/网络营销策划的流程

interactivePopGestureRecognizer是iOS7推出的解决VeiwController滑动后退的新功能,虽然很实用,但是坑也很多啊,用过的同学肯定知道问题在哪里,所以具体问题我就不描述了,这里只给出如何完美解决interactivePopGestureRecognizer卡住的问题. 当然我们要自定义UINavigationContr…...