【今日文章】:如何用css 实现星空效果

【今日文章】:如何用css 实现星空效果

需求

用CSS 实现星空效果的需求:

  1. 屏幕上有“星星”,且向上移动。
  2. 移动的时候,动画效果要连贯,不能出现闪一下的样子。

实现

这里我们需要知道,“星星”是怎么产生的。
通过box-shaow: xxx, xxx, xxx, xxx; 就能产生多个阴影,这些阴影也就是我们需要的星星

其次是星星的动画是怎么做的?

星星向上移动,且移动完成以后,没有“闪”一下的效果。这是常见的动画上面的需求,我们通常的做法就是复制一份一样的“星星”出来。上面的原来的div动画结束以后,接着显示下面的“星星”。

在这里插入图片描述

<html>
<body>
   <div class="star" id="star"></div>
   <div class="centerFont"> 星空效果 </div>
</body>
</html>

<style>
html{
 height:100%;
 background: radial-gradient(circle at 7.2% 13.6%, rgb(37, 249, 245) 0%, rgb(8, 70, 218) 90%);
 overflow:hidden
}

/*
  目的是让元素平铺页面 
  position:absolute;
  left:0;
  right:0;
  
  让元素中的东西居中
  text-align:center;
   
 */
.centerFont{
  position:absolute;
  top:50%;
  left:0;
  right:0;
  color:#fff;
  text-align:center;
  font-size:50px;
  margin-top:-25px;
}


/*
   1. 通过box-shadow中写多个偏移的阴影,就能形成星空效果。   
 */
.star{
   position:fixed;
   width:10px;
   height:10px;
   border-radius:50%;
   background:red;
   left:0;
   right:0;
   box-shadow:90vh 90vh #fff, 60vh 70vh #fff, 70vh 14vh #fff, 60vh 13vh #fff, 20vh 12vh #fff, 80vh 10vh #fff, 15vh 15vh #fff , 15vh 15vh #fff, 20vh 20vh #fff;
   animation: moveup 100s;
}

/*
   3. 写一个子元素,复制star, 当动画结束的时候,展示一模一样的子元素。
      不会出现动画“闪”一下的效果。   
 */
.star::after{
	content:"";
	position:fixed;
	background:red;
    left:0;
    right:0;
	top:100vh;/* 这是重点 */
	border-radius:inherit; /* 继承父元素 */
	box-shadow:inherit;
	width:inherit;	
	height:inherit;
}


/*
   2. 星空是需要移动的,那怎样的动画效果才合理呢?
   
   首先第一步是,整个星空向上移动100vh。
   这个时候移动100vh以后,下面没东西了。
			最合理的解决方案是 "复制" 一份出来。
 */
@keyframes moveup{
    100%{
	   transform:translateY(-100vh)
	}
}


</style>

tips:

父亲display:flex;子元素margin:auto。

这个时候能上下左右居中的原理是,margin:auto能填满子元素到父元素上下左右的距离。

如果是margin-left:auto,那是子元素填满子元素左侧到父元素的距离。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是用 CSS 实现轮播图效果的步骤: 1. 首先,需要一个包含所有轮播项的容器,可以使用 div 元素来实现。 2. 然后,需要设置容器的宽度和高度,以及 overflow 属性为 hidden,这样才能保证轮播项在容器内部滚动。 3. 接着,需要使用 CSS 定位技术来实现轮播项的滚动效果。可以使用 position 属性为 absolute,然后设置 left 或 top 属性来控制轮播项的位置。 4. 最后,需要使用 CSS 动画或过渡效果实现轮播项的滚动动画。 下面是一个简单的示例代码: HTML 代码: ``` <div class="slider"> <div class="slider-item">轮播项1</div> <div class="slider-item">轮播项2</div> <div class="slider-item">轮播项3</div> </div> ``` CSS 代码: ``` .slider { width: 500px; height: 300px; overflow: hidden; position: relative; } .slider-item { width: 500px; height: 300px; position: absolute; } .slider-item:nth-child(1) { left: 0; } .slider-item:nth-child(2) { left: 500px; } .slider-item:nth-child(3) { left: 1000px; } .slider-item { transition: all 0.5s ease-in-out; } .slider-item.active { left: 0; } ``` JavaScript 代码: ``` var sliderItems = document.querySelectorAll('.slider-item'); var currentIndex = 0; function nextSlide() { sliderItems[currentIndex].classList.remove('active'); currentIndex = (currentIndex + 1) % sliderItems.length; sliderItems[currentIndex].classList.add('active'); } setInterval(nextSlide, 3000); ``` 这个示例代码实现了一个简单的自动轮播效果,每隔 3 秒钟自动切换到下一个轮播项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值