css给div添加一个旋转的背景图并且不影响div本身

css yekong

css给div添加一个旋转的背景图并且不影响div本身

动态效果

你可以创建一个额外的 ::after 伪元素来放置背景图像,这样就可以在不影响 div 本身的情况下实现背景图的渲染。以下是一个示例:

.echartsBody {
  position: relative;
  width: 100%;
  height: calc(70% - 0px);
  overflow: hidden; /* 防止背景图超出容器 */
}

.echartsBody::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: url("../assets/bg.png") center center no-repeat;
  background-size: 50%;
  z-index: -1; /* 将背景图放在内容之下 */
}

此代码创建了一个与 .echartsBody 大小和位置相同的 ::after 伪元素,并将背景图像应用于该伪元素。将 z-index 设置为 -1 可以确保背景位于内容之下。如果你的页面有其他的 z-index 层级,你可能需要调整这个 z-index 值。

请注意,这种方法可能会在某些较老的浏览器中无法正常工作,因为它们可能不支持 ::after 伪元素或 background-size 属性。

背景图片旋转

要使背景图像旋转,你可以使用 CSS 动画。这是一个简单的例子,将背景图像旋转360度,持续时间为10秒:

.echartsBody {
  position: relative;
  width: 100%;
  height: calc(70% - 0px);
  overflow: hidden; 
}

.echartsBody::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: url("../assets/bg.png") center center no-repeat;
  background-size: 50%;
  z-index: -1;
  animation: spin 10s linear infinite; /* 添加动画 */
}

/* 定义一个名为spin的关键帧动画 */
@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

在这个例子中,我们定义了一个名为 spin 的关键帧动画,使元素从 0 度旋转到 360 度。然后我们在 ::after 伪元素上应用了这个动画,设置为无限循环(infinite),使得背景图持续旋转。

注意,动画效果会取决于你的背景图片和容器的大小。你可能需要根据你的具体需求调整旋转速度(改变 10s)或旋转方向(改变 rotate(360deg)rotate(-360deg))。

喜欢