标签:用于组合表格底部内容。 < tfoot>
tfoot>
下面是一个包括了跨行、跨列和合并单元格的完整HTML表格示例:
DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> Table Example title>
head>
< body>
< table border = " 1" >
< thead>
< tr>
< th colspan = " 3" > 表格标题 th>
tr>
thead>
< tbody>
< tr>
< td rowspan = " 2" > 跨两行 td>
< td> 数据1 td>
< td> 数据2 td>
tr>
< tr>
< td colspan = " 2" > 跨两列 td>
tr>
< tr>
< td> 数据3 td>
< td> 数据4 td>
< td> 数据5 td>
tr>
tbody>
< tfoot>
< tr>
< td colspan = " 3" > 表格底部 td>
tr>
tfoot>
table>
body>
html>
在这个示例中,我们创建了一个表格,其中包括表头、主体和底部。我们使用colspan
属性使表头和底部的单元格横跨三列,使用rowspan
属性使一个单元格纵跨两行。同时,我们在主体的一行中使用colspan
属性使一个单元格横跨两列。
实例代码:课程表
DOCTYPE html >
< html lang = " zh-CN" >
< head>
< meta charset = " utf-8" >
< title> test title>
head>
< body>
< h1 style = " text-align : center; color : red; " > Test h1>
< div>
< table border = " 1" style = " align-items : center; margin : auto; " >
< thead>
< tr>
< th colspan = " 8" > 课程表 th>
tr>
< tr>
< th> 节次 th>
< th> 星期一 th>
< th> 星期二 th>
< th> 星期三 th>
< th> 星期四 th>
< th> 星期五 th>
< th> 星期六 th>
< th> 星期天 th>
tr>
thead>
< tbody>
< tr>
< td> 第一节 td>
< td> A td>
< td> B td>
< TD> C TD>
< TD> D TD>
< TD> E TD>
< td> F td>
< td> G td>
tr>
< tr>
< td> 第一节 td>
< td> A td>
< td> B td>
< TD> C TD>
< TD> D TD>
< TD> E TD>
< td> F td>
< td> G td>
tr> < tr>
< td> 第一节 td>
< td> A td>
< td> B td>
< TD> C TD>
< TD> D TD>
< TD> E TD>
< td> F td>
< td> G td>
tr> < tr>
< td> 第一节 td>
< td> A td>
< td> B td>
< TD> C TD>
< TD> D TD>
< TD> E TD>
< td> F td>
< td> G td>
tr> < tr>
< td> 第一节 td>
< td> A td>
< td> B td>
< TD> C TD>
< TD> D TD>
< TD> E TD>
< td> F td>
< td> G td>
tr> < tr>
< td> 第一节 td>
< td> A td>
< td> B td>
< TD> C TD>
< TD> D TD>
< TD> E TD>
< td> F td>
< td> G td>
tr> < tr>
< td> 第一节 td>
< td> A td>
< td> B td>
< TD> C TD>
< TD> D TD>
< TD> E TD>
< td> F td>
< td> G td>
tr>
tbody>
table>
div>
body>
html>
Test
课程表
节次
星期一
星期二
星期三
星期四
星期五
星期六
星期天
第一节
A
B
C
D
E
F
G
第一节
A
B
C
D
E
F
G
第一节
A
B
C
D
E
F
G
第一节
A
B
C
D
E
F
G
第一节
A
B
C
D
E
F
G
第一节
A
B
C
D
E
F
G
第一节
A
B
C
D
E
F
G
2.12 标签分类
块级元素:
独占一行、内容决定高度、继承父宽、可设置宽高
div、p、h系列 、ul、li、dl、dt、dd、form、header、nav、footer……
行内元素:
一行显示多个、内容决定宽高、不可以设置宽高
a、span 、b、u、i、s、strong、ins、em、del……
行内块元素:
一行可以显示多个、可设置宽高
input、textarea、img 、button、select
属性
效果
使用效率
display: block
转换成块级元素
较多
display: inline-block
转化为行内块元素
较多
display: inline
转化成行内元素
极少
HTML嵌套规范注意点
块级元素一般作为大容器,可以嵌套:文本、块级元素、行内元素、行内块元素等等…
a标签内部可以嵌套任意元素
居中方法总结
CSS
一、CSS简介
CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称. 有时我们也会称之为 CSS 样式表或级联样式表。
CSS 是也是一种标记语言
CSS 主要用于设置 HTML 页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局和外观显示样式。
CSS 让我们的网页更加丰富多彩,布局更加灵活自如。简单理解:CSS 可以美化 HTML , 让 HTML 更漂亮, 让页面布局更简单。
CSS 最大价值: 由 HTML 专注去做结构呈现,样式交给 CSS,即 结构 ( HTML ) 与样式( CSS ) 相分离
CSS的应用方式
内联样式:在标签中包括一个style属性,并在其后定义CSS属性及值,例如:
Hello world!
"color:red"> Hello world!
文档级样式表:将一系列样式规则罗列在HTML文档开头,处于内的之间,它可以改变外部样式表中定义的一个或多个规则,创建一个个性化的文档,适用于单个HTML文件。
外部样式表:将样式定义放置于分离的文档中,在各个需要应用该样式表的HTML通过在内的标签引入这个分离文档,例如。每次打开页面都需要下载这个表格,所以要尽量减小样式表的容量。
注意:三种样式表作用域不同,同时存在时的页面处理原则为:
“近优先于远”——内联样式>文档级样式。
“局部优先于整体”——定义为标签的类的属性>为标签总体进行定义的属性
“特殊优先于一般”——上下文样式>为标签总体进行定义的属性
“后优先于前”——后边指定的属性>前面指定的属性
1.1 CSS语法规范
1.使用 HTML 时,需要遵从一定的规范,CSS 也是如此。要想熟练地使用 CSS 对网页进行修饰,首先需要了解CSS 样式规则。
2.CSS 规则由两个主要的部分构成:选择器以及一条或多条声明。
选择器通常是您需要改变样式的 HTML 元素。
1.选择器是用于指定 CSS 样式的 HTML 标签,花括号内是对该对象设置的具体样式
2.属性和属性值以“键值对”的形式出现
3.属性是对指定的对象设置的样式属性,例如字体大小、文本颜色等
4.属性和属性值之间用英文“:”分开
5.多个“键值对”之间用英文“;”进行区分
CSS声明总是以分号 ; 结束,声明总以大括号 {} 括起来:
p { color : red; text-align : center; }
为了让CSS可读性更强,你可以每行只描述一个属性:
p
{
color : red;
text-align : center;
}
1.2 CSS 注释
注释是用来解释你的代码,并且可以随意编辑它,浏览器会忽略它。
CSS注释以 /* 开始, 以 */ 结束, 实例如下:
p
{
text-align : center;
color : black;
font-family : arial;
}
二、CSS选择器
CSS选择器的作用
选择器(选择符)就是根据不同需求把不同的标签选出来这就是选择器的作用。 简单来说,就是选择标签用的。
h1 { /*h1是选择器,选择h1标签*/
color: red; /* color是标签,red是值*/
font-size: 25px;
}
这里的意思是:找到所有的 h1 标签。 选择器(选对人) 设置这些标签的样式,比如颜色为红色(做对事)。
CSS基础选择器
基础选择器又包括:标签选择器、类选择器、id 选择器和通配符选择器
标签选择器:
标签选择器(元素选择器)是指用 HTML 标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的 CSS 样式。
h1 {
color : red;
font-size : 20px;
}
类选择器
如果想要差异化选择不同的标签,单独选一个或者某几个标签,可以使用类选择器.
语法:
.类名 {
属性1 : 属性值1;
...
}
结构需要用class属性来调用 class 类的意思
"类名"> 变红色
1.如果想要差异化选择不同的标签,单独选一个或者某几个标签,可以使用类选择器。
2.类选择器在 HTML 中以 class 属性表示,在 CSS 中,类选择器以一个点“.”号显示。
3.类选择器使用“.”(英文点号)进行标识,后面紧跟类名(自定义,我们自己命名的)。
4.可以理解为给这个标签起了一个名字,来表示。
5.长名称或词组可以使用中横线来为选择器命名。
6.不要使用纯数字、中文等命名,尽量使用英文字母来表示。
多类名选择器
多类名选择器是CSS中的一个强大功能,它允许你为HTML元素指定多个类名,并按照这些类名来应用样式。当一个元素具有多个类名时,它会继承所有相关类的样式。如果同一个样式属性在多个类中被定义,那么最后一个类的属性值会被应用。
语法:
在HTML中,你可以通过空格分隔每个类名,为元素指定多个类名:
< div class = " class1 class2 class3" > ... div>
在CSS中,你可以通过以下方式选择具有多个类名的元素:
.class1.class2 {
}
.class1 {
}
.class2 {
}
示例:
HTML代码
< div class = " box highlighted" > 这是一个同时具有 box 和 highlighted 类名的元素。 div>
CSS代码
.box {
width: 200px;
height: 200px;
border: 1px solid black;
}
.highlighted {
background-color: yellow;
}
在上面的例子中,元素同时具有
box
和
highlighted
两个类名。所以,它将获得
box
类定义的边框样式,以及
highlighted
类定义的背景颜色样式。
在标签class 属性中写 多个类名
多个类名中间必须用空格分开
这个标签就可以分别具有这些类名的样式
id选择器:
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
HTML 元素以 id 属性来设置 id 选择器,CSS 中 id 选择器以“#" 来定义。
语法:
HTML代码
< div id = " i_Test" > Hello World div>
CSS代码
#id名 {
属性1 : 属性值1;
...
}
注意:id 属性只能在每个 HTML 文档中出现一次
id选择器和类选择器的区别:
1.类选择器(class)好比人的名字,一个人可以有多个名字,同时一个名字也可以被多个人使用。
2.id 选择器好比人的身份证号码,全中国是唯一的,不得重复。
3.id 选择器和类选择器最大的不同在于使用次数上。
4.类选择器在修改样式中用的最多,id 选择器一般用于页面唯一性的元素上,经常和 JavaScript 搭配使用。
通配符选择器
通配符选择器不需要调用, 自动就给所有的元素使用样式
* {
属性1 : 属性值1;
...
}
* {
margin : 0;
padding : 0;
}
序号选择器(用于定位)
序号选择器
意义
用法
:first-child
选择其父元素的第一个子元素
css ul > li:first-child { color: red; }
:last-child
选择其父元素的最后一个子元素
css ul > li:last-child { color: blue; }
:nth-child(n)
选择其父元素的第 n 个子元素
css ul > li:nth-child(2) { color: green; }
:nth-last-child(n)
选择其父元素的倒数第 n 个子元素
css ul > li:nth-last-child(2) { color: purple; }
:only-child
选择其父元素只有一个子元素的元素
css ul > li:only-child { font-weight: bold; }
:first-of-type
选择指定类型的第一个子元素
css p:first-of-type { text-decoration: underline; }
:last-of-type
选择指定类型的最后一个子元素
css p:last-of-type { text-decoration: overline; }
:nth-of-type(n)
选择指定类型的第 n 个子元素
css p:nth-of-type(2) { font-style: italic; }
:nth-last-of-type(n)
选择指定类型的倒数第 n 个子元素
css p:nth-last-of-type(2) { background-color: yellow; }
:only-of-type
选择指定类型且父元素只有一个该类型子元素的元素
css p:only-of-type { text-align: center; }
序号选择器的用法通常涉及到父元素和子元素的关系。通过这些选择器,你可以非常具体地定位到某个元素,无论是基于它在父元素中的位置还是它的类型。在上述的用法示例中,你可以看到如何使用每个序号选择器来应用特定的样式。
选择器总结
基础选择器
作用
特点
使用情况
用法
标签选择器
可以选出所有相同的标签,比如 p
不能差异化选择
较多
p{color: red;}
类选择器
选出具有指定类的元素,比如 .intro
可差异化选择元素
较多
.intro{font-size: 20px;}
ID选择器
选出具有指定ID的元素,比如 #unique
选择唯一的元素
较少
#unique{border: 1px solid;}
属性选择器
根据元素的属性和值来选择元素
灵活且具体
较少
[type="text"]{background-color: blue;}
通配符选择器
选出所有元素
选择范围广泛
较少
*{margin: 0; padding: 0;}
后代选择器
选出某元素的所有后代元素
结构化选择
较多
article p{color: green;}
子元素选择器
选出某元素的直接子元素
结构化且具体
较多
ul>li{list-style: none;}
伪类选择器
根据元素的特定状态来选择元素,比如:hover
状态化选择
较多
a:hover{color: purple;}
伪元素选择器
创建元素的某个部分的样式,比如 ::before
创建虚拟元素
较少
p::before{content: "Read this: ";}
分组选择器
将多个选择器分组,应用相同的样式
合并样式
较多
h1, h2, h3 {color: blue;}
否定选择器
选出不匹配指定选择器的所有元素
反向选择
较少
:not(p){font-style: italic;}
三、CSS 伪类选择器与伪元素
CSS 伪类和伪元素允许你根据元素的特定状态或位置应用样式,而无需添加额外的类或 ID。
1. 基本伪类选择器
伪类
意义
用法
:link
选择所有未被访问的链接
css a:link { color: blue; }
:visited
选择所有被访问过的链接
css a:visited { color: purple; }
:hover
选择鼠标指针浮动在上面的元素
css a:hover { color: red; }
:active
选择活动链接,鼠标点击未松开状态
css a:active { color: green; }
:focus
选择获得焦点的元素
css input:focus { border-color: red; }
注意书写伪类的顺序应该是::link => :visited => :hover => :active,若是单个标签使用多个伪类不按照这个熟悉写会无效。
示例
CSS代码
a {
text-decoration : none;
color : #000000;
}
a:hover {
color : #FF0000;
}
a:active {
color : #0000FF;
}
.p1 {
text-shadow : 3px 3px 2px #000000 ;
}
完整HTML代码
Example
长路's宠物
布丁布丁
$9999.99
在上述 HTML 代码中,我们在
标签内定义了几个基本伪类选择器的样式规则,并在
标签内提供了相应的 HTML 元素来演示这些伪类选择器的效果。具体来说,我们为
标签和
标签分别应用了不同的伪类选择器样式。
2. 新增伪类选择器
伪类选择器
描述
参考代码
:empty
选择空标签(空格不算空标签)
:empty { border: 2px solid red; }
:focus
选择当前获得焦点的表单元素
:focus { border-color: green; }
:enabled
选择当前有效的表单元素
:enabled { background-color: lightgreen; }
:disabled
选择当前无效的表单元素
:disabled { background-color: lightgray; }
:checked
选择当前已经勾选的单选按钮或者复选框
:checked { border: 2px solid blue; }
:root
选择根元素(即可看做标签)
:root { --main-bg-color: pink; background-color: var(--main-bg-color); }
示例
CSS代码
div {
width : 50px;
height : 50px;
border : 1px solid red;
display : inline-block;
}
div:empty {
background-color : blue;
}
input:focus {
background-color : orange;
}
input[type='text']:enabled {
width : 70px;
height : 20px;
}
input:disabled {
background-color : blue;
}
input[type='radio']:checked+span {
color : red;
}
:root {
font-size : 20px;
}
完整HTML代码
DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta http-equiv = " X-UA-Compatible" content = " IE=edge" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> Document title>
< style>
div {
width : 50px;
height : 50px;
border : 1px solid red;
display : inline-block;
}
div:empty {
background-color : blue;
}
input:focus {
background-color : orange;
}
input[type='text']:enabled {
width : 70px;
height : 20px;
}
input:disabled {
background-color : blue;
}
input[type='radio']:checked+span {
color : red;
}
:root {
font-size : 20px;
}
style>
head>
< body>
< div> div>
< div> < span> 123 span> div>
< div> div>
< div> 123 div>
< div> div>
< p>
< input type = " text" >
< input type = " text" >
< input type = " text" disabled >
< input type = " text" disabled >
< input type = " text" >
p>
< p>
< input type = " radio" name = " exercise" > < span> 跑步 span>
< input type = " radio" name = " exercise" > < span> 篮球 span>
< input type = " radio" name = " exercise" > < span> 足球 span>
< input type = " radio" name = " exercise" > < span> 音乐 span>
p>
body>
html>
3. 伪元素
CSS3新增了"伪元素"特性,顾名思义就是表示虚拟动态创建的元素。
伪元素
意义
用法
::first-line
选择元素的第一行
p::first-line { font-weight: bold; }
::first-letter
选择元素的第一个字母
p::first-letter { font-size: 2em; }
::before
在元素之前插入内容
p::before { content: "Important: "; }
::after
在元素之后插入内容
p::after { content: "."; }
::selection
应用被用户选中的部分(一般使用于文字,即使用鼠标圈选的部分)
::selection {color: red;}
伪类选择器和伪元素为开发者提供了强大的功能,使他们能够在不增加额外标记的情况下应用复杂的样式。通过理解和利用这些伪类和伪元素,可以极大地提高CSS的表现力和可维护性。
说明:虚拟创建的内容都会被添加到指定元素的内部。
应用:可以在列表项前面添加小图标。
示例
CSS代码
p::first-line {
font-weight : bold;
}
p::first-letter {
font-size : 2em;
}
p::before {
content : "Important: " ;
}
p::after {
content : "." ;
}
完整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>
p::first-line {
font-weight : bold;
background-color : lightblue;
color : darkblue;
}
p::first-letter {
font-size : 2em;
border : 2px solid red;
}
p::before {
content : "Important: " ;
color : green;
}
p::after {
content : "." ;
font-size : 3em;
}
style>
head>
< body>
< p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla volutpat libero vitae velit facilisis, sit amet luctus elit vulputate. Vivamus vestibulum id magna a tincidunt. p>
body>
html>
在上述代码中,我们使用了四种伪元素选择器 ::first-line
, ::first-letter
, ::before
, 和 ::after
。每种伪元素选择器都能够为元素应用特定的样式或插入新的内容。这些伪元素选择器为开发者提供了更多的样式控制选项,能够帮助创建富有创意和功能的网页设计。
示例1:::before与::after使用
< html>
< style>
a::before {
content : '☆' ;
}
a::after {
content : '❀' ;
}
style>
< body>
< a href = " #" > 点我试试 a>
< a href = " #" > 点我试试 a>
< a href = " #" > 点我试试 a>
< a href = " #" > 点我试试 a>
body>
html>
四、CSS字体属性
字体大小
CSS 使用 font-size 属性定义字体大小。
语法:
p {
font-size : 20px;
}
1.px(像素)大小是我们网页的最常用的单位
2.谷歌浏览器默认的文字大小为16px
3.不同浏览器可能默认显示的字号大小不一致,我们尽量给一个明确值大小,不要默认大小
4.可以给 body 指定整个页面文字的大小
字体粗细
CSS 使用 font-weight 属性设置文本字体的粗细。
语法:
p {
font-weight: bold;
}
属性值
描述
normal
默认值(不加粗)
bold
定义粗体(加粗的)
100-900
400 等同于 normal,而700等同于bold(这两个后面不跟单位)
字体样式
CSS 使用 font-style 属性设置文本的风格。
p {
font-style : normal;
}
属性值
描述
normal
默认值(不加粗)
italic
浏览器会显示斜体的字体样式
字体的综合写法
body { font : font-style font-weight font-size/line-height font-family; }
使用 font 属性时,必须按上面语法格式中的顺序书写,不能更换顺序,并且各个属性间以空格隔开 不需要设置的属性可以省略(取默认值),但必须保留 font-size 和 font-family 属性,否则 font 属性将不起作用
字体总结
属性
表示
注意点
font-size
字号
通常是px像素单位,要带上单位,也可以使用 em, rem, % 等其他单位
font-family
字体
通常包括多个字体名称,作为备选方案。例如: “Helvetica, Arial, sans-serif”
font-weight
字重
常用值有 normal, bold, bolder, lighter 或 100 到 900 之间的数字
font-style
字体样式
常用值有 normal, italic, oblique
line-height
行高
可以是无单位的数字,也可以是具有单位的值,例如 px, em, % 等
text-align
文本对齐
常用值有 left, right, center, justify
text-decoration
文本装饰
常用值有 none, underline, overline, line-through
text-transform
文本转换
常用值有 uppercase, lowercase, capitalize
color
颜色
可以是颜色名称、十六进制代码、rgb 值等多种表达方式
letter-spacing
字母间距
通常使用 px, em 等单位,也可以设置为 normal 表示默认间距
word-spacing
单词间距
通常使用 px, em 等单位,也可以设置为 normal 表示默认间距
属性值
描述
normal
默认值(不加粗)
italic
浏览器会显示斜体的字体样式
字体的综合写法
body { font : font-style font-weight font-size/line-height font-family; }
使用 font 属性时,必须按上面语法格式中的顺序书写,不能更换顺序,并且各个属性间以空格隔开 不需要设置的属性可以省略(取默认值),但必须保留 font-size 和 font-family 属性,否则 font 属性将不起作用
字体总结
属性
表示
注意点
font-size
字号
通常是px像素单位,要带上单位,也可以使用 em, rem, % 等其他单位
font-family
字体
通常包括多个字体名称,作为备选方案。例如: “Helvetica, Arial, sans-serif”
font-weight
字重
常用值有 normal, bold, bolder, lighter 或 100 到 900 之间的数字
font-style
字体样式
常用值有 normal, italic, oblique
line-height
行高
可以是无单位的数字,也可以是具有单位的值,例如 px, em, % 等
text-align
文本对齐
常用值有 left, right, center, justify
text-decoration
文本装饰
常用值有 none, underline, overline, line-through
text-transform
文本转换
常用值有 uppercase, lowercase, capitalize
color
颜色
可以是颜色名称、十六进制代码、rgb 值等多种表达方式
letter-spacing
字母间距
通常使用 px, em 等单位,也可以设置为 normal 表示默认间距
word-spacing
单词间距
通常使用 px, em 等单位,也可以设置为 normal 表示默认间距
你可能感兴趣的:(html,css,前端)
Webpack中的Loader详解
Loader是Webpack中用于处理模块的转换器。它们可以将文件从一种格式转换为另一种格式,比如将TypeScript转换为JavaScript,将SCSS转换为CSS等。使用Loader,可以使Webpack处理各种类型的文件,而不仅仅是JavaScript。1.Loader基础1.1.基础使用Loader就像是一个翻译员,能把源文件经过转化后输出新的结果,并且一个文件还可以链式地经过多个翻译
CST微波工作室学习笔记2 主要特点
raininforest
CST学习 硬件工程
概要基于Windows98/Me、WindowsNT4、Windows2000和WindowsXP的图形用户界面快速并能有效使用内存的有限积分(FI)算法由于理想边界拟合技术和薄片技术的采用,性能更加卓越结构建模基于先进ACIS内核的参量化实体建模前端,并附带优异的结构可视化功能。内含多种建模技术,可快速进行结构变换。可通过SAT(如AutoCAD)、IGES、STEP、ProE、CATIA4、C
基于springboot+mysql+jpa+html实现商品销售信息系统
五星资源
spring boot mysql java
基于springboot+mysql+jpa+html实现商品销售信息系统一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境:二、功能展示三、其它系统四、获取源码一、系统介绍1、系统主要功能:订单管理模块商品管理模块品牌管理模块分类管理模块客户管理模块供应商管理模块2.涉及技术框架:web框架:SpringBoot数据库框架:SpingDataJPA数据库:MySql项目构建工具:
前端领域 Vite 与 Webpack 的深度对比
前端视界
前端 webpack node.js ai
前端领域Vite与Webpack的深度对比关键词:Vite、Webpack、前端构建工具、模块打包、开发体验、性能优化、ESModules摘要:本文深入对比前端领域两大构建工具Vite和Webpack的核心原理、架构设计和使用场景。通过分析它们的底层机制、开发体验、构建流程和性能表现,帮助开发者理解如何在不同项目需求下做出合理选择。文章包含详细的技术原理图解、实际项目对比示例和未来发展趋势分析。背
js获取文件夹中的所有文件和子文件夹
枫叶&情缘
JavaScript jq 前端 javascript 前端 开发语言
获取文件夹中的所有文件和子文件夹打开文件夹/***获取按钮元素并添加点击事件处理函数*/varbtn=document.querySelector('button');btn.onclick=asyncfunction(){//显示文件选择器constdirectoryHandle=awaitwindow.showDirectoryPicker();//处理目录awaitproecssHandle
纯前端本地文件管理器(VSCode风格)(浏览器对本地文件增删改查)
与鱼有约
前端 vscode ide
纯前端本地文件管理器(VSCode风格)(浏览器对本地文件增删改查)简介本项目为一个纯前端实现的本地文件管理器网页(index.html),可在Chrome/Edge浏览器中直接打开,具备类似VSCode的本地文件夹操作体验。无需后端,所有功能均在浏览器端实现。主要功能选择本地文件夹用户点击左上角文件夹按钮,授权后可浏览和操作本地文件夹内容。文件树展示以树形结构展示所选文件夹下的所有文件和子文件夹
WHAT - TTF 和 OTF 字体格式
@PHARAOH
前端 javascript 字体
文章目录基础定义核心区别轮廓技术(绘制字体的“骨架”)功能扩展兼容性文件大小如何选择?一个小贴士更多关于前端开发中字体介绍请阅读:WHAT-前端开发中的字体基础定义格式全称简介TTFTrueTypeFont由苹果和微软在1980年代联合开发的字体格式。OTFOpenTypeFontAdobe和微软开发的更现代的字体格式,基于TTF或PostScript。核心区别轮廓技术(绘制字体的“骨架”)TTF
Vue3 - 详解播放m3u8视频流+HLS拉流推流完整方案,vue3如何播放m3u8格式文件实时视频播放教程(流媒体播放、直播视频流、实时摄像头监控视频流对接、后端服务器切片分片传输视频流边下边播)
王二红
+ Vue3 开发问题汇总 vue3 m3u8 hls vue3播放m3u8视频流教程 vue播放m3u8文件 vue3直播视频流播放 摄像头实时监控画面视频流
前言如果您需要Vue2版本,请访问这篇文章。在vue3(PC端+移动端H5)项目开发中,实现m3u8+hls视频流播放、实时流媒体播放高性能无延迟方案及源码,vue3播放3mu8文件/直播视频流,实时流媒体播放需求、做直播实时传输播放、摄像头监控画面视频流、服务器后端视频切片分段返给前端+边下边播等需求,解决前端网页播放视频流卡顿加载慢、无法载入黑屏、播放不流畅、CORS跨域、安卓苹果浏览器兼容等
Github 2024-11-01 开源项目月报 Top19
老孙正经胡说
github 开源 Github趋势分析 开源项目 Python Golang
根据GithubTrendings的统计,本月(2024-11-01统计)共有19个项目上榜。根据开发语言中项目的数量,汇总情况如下:开发语言项目数量Python项目9TypeScript项目3JavaScript项目3Svelte项目1JupyterNotebook项目1Ruby项目1HTML项目1Rust项目1Java项目1C++项目1Go项目1Python中的算法实现集合创建周期:2831天
用systemd管理GreatSQL服务详解
数据库mysql
用systemd管理GreatSQL服务详解1.GreatSQL服务文件官网greatsql.service文件[Unit]Description=GreatSQLServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targ
JavaScript-异步编程
斜杠青年C
javascript 开发语言 前端
一、日常前端开发使用的异步编程方法回调函数事件监听PromiseGeneratorasync/await二、同步编程和异步编程的区别1、什么是同步同步是执行某段代码时,在该代码没有得到返回结果前,其他代码是无法执行的,但是一旦拿到返回值,就可以执行其他的代码2、什么是异步异步就是当某段代码执行异步过程调用发出后,这段代码不会立刻得到返回结果,而是在异步调用发出之后,一般通过回调函数处理这个调用之后
Nginx 运维实战与 HTML 静态网页开发全攻略
一、技术背景:静态站点的黄金时代1.静态网页的复兴浪潮性能优势:对比动态站点,静态资源响应速度提升60%+,首屏加载时间平均缩短1.2秒(基于WebPageTest实测数据)技术演进:Jamstack架构普及(2024年市场占有率达37%),Hugo、Nuxt.js等静态站点生成器(SSG)推动企业级应用典型场景:企业官网(占比78%)、产品着陆页(转化率提升23%)、博客系统(WordPress
前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理
亿只小灿灿
前端 OpenCV 前端 计算机视觉 opencv
一、OpenCV.js简介与环境搭建OpenCV(OpenSourceComputerVisionLibrary)是一个强大的计算机视觉库,广泛应用于图像和视频处理领域。传统上,OpenCV主要在后端使用Python或C++等语言。但随着WebAssembly(Wasm)技术的发展,OpenCV也有了JavaScript版本——OpenCV.js,它可以直接在浏览器中高效运行,为前端开发者提供了前
数据库设计体系化知识(后端+前端+AI+三高场景+大厂面试+简历包装)
@一叶之秋
Java架构师学习路线 数据库 前端 人工智能 java
数据库设计体系化知识(AI融合版:后端+前端+AI+三高场景+大厂面试+简历包装)一、数据库设计基础:范式理论+AI辅助建模1.核心知识(AI赋能表结构设计)(1)三大范式+AI校验规则落地:用AI代码生成工具(如Copilot)自动校验表结构是否符合范式。→示例:输入“设计学生-班级表”,AI生成符合3NF的表结构,并标注冗余字段风险。后端协同:Java后端通过SchemaValidator工具
推荐使用:webpack的高效EJS模板加载器 —— ejs-compiled-loader
雷柏烁
推荐使用:webpack的高效EJS模板加载器——ejs-compiled-loaderejs-compiled-loaderEJSloaderforwebpack(withoutfrontenddependencies)项目地址:https://gitcode.com/gh_mirrors/ej/ejs-compiled-loader在前端开发的浩瀚星空中,高效的模板引擎和构建工具是构建高性能应
前端面试题整理-场景设计题
C_greenbird
前端学习 前端 javascript css
1.如何使用css画一个三角形借助border实现,在width和height都为0时,设置border,便会呈现三角形。想要哪个方向的三角形,设置其他三边为透明即可。同时,可以通过调整不同边的宽度,来调整三角形的高度和宽度。三角符号/*记忆口诀:盒子宽高均为零,三面边框皆透明。*/div:after{position:absolute;width:0;height:0;content:"";bo
Vue2+Vue3 130~180集学习笔记
Jyywww121
学习 笔记 vue.js
Vue2+Vue3130~180集(Vue3)学习笔记一、create-vue搭建vue3项目create-vue是vue官方新的脚手架工具,底层切换到了vite步骤:查看环境条件node-v版本需要在16.0及以上创建一个vue应用npminitvue@latest这一指令会安装并执行create-vue二、项目目录和关键文件index.html提供挂载点src/assets图片、样式文件的目录
微信小程序|流浪动物救助小程序的设计与实现
qq_469603589
微信小程序 小程序 微信小程序
作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助收藏点赞不迷路关注作者有好处文末获取源码项目编号:L-BS-XZBS-30一,环境介绍语言环境:Java:jdk1
前端 React.js 项目的性能优化的成功案例分析
前端视界
前端艺匠馆 前端 react.js 性能优化 ai
前端React.js项目的性能优化的成功案例分析关键词:React.js性能优化、代码拆分与懒加载、虚拟列表与长列表优化、Webpack深度调优、Fiber架构实践、SSR与SSG落地、React.memo与useCallback最佳实践摘要:本文通过三个真实企业级React项目的性能优化案例,系统解析从性能瓶颈诊断到优化策略落地的完整流程。结合React核心原理(如Fiber架构、虚拟DOMdi
【手写前端面试题01】防抖和节流
全栈前端老曹
javascript 前端 javascript 学习 防抖 节流
《手写防抖和节流:从“打工人”到“时间管理大师”》一、本质理解(别被术语吓到)防抖(debounce)是什么?玩游戏看60秒广告只需要完整看一次就行了,退出去一次重新60秒,别一直退✅核心思想:在事件被触发后,等待一段时间,如果这段时间内没有再次触发,才执行。节流(throttle)又是什么?闪现CD:不管多急,都要等冷却好才能再次使用✅核心思想:多次触发→只按固定频率执行,在一定时间内只允许执行
python爬虫爬百度云盘的资源
oaa608868
百度云 爬虫 python
最近百度云盘不知道为啥不提供资源检索,正好最近看了一下python,正好来练练手,写歌爬虫爬一下百度云盘的资源。分析了一下百度云盘的网友源码和js文件,里面有大量ajax的东西,利用json传输数据,前端显示。话说,这样数据爬去就方便多了,也不要用scrapy啥的,直接解析json数据就好。分析js文件提炼了下面三个链接:URL_SHARE='http://yun.baidu.com/pclo
Vue实例及组件
Yannick_H
Y-Y滴前端日志 基本概念(笔记) vue.js 前端 javascript
目录一、Vue实例的属性和方法1.什么是vue实例:又称为Vue组件(1)Vue2.0创建Vue组件方法(2)Vue3.0创建Vue组件的方法2.Vue组件的属性3.Vue组件中的函数(1)限流函数二、表单数据的双向绑定三、Vue组件的样式绑定1.为HTML标签绑定class属性(1)绑定class属性,由绑定变量来决定应用哪个样式(2)可以将样式直接设置成Vue组件中的数据对象2.绑定内联样式四
大学专业科普 | 计算机应用、视觉与算法
鸭鸭鸭进京赶烤
计算机应用
一、专业概述计算机应用专业是一门实践性很强的学科,专注于将计算机技术转化为实际应用,服务于各个行业和领域,为社会的数字化转型提供人才支撑。二、课程设置专业基础课程:包括计算机组成原理、操作系统、数据结构、计算机网络等,为学生构建坚实的理论基础。专业核心课程:聚焦于程序设计语言(如C、C++、Java、Python等)、数据库原理与应用、软件工程、Web前端开发等,使学生具备开发各类软件系统的能力。
js 允许生成特殊的变量名 基于字符集编码混淆的 XSS 绕过漏洞 -- Google 2025 Lost In Transliteration
A5rZ
网络安全
题目实现了一个字符转换工具在/file路由用户可以通过ct参数自定义Content-Type//文件路由-提供静态文件服务(JS和CSS),支持内容类型验证app.MapGet("/file",(stringfilename="",string?ct=null,string?q=null)=>{//根据文件名查找对应的模板文件string?template=FindFile(filename);i
为了方便学习icss项目上的css技巧,我用next.js写了一个网站
前端next.js
icss-website一、项目简介与定位icss-website是一个基于Next.js14(AppRouter架构)开发的现代化CSS技巧展示平台,致力于为前端开发者、设计师和技术爱好者提供一个高效、优雅、易用的CSS奇技淫巧学习与交流空间。项目以GitHub上的iCSS仓库为内容源,通过API动态获取、分类、展示和高亮CSS相关的文章与代码示例,支持多主题、多语言、响应式布局和丰富的交互体验
探索 Vue.js 组件的最新特性
vue.js
引言:Vue.js作为一款流行的前端框架,始终在不断发展和演进,为开发者带来新的特性和功能,以提升开发效率和用户体验。Vue.js组件是构建Vue应用的基础,其最新特性为开发者提供了更强大的工具和更灵活的开发方式。本文将深入探讨Vue.js组件的一些最新特性,包括组合式API、Teleport、Suspense等,帮助开发者更好地掌握和运用这些特性,从而构建出更加高效、复杂的前端应用。组合式API
【CSS-14-基础样式表Base.css】如何编写高质量的Base.css:前端样式重置与基础规范指南
AllenBright
# CSS 前端 css
在前端开发中,Base.css(也称为重置样式表或基础样式表)是整个项目样式的基石。它负责消除浏览器默认样式的差异,建立统一的样式基准,为后续开发提供一致的起点。一个精心设计的Base.css能够显著提高开发效率,减少浏览器兼容性问题,并保持项目样式的一致性。1.Base.css的核心作用样式重置(Reset):消除不同浏览器之间的默认样式差异基础规范(BaseRules):定义项目通用的基础样式
页面通信的方式 :postMessage向指定窗口发送信息
呼叫6945
javascript 页面通信
postMessage是HTML5引入的一个跨文档通信API,允许不同窗口或iframe之间安全地发送消息。通过postMessage,你可以向指定的窗口或iframe发送信息,并且接收方可以通过监听message事件来接收这些信息。使用方法发送消息targetWindow.postMessage(message,targetOrigin,[transfer]);targetWindow:目标窗口
MVVM前端开发模型,怎么快速定位问题
MVVM(Model-View-ViewModel)是一种常见的前端开发架构,主要用于分离应用的逻辑和UI,提升代码的可维护性和可测试性。在MVVM中,Model代表数据层,View代表用户界面层,而ViewModel是连接两者的中介,负责处理UI和数据之间的交互。在开发中,尤其是调试和快速定位问题时,可能会遇到一些挑战。以下是一些基于MVVM前端架构的调试技巧和方法:1.明确问题的层次首先,要清
前端流式输出3种实现
呼叫6945
前端 javascript
在前端开发中,流式输出(streamingoutput)通常是指逐步输出数据,而不是等待所有数据准备好后一次性显示。这种技术在处理大型数据集、实时数据或需要逐步加载内容的情况下非常有用。下面介绍几种实现流式输出的方法,包括使用FetchAPI和EventSource。1.使用FetchAPI实现流式输出通过FetchAPI和可读流(ReadableStreams),可以在响应到达时逐步读取和处理数
java短路运算符和逻辑运算符的区别
3213213333332132
java基础
/*
* 逻辑运算符——不论是什么条件都要执行左右两边代码
* 短路运算符——我认为在底层就是利用物理电路的“并联”和“串联”实现的
* 原理很简单,并联电路代表短路或(||),串联电路代表短路与(&&)。
*
* 并联电路两个开关只要有一个开关闭合,电路就会通。
* 类似于短路或(||),只要有其中一个为true(开关闭合)是
Java异常那些不得不说的事
白糖_
java exception
一、在finally块中做数据回收操作
比如数据库连接都是很宝贵的,所以最好在finally中关闭连接。
JDBCAgent jdbc = new JDBCAgent();
try{
jdbc.excute("select * from ctp_log");
}catch(SQLException e){
...
}finally{
jdbc.close();
utf-8与utf-8(无BOM)的区别
dcj3sjt126com
PHP
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如
JAVA Annotation之定义篇
周凡杨
java 注解 annotation 入门 注释
Annotation: 译为注释或注解
An annotation, in the Java computer programming language, is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, pa
tomcat的多域名、虚拟主机配置
g21121
tomcat
众所周知apache可以配置多域名和虚拟主机,而且配置起来比较简单,但是项目用到的是tomcat,配来配去总是不成功。查了些资料才总算可以,下面就跟大家分享下经验。
很多朋友搜索的内容基本是告诉我们这么配置:
在Engine标签下增面积Host标签,如下:
<Host name="www.site1.com" appBase="webapps"
Linux SSH 错误解析(Capistrano 的cap 访问错误 Permission )
510888780
linux capistrano
1.ssh -v hdfs@192.168.18.133 出现
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
错误
运行状况如下:
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuratio
log4j的用法
Harry642
java log4j
一、前言: log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现, 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中
mysql、sqlserver、oracle分页,java分页统一接口实现
aijuans
oracle jave
定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量
oracle分页:
select * from ( select mytable.*,rownum num from (实际传的SQL) where rownum<=pageEnd) where num>=pageStart
sqlServer分页:
 
Hessian 简单例子
antlove
java Web service hessian
hello.hessian.MyCar.java
package hessian.pojo;
import java.io.Serializable;
public class MyCar implements Serializable {
private static final long serialVersionUID = 473690540190845543
数据库对象的同义词和序列
百合不是茶
sql 序列 同义词 ORACLE权限
回顾简单的数据库权限等命令;
解锁用户和锁定用户
alter user scott account lock/unlock;
//system下查看系统中的用户
select * dba_users;
//创建用户名和密码
create user wj identified by wj;
identified by
//授予连接权和建表权
grant connect to
使用Powermock和mockito测试静态方法
bijian1013
持续集成 单元测试 mockito Powermock
实例:
package com.bijian.study;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import or
精通Oracle10编程SQL(6)访问ORACLE
bijian1013
oracle 数据库 plsql
/*
*访问ORACLE
*/
--检索单行数据
--使用标量变量接收数据
DECLARE
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
select ename,sal into v_ename,v_sal
from emp where empno=&no;
dbms_output.pu
【Nginx四】Nginx作为HTTP负载均衡服务器
bit1129
nginx
Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:
负载均衡的好处
增加可用资源
增加吞吐量
加快响应速度,降低延时
出错的重试验机制
Nginx主要支持三种均衡算法:
round-robin
l
jquery-validation备忘
白糖_
jquery css F# Firebug
留点学习jquery validation总结的代码:
function checkForm(){
validator = $("#commentForm").validate({// #formId为需要进行验证的表单ID
errorElement :"span",// 使用"div"标签标记错误, 默认:&
solr限制admin界面访问(端口限制和http授权限制)
ronin47
限定Ip访问
solr的管理界面可以帮助我们做很多事情,但是把solr程序放到公网之后就要限制对admin的访问了。
可以通过tomcat的http基本授权来做限制,也可以通过iptables防火墙来限制。
我们先看如何通过tomcat配置http授权限制。
第一步: 在tomcat的conf/tomcat-users.xml文件中添加管理用户,比如:
<userusername="ad
多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
bylijinnan
java 多线程
public class IncDecThread {
private int j=10;
/*
* 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
* 两个问题:
* 1、线程同步--synchronized
* 2、线程之间如何共享同一个j变量--内部类
*/
public static
买房历程
cfyme
2015-06-21: 万科未来城,看房子
2015-06-26: 办理贷款手续,贷款73万,贷款利率5.65=5.3675
2015-06-27: 房子首付,签完合同
2015-06-28,央行宣布降息 0.25,就2天的时间差啊,没赶上。
首付,老婆找他的小姐妹接了5万,另外几个朋友借了1-
[军事与科技]制造大型太空战舰的前奏
comsci
制造
天气热了........空调和电扇要准备好..........
最近,世界形势日趋复杂化,战争的阴影开始覆盖全世界..........
所以,我们不得不关
dateformat
dai_lm
DateFormat
"Symbol Meaning Presentation Ex."
"------ ------- ------------ ----"
"G era designator (Text) AD"
"y year
Hadoop如何实现关联计算
datamachine
mapreduce hadoop 关联计算
选择Hadoop,低成本和高扩展性是主要原因,但但它的开发效率实在无法让人满意。
以关联计算为例。
假设:HDFS上有2个文件,分别是客户信息和订单信息,customerID是它们之间的关联字段。如何进行关联计算,以便将客户名称添加到订单列表中?
&nbs
用户模型中修改用户信息时,密码是如何处理的
dcj3sjt126com
yii
当我添加或修改用户记录的时候对于处理确认密码我遇到了一些麻烦,所有我想分享一下我是怎么处理的。
场景是使用的基本的那些(系统自带),你需要有一个数据表(user)并且表中有一个密码字段(password),它使用 sha1、md5或其他加密方式加密用户密码。
面是它的工作流程: 当创建用户的时候密码需要加密并且保存,但当修改用户记录时如果使用同样的场景我们最终就会把用户加密过的密码再次加密,这
中文 iOS/Mac 开发博客列表
dcj3sjt126com
Blog
本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息。
本博客列表涉及的文章内容支持 定制化Google搜索,特别感谢 JeOam 提供并帮助更新。
本博客列表也提供同步更新的OPML文件(下载OPML文件),可供导入到例如feedly等第三方定阅工具中,特别感谢 lcepy 提供自动转换脚本。这里有导入教程。
js去除空格,去除左右两端的空格
蕃薯耀
去除左右两端的空格 js去掉所有空格 js去除空格
js去除空格,去除左右两端的空格
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
SpringMVC4零配置--web.xml
hanqunfeng
springmvc4
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置。
ServletContainerInitializer:启动容器时负责加载相关配置
package javax.servlet;
import java.util.Set;
public interface ServletContainer
《开源框架那些事儿21》:巧借力与借巧力
j2eetop
框架 UI
同样做前端UI,为什么有人花了一点力气,就可以做好?而有的人费尽全力,仍然错误百出?我们可以先看看几个故事。
故事1:巧借力,乌鸦也可以吃核桃
有一个盛产核桃的村子,每年秋末冬初,成群的乌鸦总会来到这里,到果园里捡拾那些被果农们遗落的核桃。
核桃仁虽然美味,但是外壳那么坚硬,乌鸦怎么才能吃到呢?原来乌鸦先把核桃叼起,然后飞到高高的树枝上,再将核桃摔下去,核桃落到坚硬的地面上,被撞破了,于是,
JQuery EasyUI 验证扩展
可怜的猫
jquery easyui 验证
最近项目中用到了前端框架-- EasyUI,在做校验的时候会涉及到很多需要自定义的内容,现把常用的验证方式总结出来,留待后用。
以下内容只需要在公用js中添加即可。
使用类似于如下:
<input class="easyui-textbox" name="mobile" id="mobile&
架构师之httpurlconnection----------读取和发送(流读取效率通用类)
nannan408
1.前言.
如题.
2.代码.
/*
* Copyright (c) 2015, S.F. Express Inc. All rights reserved.
*/
package com.test.test.test.send;
import java.io.IOException;
import java.io.InputStream
Jquery性能优化
r361251
JavaScript jquery
一、注意定义jQuery变量的时候添加var关键字
这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:
$loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的
二、请使用一个var来定义变量
如果你使用多个变量的话,请如下方式定义:
. 代码如下:
var page
在eclipse项目中使用maven管理依赖
tjj006
eclipse maven
概览:
如何导入maven项目至eclipse中
建立自有Maven Java类库服务器
建立符合maven代码库标准的自定义类库
Maven在管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。
我们平时用IDE开发都是把所需要的类库一股脑的全丢到项目目录下,然后全部添加到ide的构建路径中,如果用了SVN/CVS,这样会很容易就 把
中国天气网省市级联页面
x125858805
级联
1、页面及级联js
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&l