.h1-h6标签
都是标题标签,定义一段话的标题,h1最大,依次递减,h6最小
标题标签的作用:让文本加粗显示
2. 段落标签:p标签
用来显示一段文本(图片),它会忽略源代码中的排版
块元素:独占一行的元素,和相邻的元素不能共享同一行,所有的块元素都有align属性,h1-h6和p元素都是块元素
3. 格式标签:
b标签:加粗文本
del标签:包含的文本中间有条横线
em标签:包裹的文本会显示为斜体
i标签:包裹的文本会显示为斜体
pre标签:显示源代码的排版
strong标签:和em作用一样,都有强调的意思,如果要强调一段文字,建议使用strong标签
u标签:给文本添加下划线
sup:定义上标文本
sub:定义下标文本
4. 图片标签img,用来把图片显示在网页上
必须属性:1.src:图片的路径(可以用相对路径或绝对路径,不建议用绝对路径)
alt:定义图片无法显示时的代替文本
相对路径:以当前文件所在的位置为参考路径,定义出来的路径叫相对路径
绝对路径:文件在硬盘上的物理路径叫绝对路径,
例如:
D:\work181129JAVA班\课件-web前端课件\web-day1\Code\web-day1\img\tly.jpg
可选属性:
1.title:鼠标放在图片上时的提示文字,所有元素都有title属性
2.width:定义图片的宽度,默认以像素px为单位,可以省略单位不写
3.height:定义图片的高度
br标签:换行标签,可以写成<br>或者<br/>
hr标签:水平线标签,可以写成<hr>或者<hr/>,属性有:width(宽度),size(高度),color(颜色)
5. span:通常用于修饰文本,可以给它添加样式,例如style="color: red;"
div:把文档分割成若干个独立的部分 ,块级元素
6. ul定义无序列表,type属性定义列表项目的标记,默认是disc
type="disc" 默认黑色圆点
type="circle" 空心圆点
type="square" 方块
ol定义有序列表,type属性定义项目的标记,默认是数字
type="A"或"a":表示大写字母或者小写字母
type="I"或type="i":表示罗马大写字母或罗马小写字母
7. border:定义表格的边框属性
cellspacing:单元格之间的距离,设置为0则只有1条边框了
cellpadding:单元格的内容到边框之间的距离
8. 表头:表格中的第一行,用来显示列标题的,使用th定义表头的每一列,把里面的内容加粗居中显示
通常,第一行是表头行,从第二行开始就是数据行(显示具体的数据),
使用td(table data cell )表示数据行每一列
表格的align="center":让表格整体居中显示
tr(table row)的align="center":让行里面的内容居中显示
caption:定义表格的标题,会相当于表格居中
9. colspan:跨列,即在水平方向上合并单元格,值是要合并的单元格数目
rowspan:跨行,即在竖直方向上合并单元格,值是要合并的单元格数目
10. form:表单标签,用于创建一个表单,收集用户输入的数据,并提交给服务器程序
属性:action:指定将表单的数据发送到哪个服务器程序
method:指定用哪种方式来提交数据,常用值有GET,POST,默认值是get
表单域:又叫表单元素,作用是收集用户输入的数据 ,并提交给服务器端程序
常用的表单域:1.input元素:它的type属性有不同值,表现出不同形态
type="text":表示文本框,提供文本的输入
type="radio":单选框(单选按钮), 多个单选框的name值必须相同,如果name不同则不能互斥,提交时是提交value值
type="checkbox":复选框,当name相同时,可以提交多个值(value属性的值)
type="file"":文件域,让用户选择本地文件上传到服务器
type="hidden":隐藏域,对用户不可见的元素,可以有默认值并且能提交给服务器(在javaEE开发中会大量使用隐藏域)
2. select元素:表示下拉列表,又叫下拉框,在下拉列表中用option元素定义待选择的选项,默认第1个选项被选中,
设置某个option被选中: 在option元素上添加selected="selected"或者selected
设置下拉列表为多选下拉列表:在select元素上加multiple属性
关于选中元素的设置:
1)设置单选框或复选框被选中的属性是checked
2)设置下拉列表的某个选项被选中的属性是selected
11. body标签:
1.background:定义网页的背景图片,如果背景图片很小,会自动在水平和竖直方向上平铺展示
2.bgcolor:定义网页的背景颜色
12. textarea:文本域,又叫多行文本框,cols是文本区内的宽度,rows:行数
placeholder:用来设置单行文本框(不是textarea)里的默认提示文字,当输入了新的内容后,该提示文字就消失了
label:本身没有什么效果,当结合单选按钮或复选框使用时,如果label的for属性和按钮的id相同,则点击
label后就相当于点击了按钮,会将单选框或复选框选中
表单按钮:
1.提交按钮: <input type="submit">,提交按钮作用是将表单数据发送到action指定的服务器上
2.重置按钮: <input type="reset">,作用是将表单中数据清空
3.普通按钮:<input type="button">,普通按钮在没有添加js代码情况下,是不能提交表单的
13. frameset:框架集,用于将整个浏览器窗口划分成多个小窗口,每个小窗口称为一个frame,每个小窗口(frame)都可以,加载一个独立的html文档
使用frameset的cols或rows属性定义如何分割整个大窗口,
cols:定义水平方向上分割的各个frame的百分比,
rows:定义竖直方向上分割的各个frame的百分比,
noresize:不能调整frame的宽或高 frameborder="0":去掉frame的边框
*代表剩余百分比,会自动计算
使用frame来定义每个小窗口,src指frame所加载的网页的相对路径
14. iframe:能够包含其它文档(网页)的内联框架,内联就是行内,因为它能和相邻的元素共享同一行
src:要加载的文档的路径 width:宽度,height:高度
frameborder:边框,0或no代表无边框
15. 将超链接所跳转的页面显示在iframe的技巧:
1)给iframe元素添加一个name属性,例如
2)超链接添加属性target,值应该是iframe元素的name
16. 实体集
来的产品经理,想做一个和qq或者微信聊天一样的,上下拖动动态改变文本内容框和编辑器布局的需求。 其实一开始是一头雾水的,但是通过万能的mdn,以及充满智慧的我,最终还是完成了这个需求。 其中最核心的还是ResizeObserver这个第一次用的类,所以会在这里做一些记录。
entries是一个数组,它由所有的ResizeObserverEntry object组成。通过for (let entry of entries) {}的方式,entry代表一个ResizeObserver object,一个entry由contentRect和target组成。
在resize相关实践中,entry的contentRect对象是最最重要的。
{target: div, contentRect: DOMRectReadOnly}
contentRect: DOMRectReadOnly
bottom: 312.3125
height: 292.3125
left: 20
right: 626
top: 20
width: 606
x: 20
y: 20
__proto__: DOMRectReadOnly
target: div
__proto__: ResizeObserverEntry
<div class="main" :style="{minHeight: dynamicMainHeight}">
<chatView></chatView>
</div>
.main {
resize: vertical;
overflow: auto;
}
observeChatView() {
if (window.ResizeObserver) {
const viewElem = document.querySelector('.main');
const resizeObserver = new ResizeObserver((entries) => {
for (const entry of entries) {
if (!this.initialHeight) {
this.initialHeight = entry.contentRect.height;
}
if (this.initialHeight) {
const deltaHeight = this.initialHeight - entry.contentRect.height;
this.$bus.$emit('rerenderViewAndEditor', deltaHeight);
}
}
});
resizeObserver.observe(viewElem);
} else {
this.$Message.warning('不支持ResizeObserver');
}
},
},
<div
class="rich-text-editor"
contenteditable
data-placeholder="按下Enter发送消息,按下Shift+Enter换行"
:style="{height: dynamicHeight}"
></div>
computed: {
dynamicHeight() {
return `${defaultEditorHeight + this.deltaHeight}px`;
},
},
this.$bus.$on('rerenderViewAndEditor', (deltaHeight) => {
this.deltaHeight = deltaHeight;
});
自动跳到最新一条消息的chatView组件需要减去deltaHeight,从而增大scrollHeight的高度。
this.$bus.$on('rerenderViewAndEditor', (deltaHeight) => {
this.visiableHeight = document.body.clientHeight - deltaHeight;
this.deltaHeight = deltaHeight;
});
scrollToBottom() {
this.$nextTick(() => {
this.scrollTop = this.scrollHeight - this.deltaHeight;
});
},
https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/ResizeObserver https://github.com/mdn/dom-examples/blob/master/resize-observer/resize-observer-text.html
努力成为优秀的前端工程师!
期待和大家交流,共同进步
微信公众号: 大大大前端 / excellent_developers
努力成为优秀前端工程师!
框架将浏览器划分成不同的部分,每一部分加载不同的网页,实现在同一浏览器窗口中加载多个页面的效果
<frameset>....</frameset>
1.cols:使用“像素数”和%分割左右窗口,“*”表示剩余部分;如果使用“*”,“*”表示框架平均分成2个;如果使用“*”,“*”,“*”表示框架平均分成3个。
2.rows:使用“像素数”和%分割上下窗口,“*”表示剩余部分。
3.frameborder:指定是否显示边框,0不显示,1显示。
4.border:设置边框的大小,默认值5像素。
frame 标记是一个单标记,该标记必须放在 frameset 中使用,在 frameset 中设置了几个窗口,就必须对应使用几个 frame 框架,而且还必须使用 src 属性指定一个网页。
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>文档标题</title> </head> <frameset cols="*,*" frameborder="0"> <frame src="https://www.taobao.com" noresize> <frame src="https://www.baidu.com" noresize> </frameset></html>
*请认真填写需求信息,我们会在24小时内与您取得联系。