进度条
<progress ></progress>
<progress value="0.5"></progress>
<progress min="0" max="100" value="10"></progress>
<hr>
<progress id="tag" min="0" max="100" value="0"></progress><span></span>
<button>点击</button>
<script>
pg = document.getElementById("tag")
// setInterval()
// for()
document.getElementsByTagName("button")[0].onclick = function () {
var time=setInterval(function () {
console.log( pg.value);
pg.value+=1
pg.nextElementSibling.innerText = pg.value
if(pg.value>=100){
clearInterval(time)
}
},100)
}
</script>
h5新增加的两种获取元素的方式
一单 一组
<script>
// document.querySelector("选择器")
// console.log(document.querySelector("div"));
// console.log(document.querySelector("#tag"));
// console.log(document.querySelector(".a"));
// console.log(document.querySelector("[id]"));
console.log(document.querySelectorAll(".a"));
</script>
canvas(画布)
默认有自己的大小: 300 * 150
兼容 :当浏览器版本过低的时候则无法解析该版本 会显示中键的文本,若正常解析则不会显示文本
canvas :就是在通过js 操控内容 绘画
canvas:好 就只有一个元素,剩余都是在通过js绘制效果
不好: canvas 会值的内容效果无法进行dom操作
canvas标签的本质:行内块
canvas 绘制注意 :当canvas 的大小设置的时候我们一般不通过样式设置,属性设置
* 在js 操控canvas 的时候:
* 1 获取canvas 对象 (可以作为一个画板)
* 2 通过canvas 对象或去当前的这个canvas对象的上下文对象 (画笔)
* 3 该“画笔”对象 在画板上绘制内容
*
* 注意:平面效果 2d
<style>
canvas {
/*width: 500px;*/
/*height: 500px;*/
border: 1px solid #000;
}
</style>
<!--<canvas >-->
<canvas width="500" height="500">
您的浏览器版本过低,请更新
</canvas>
a
<script>
/*
* 在js 操控canvas 的时候:
* 1 获取canvas 对象 (可以作为一个画板)
* 2 通过canvas 对象或去当前的这个canvas对象的上下文对象 (画笔)
* 3 该“画笔”对象 在画板上绘制内容
*
* 注意:平面效果 2d
* */
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
ctx.fillRect(100,100,50,50)
</script>
canvas绘制线
线的绘制:1要有下笔点 2线走过的轨迹
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
/*
* 线的绘制:1要有下笔点 2线走过的轨迹
*
* */
ctx.moveTo(0, 0); //x,y 坐标
ctx.lineTo(500, 500)
// 此时只是绘制出线的轨迹,:1描绘 2 填充
ctx.stroke()
ctx.moveTo(100,100);
ctx.lineTo(200,200);
ctx.lineTo(200,100);
ctx.lineTo(100,100);
// 描绘
ctx.stroke()
// 填充
ctx.fill()
当不给定闭合点的时候,若此时是用的是填充的效果则会自动填满闭合区域内
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
ctx.moveTo(100,100);
ctx.lineTo(200,200);
ctx.lineTo(200,100);
// ctx.fill()
ctx.stroke()
快速的自动闭合
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
ctx.moveTo(100,100);
ctx.lineTo(200,200);
ctx.lineTo(200,100);
ctx.closePath(); //闭合路径 下笔的那个点
ctx.stroke()
设置线的宽度,注意:修改线宽要在使用之前进行
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
ctx.lineWidth = "10" //生效
ctx.moveTo(100,100);
ctx.lineTo(200,200);
ctx.lineTo(200,100);
ctx.closePath();
ctx.lineWidth = "10" //生效
ctx.stroke();
ctx.lineWidth = "10" //不生效
设置多条线 最后统一描绘
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
ctx.lineWidth = 10;
ctx.moveTo(100,100);
ctx.lineTo(400,100);
ctx.moveTo(100,130);
ctx.lineTo(400,130);
ctx.stroke()
给笔设置颜色 (颜色值都可以有哪几种 css 部分的颜色表现都可以)
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
ctx.strokeStyle = "#ff0"; // 颜色单词 ,#fff #ffffff rgb() rgba()
ctx.moveTo(100, 130);
ctx.lineTo(400, 130);
ctx.stroke()
开启以个新的状态 ,以为只有一个状态,(想让状态之间有不同的表现,此时在就需要开启先的新的状态)路径
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
ctx.beginPath();
ctx.lineWidth = 10;
ctx.strokeStyle = "#f00";
ctx.moveTo(100,100);
ctx.lineTo(400,100);
ctx.stroke();
ctx.beginPath();
ctx.lineWidth = 40;
ctx.strokeStyle = "#ff0";
ctx.moveTo(100,150);
ctx.lineTo(400,150);
ctx.stroke();
状态的同一化:此时设置的是描绘的样式,但是最终你使用的是填充 一一对应
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
ctx.strokeStyle = "#ff0";
ctx.fillStyle = "#ff0";
ctx.moveTo(100,100);
ctx.lineTo(400,100);
ctx.lineTo(400,400);
ctx.fill()
ctx.stroke()
在线宽的问题(基线问题)
var mycanvas = document.querySelector("canvas")
var ctx = mycanvas.getContext("2d")
ctx.strokeStyle = "red";
ctx.lineWidth = 20;
ctx.moveTo(100, 0);
ctx.lineTo(400, 0);
ctx.lineTo(400, 400);
ctx.closePath();
ctx.stroke();
// ctx.fill();
设置线的两端样式
butt 默认样式
var a = document.querySelector("#tag_a");
var actx = a.getContext("2d");
actx.lineWidth = 20;
actx.moveTo(100, 100);
actx.lineTo(400, 100);
//设置先的两端样式 :
//butt 默认样式
// actx.lineCap = "butt";
actx.stroke();
round 两端是圆弧
actx.lineWidth = 20;
actx.moveTo(100, 130);
actx.lineTo(400, 130);
//设置先的两端样式 :
//round 两端是圆弧
actx.lineCap = "round";
actx.stroke();
square两端是方块
actx.lineWidth = 20;
actx.moveTo(100, 160);
actx.lineTo(400, 160);
//设置先的两端样式 :
//square两端是方块
actx.lineCap = "square";
actx.stroke();
绘制线焦点样式
actx.lineWidth = 10;
actx.moveTo(100, 100);
actx.lineTo(400, 100);
actx.lineTo(100, 200);
//默认是尖角
// actx.lineJoin = "miter";
//折角部分是个圆角
// actx.lineJoin = "round";
//平角
actx.lineJoin = "bevel";
actx.stroke();
制矩形
x,y 表示矩形的左上角
ctx.rect(x坐标,y坐标,宽度,高度)
ctx.rect(100,100,100,100);
当会值矩形的一个更加简便的写法
ctx.fillRect(10,10,200,300);
ctx.strokeRect(10,10,200,300);
<canvas width="500" height="500" id="tag_a"></canvas>
<script>
var a = document.querySelector("#tag_a");
var ctx = a.getContext("2d");
//绘制矩形 x,y 表示矩形的左上角
// ctx.rect(x坐标,y坐标,宽度,高度)
// ctx.rect(100,100,100,100);
// // ctx.fill();
// ctx.stroke();
</script>
绘制弧
ctx.arc(250,250,200,0,Math.PI/2,false);
ctx.arc(x,y,半径,起始弧,结束弧,方向);
<canvas width="500" height="500" id="tag_a"></canvas>
<script>
var a = document.querySelector("#tag_a");
var ctx = a.getContext("2d");
ctx.moveTo(250,250);
ctx.arc(250,250,200,0,Math.PI/2,false);
// ctx.lineTo(250,250);
// ctx.closePath();
ctx.stroke();
ctx.fill()
</script>
清除绘制内容
x,y w,h 清除的矩形大小
ctx.clearRect(250,250,100,100)
<script>
var a = document.querySelector("#tag_a");
var ctx = a.getContext("2d");
ctx.fillRect(100,100,300,300);
//x,y w,h 清除的矩形大小
ctx.clearRect(250,250,100,100)
</script>
绘制文字
参数讲解:1 绘制文字内容 绘制起始点坐标 x y
ctx.fillText("好好学习,天天向上!!!",200,100);
ctx.strokeText("好好学习,天天向上!!!",100,200);
描绘文字 填充文字
// ctx.fillText("你好?",100,100);
// ctx.strokeText("我好!",100,120);
设置文字的大小 注意点:字体的样式 ;设置有顺序 显示大小 在是样式
ctx.font ="bold 50px '宋体'";
ctx.fillText("你好?",100,100);
// ctx.strokeText("我好!",100,120);
文本内容基线
textBaseLign:设置或返回在绘制文本时使用的当前文本基线。
值 描述
alphabetic 默认。文本基线是普通的字母基线。
top 文本基线是 em 方框的顶端。
hanging 文本基线是悬挂基线。 知道
middle 文本基线是 em 方框的正中。
ideographic 文本基线是表意基线。 知道
bottom 文本基线是 em 方框的底端。
中文 引文 常用常用的是: 默认 top middle bottom
deographic hanging基本差不多
<canvas id="a" width="500" height="500" style="border: 1px solid red">浏览器不支持canvas</canvas>
<script>
var mcanvas = document.querySelector('#a');
var ctx = mcanvas.getContext('2d');
//绘制坐标
ctx.moveTo(0,250);
ctx.lineTo(500,250);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(250,0);
ctx.lineTo(250,500);
ctx.stroke();
// 辅助
ctx.beginPath();
ctx.fillStyle = "red";
ctx.font="30px '宋体'";
// 研究基线
ctx.textBaseline = "bottom";
ctx.fillText("AbcDghj",250,250);
</script>
对齐方式
研究基线
ctx.textAlign = "start";
ctx.textAlign = "end";
ctx.textAlign = "center";
ctx.textAlign = "left";
ctx.textAlign = "right";
ctx.textAlign = "start";
ctx.textAlign = "end";
ctx.textAlign = "right";
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.fillText("AbcDghj",250,250);