超赞的CSS3进度条 可以随进度显示不同颜色

现在的WEB已经不是以前的WEB了,传输更大的数据量,有着更加复杂的计算,这就需要利用进度条来提高用户体验,必要时可以让用户耐心等待,不至于因操作卡了而关掉你的网页。前几天我在网上看到一款和一般进度条不太一样的玩意,它的外观是一条直线,末端有个小球,在进度变化时可以显示数字百分比,更可以用不同颜色来表示当前进度的状态。来看看效果图。

一看进度条外观,还不错吧。

同时,我们也可以在这里看到进度条的DEMO演示

接下来我们来分析一下这款HTML5进度条的实现源码,篇幅有限,我们只挑核心的代码来说。

HTML代码很简单,构造一个进度条容器和数字百分比容器:

<div id="wrapper">
<div class="loader-container">
  <div class="meter">0</div>
  <span class="runner"></span>
</div>
</div>

首先我们来对进度条的容器进行样式渲染,利用CSS3的渐变属性来实现不同进度变换颜色的效果:

.loader-container {
  height: 6px;
  width: 600px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -3px;
  margin-left: -300px;
  background-color: transparent;
  background-image: -webkit-linear-gradient(left, #5bd8ff, #ff0000);
  background-image: -moz-linear-gradient(left, #5bd8ff, #ff0000);
  background-image: -o-linear-gradient(left, #5bd8ff, #ff0000);
  background-image: -ms-linear-gradient(left, #5bd8ff, #ff0000);
  background-image: linear-gradient(left, #5bd8ff, #ff0000);
  box-shadow: inset 0 -2px 2px rgba(0, 0, 0, 0.4);
  border-radius: 3px 0 0 3px;
}
.loader-container:after {
  content: "";
  display: block;
  position: absolute;
  right: 0;
  top: 50%;
  width: 1em;
  height: 1em;
  border-radius: 50%;
  margin-top: -0.5em;
  margin-right: -1em;
  background-image: -webkit-linear-gradient(top, #000000, #212121);
  background-image: -moz-linear-gradient(top, #000000, #212121);
  background-image: -o-linear-gradient(top, #000000, #212121);
  background-image: -ms-linear-gradient(top, #000000, #212121);
  background-image: linear-gradient(top, #000000, #212121);
}

接下来是末端小圆球的样式:

.loader-container.done:after {
  background: Red;
}
.run .runner {
  content: "";
  position: absolute;
  right: 0;
  height: 100%;
  width: 0%;
  background-color: transparent;
  background-image: -webkit-linear-gradient(top, #000000, #212121);
  background-image: -moz-linear-gradient(top, #000000, #212121);
  background-image: -o-linear-gradient(top, #000000, #212121);
  background-image: -ms-linear-gradient(top, #000000, #212121);
  background-image: linear-gradient(top, #000000, #212121);
  animation: loader 10s linear;
}

这里也是利用的CSS3的渐变属性。

然后是数字百分比的样式属性,这里随着进度变化,数字百分比的颜色也会发生变化。、

.meter {
  position: absolute;
  top: 0;
  right: 0;
  font-size: 2em;
  margin-top: .3em;
  color: #ff0000;
  animation: meter 10s linear;
  text-shadow: 0 -1px 0 #333333;
}
.meter:after {
  content: "%";
}

最后,我们再来看看JS代码,其实js要完成的工作非常简单,只需要将CSS3渲染好的进度条动起来就好,看代码:

var Loader = function () {    
  var loader = document.querySelector('.loader-container'),
      meter = document.querySelector('.meter'),
      k, i = 1,
      counter = function () {
        if (i <= 100) {   
          meter.innerHTML = i.toString();
          i++;
        } else {
          window.clearInterval(k);
        }
      };

    return {
      init: function (options) {
      options = options || {};
      var time = options.time ? options.time : 0,
            interval = time/100;
      
        loader.classList.add('run');
      k = window.setInterval(counter, interval); 
      setTimeout(function () {        
          loader.classList.add('done');
      }, time);
    },
  }
}();

Loader.init({
      // If you have changed the @time in LESS, update this number to the corresponding value. Measured in miliseconds.
      time: 10000
});

初次写博客,可以代码分析的不是很好,有什么问题可以留言指正,不过,这款进度条个人真的很喜欢,老外的创意真是无限啊。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pygame模块可以用来实现很多有趣的游戏,其中包括经典的贪吃蛇游戏。通过使用Pygame模块的绘图功能,可以实现一个具有视觉效果的贪吃蛇游戏。 下面是一个简单的贪吃蛇游戏的实现: ```python import pygame import random # 初始化游戏 pygame.init() # 定义游戏窗口大小 win_width = 800 win_height = 600 # 创建游戏窗口 win = pygame.display.set_mode((win_width, win_height)) # 设置游戏标题 pygame.display.set_caption("贪吃蛇") # 定义颜色 white = (255, 255, 255) black = (0, 0, 0) red = (255, 0, 0) green = (0, 255, 0) # 设置游戏时钟 clock = pygame.time.Clock() # 定义蛇的属性 snake_block = 10 snake_speed = 15 # 定义字体 font_style = pygame.font.SysFont(None, 50) # 定义函数,用于显示文字 def message(msg, color): message = font_style.render(msg, True, color) win.blit(message, [win_width / 6, win_height / 3]) # 定义函数,用于绘制蛇 def draw_snake(snake_block, snake_list): for x in snake_list: pygame.draw.rect(win, green, [x[0], x[1], snake_block, snake_block]) # 定义游戏循环 def game_loop(): game_over = False game_close = False # 定义蛇的初始位置 x1 = win_width / 2 y1 = win_height / 2 # 定义蛇的移动方向 x1_change = 0 y1_change = 0 # 定义蛇的初始长度 snake_List = [] Length_of_snake = 1 # 定义食物的初始位置 foodx = round(random.randrange(0, win_width - snake_block) / 10.0) * 10.0 foody = round(random.randrange(0, win_height - snake_block) / 10.0) * 10.0 # 游戏循环 while not game_over: while game_close == True: win.fill(white) message("你输了,按 Q 退出,按 C 重新开始!", red) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: game_over = True game_close = False if event.key == pygame.K_c: game_loop() for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -snake_block y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = snake_block y1_change = 0 elif event.key == pygame.K_UP: y1_change = -snake_block x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = snake_block x1_change = 0 # 判断蛇是否超出边界 if x1 >= win_width or x1 < 0 or y1 >= win_height or y1 < 0: game_close = True # 更新蛇的位置 x1 += x1_change y1 += y1_change # 绘制游戏背景 win.fill(white) # 绘制食物 pygame.draw.rect(win, red, [foodx, foody, snake_block, snake_block]) # 更新蛇的长度 snake_Head = [] snake_Head.append(x1) snake_Head.append(y1) snake_List.append(snake_Head) if len(snake_List) > Length_of_snake: del snake_List[0] # 判断蛇是否吃到食物 for x in snake_List[:-1]: if x == snake_Head: game_close = True # 绘制蛇 draw_snake(snake_block, snake_List) # 更新游戏窗口 pygame.display.update() # 判断蛇是否吃到食物 if x1 == foodx and y1 == foody: foodx = round(random.randrange(0, win_width - snake_block) / 10.0) * 10.0 foody = round(random.randrange(0, win_height - snake_block) / 10.0) * 10.0 Length_of_snake += 1 # 设置游戏速度 clock.tick(snake_speed) # 退出游戏 pygame.quit() quit() # 启动游戏循环 game_loop() ``` 这个程序可以实现一个基本的贪吃蛇游戏,玩家可以使用方向键控制蛇的移动方向,吃到食物后蛇的长度会增加。当蛇碰到边界或自己时,游戏结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值