使用HTML5和CSS3制作简单的钟表

利用html5,css实现钟摆效果 ,在项目中经常会遇到,今天小编把基于HTML5+CSS3实现简单的时钟效果的实现代码分享到脚本之家平台,需要的d朋友参考下吧

目的:

利用html5,css实现钟摆效果

知识点:

1) 利用position/left/top和calc()实现元素的水平和垂直居中;

2) 利用CSS3的animation/transform/transform-origin属性定义动画;

3) 利用transform-origin实现旋转原点的圆心调整

废话不多说了,直接看代码吧,具体代码如下所示:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

    <style>

        li{

            list-style:none;

        }

        #box{

            width: 400px;

            height: 400px;

            position: absolute;

            top:calc(50% - 200px);

            left:calc(50% - 200px);

            border: 2px solid palegoldenrod;

        }

        #dial{

            width: 200px;

            height: 200px;

            position: absolute;

            top:calc(50% - 100px);

            left:calc(50% - 100px);

            border: 2px solid cyan;

            border-radius: 50%;

        }  

        .scaleIndex{

            width: 4px;

            height: 12px;

            position: absolute;

            top: 0;

            left: calc(50% - 2px);

            background-color: gray;

            transform-origin: 2px 100px;

        }

        .angle30{transform : rotate(30deg);}

        .angle60{transform : rotate(60deg);}

        .angle90{transform : rotate(90deg);}

        .angle120{transform : rotate(120deg);}

        .angle150{transform : rotate(150deg);}

        .angle180{transform : rotate(180deg);}

        .angle210{transform : rotate(210deg);}

        .angle240{transform : rotate(240deg);}

        .angle270{transform : rotate(270deg);}

        .angle300{transform : rotate(300deg);}

        .angle330{transform : rotate(330deg);}

        #fixPoint{

            width: 10px;

            height: 10px;

            position: absolute;

            top:calc(50% - 5px);

            left:calc(50% - 5px);

            background-color: cadetblue;

            border-radius: 50%;

        }

        #hourHand{

            width: 6px;

            height: 70px;

            position:absolute;

            top: 40px;

            left: calc(50% - 3px);

            background-color: darkblue;

            transform-origin: 50% 60px;

        }

        #minuteHand{

            width: 4px;

            height: 75px;

            position:absolute;

            top: 35px;

            left: calc(50% - 2px);

            background-color: yellow;

            transform-origin: 50% 65px;

        }

        #secondHand{

            width: 2px;

            height: 90px;

            position:absolute;

            top: 20px;

            left: calc(50% - 1px);

            background-color: red;

            transform-origin: 50% 80px;

        }

    </style>

</head>

<body>

    <p id = "box">

            <p id = 'dial'>

                <ul id = "scale">

                    <li class = "scaleIndex"></li>

                    <li class = "scaleIndex angle30"></li>

                    <li class = "scaleIndex angle60"></li>

                    <li class = "scaleIndex angle90"></li>

                    <li class = "scaleIndex angle120"></li>

                    <li class = "scaleIndex angle150"></li>

                    <li class = "scaleIndex angle180"></li>

                    <li class = "scaleIndex angle210"></li>

                    <li class = "scaleIndex angle240"></li>

                    <li class = "scaleIndex angle270"></li>

                    <li class = "scaleIndex angle300"></li>

                    <li class = "scaleIndex angle330"></li>

                </ul>

                <p id = "fixPoint"></p>

                <p id = "hourHand"></p>

                <p id = "minuteHand"></p>

                <p id = "secondHand"></p>

            </p>

        </p>

<script type = 'text/javascript' src = 'js/jquery-3.2.1.js'></script>

<script type = "text/javascript">

window.onload = function(){

            var hourHand = document.getElementById('hourHand');

            var minuteHand = document.getElementById('minuteHand');

            var secondHand = document.getElementById('secondHand');

setInterval(function(){

                    var currentTime = new Date();

                    var hourValue = currentTime.getHours();

                    var hourAngle = hourValue / 24 * 360 + 'deg';

                    var minuteValue = currentTime.getMinutes();

                    var minuteAngle = minuteValue / 60 * 360 + 'deg';

                    var secondValue = currentTime.getSeconds();

                    var secondAngle = secondValue / 60 * 360 + 'deg';

                    console.log(hourAngle);

// 方法一:利用jquery的css()增加属性

var cmdHour = 'rotate('+ hourAngle +')';

$('#hourHand').css({transform:'rotate('+ hourAngle +')'});

var cmdMinute = 'rotate('+ minuteAngle +')';

$('#minuteHand').css({transform:cmdMinute});

var cmdSecond = 'rotate('+ secondAngle +')';

$('#secondHand').css({transform:cmdSecond});

 

// 方法二:利用DOM元素的style属性设置

//      hourHand.style.transform = 'rotate('+ hourAngle + ')';

//      minuteHand.style.transform = 'rotate('+ minuteAngle + ')';

//      secondHand.style.transform = 'rotate('+ secondAngle + ')'; 

 

},1000);

}

    </script>

</body>

</html>

以上就是使用HTML5和CSS3制作简单的钟表的详细内容。

posted @ 2017-09-14 16:10  太原中软  阅读(245)  评论(0编辑  收藏  举报