怎么用css里的绝对定位画一个手表盘

html-css019

怎么用css里的绝对定位画一个手表盘,第1张

对表格命名给个ID,CSS属性加上设置为position:absolute即可。

CSS 绝对定位

绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。

普通流中其它元素的布局就像绝对定位的元素不存在一样:

#box_relative {

position: absolute

left: 30px

top: 20px

}

代码如下:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta charset="utf-8" />

<title>canvas实例--制作时钟</title>

</head>

<body>

<canvas id="canvas" width="500" height="500" >

您的浏览器版本太低啦!可以换了!

</canvas>

<script>

//获取canvas

var canvas = document.getElementById("canvas")

//设置环境

var cxt = canvas.getContext("2d")

//制作时钟的函数

function DrawClock() {

//清除画布

cxt.clearRect(0,0,500,500)

//获取当前时间的时,分,秒

var now = new Date()

var hour = now.getHours()

var min = now.getMinutes()

var sec = now.getSeconds()

//小时必须获取浮点型(小时+分数--->转化为的小时)

hour = hour + min / 60

//将24小时转换为12小时

hour = hour >12 ? hour - 12 : hour

//制作表盘

cxt.beginPath()

cxt.lineWidth = 10

cxt.strokeStyle = "#ABCDEF"

cxt.arc(250, 250, 200, 0, 360, false)

cxt.stroke()

cxt.closePath()

//刻度

//时针

for (var i = 0i <12i++) {

cxt.save()

cxt.lineWidth = 7

cxt.strokeStyle = "red"

//设置0,0点

cxt.translate(250, 250)

//再设置旋转角度

cxt.rotate(i * 30 * Math.PI / 180)

cxt.beginPath()

cxt.moveTo(0, -170)

cxt.lineTo(0, -190)

cxt.closePath()

cxt.stroke()

cxt.restore()

}

//分针

for (var i = 0i <60i++) {

//为避免不同颜色的重叠,

//在时针刻度与分针刻度重叠的位置,不画分针

if (i % 5 == 0) continue

cxt.save()

//设置刻度粗细

cxt.lineWidth = 5

cxt.strokeStyle = "purple"

//设置画布的0,0点

cxt.translate(250, 250)

//设置旋转角度

cxt.rotate(i * 6 * Math.PI / 180)

//画分针刻度

cxt.beginPath()

cxt.moveTo(0, -180)

cxt.lineTo(0, -190)

cxt.closePath()

cxt.stroke()

cxt.restore()

}

//时针

cxt.save()

//设置时针风格

cxt.lineWidth = 7

cxt.strokeStyle = "pink"

//设置异次元空间的0,0点

cxt.translate(250, 250)

//设置旋转角度

cxt.rotate(hour * 30 * Math.PI / 180)

cxt.beginPath()

cxt.moveTo(0, -140)

cxt.lineTo(0, 10)

cxt.closePath()

cxt.stroke()

cxt.restore()

//分针

cxt.save()

//设置分针风格

cxt.lineWidth = 5

cxt.strokeStyle = "orange"

//设置异次元空间的0,0点

cxt.translate(250, 250)

//设置旋转角度

cxt.rotate(min * 6 * Math.PI / 180)

cxt.beginPath()

cxt.moveTo(0, -160)

cxt.lineTo(0, 15)

cxt.closePath()

cxt.stroke()

cxt.restore()

//秒针

cxt.save()

//风格

cxt.strokeStyle = "yellow"

cxt.lineWidth = 3

//重置0,0点

cxt.translate(250, 250)

//设置旋转角度

cxt.rotate(sec*6*Math.PI/180)

//画图

cxt.beginPath()

cxt.moveTo(0, -170)

cxt.lineTo(0, 20)

cxt.stroke()

//画出时针,分针,秒针的交叉点

cxt.beginPath()

cxt.arc(0, 0, 5, 0, 360, false)

cxt.closePath()

//设置填充样式

cxt.fillStyle = "blue"

cxt.fill()

//设置笔触样式--->秒针已设置

cxt.stroke()

//设置秒针前端的小圆点

cxt.beginPath()

cxt.arc(0, -150, 5, 0, 360, false)

cxt.closePath()

//设置填充样式

cxt.fillStyle = "blue"

cxt.fill()

//设置笔触样式

cxt.stroke()

cxt.closePath()

cxt.restore()

}

//调用函数

DrawClock()

//设置时钟转动起来

setInterval(DrawClock, 1000)

</script>

</body>

</html>