如何使z-index=1的元素,在css中响应。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使z-index=1的元素,在css中响应。相关的知识,希望对你有一定的参考价值。

我正在使用这里描述的代码,在 密码笔我使用的是美国地图的图片,而不是世界地图。但是由于这里的代码在点上使用z-index=1,所以它们没有得到响应。

我试过了vh和vw,试过了百分比,但是当我调整我的屏幕大小时,这些点就会到处乱跑。

有谁能帮帮我,如何让这些小点响应?我只是想让它们留在地图上,不管在地图上的什么地方。

注:如果你有其他方法实现同样的事情,请提及。

下面是codepen上的代码。HTML:

<div id="map">
  <div class="img-container">
      <img src="http://res.cloudinary.com/reddelicious/image/upload/v1496891721/map_no-dots_mptb8a.png" alt="Map">
  </div>
  <div id="dots">
      <div class="dot dot-1"></div>
      <div class="dot dot-2"></div>
      <div class="dot dot-3"></div>
      <div class="dot dot-4"></div>
      <div class="dot dot-5"></div>
      <div class="dot dot-6"></div>
      <div class="dot dot-7"></div>
      <div class="dot dot-8"></div>
      <div class="dot dot-9"></div>
      <div class="dot dot-10"></div>
      <div class="dot dot-11"></div>
      <div class="dot dot-12"></div>
      <div class="dot dot-13"></div>
      <div class="dot dot-14"></div>
      <div class="dot dot-15"></div>
      <div class="dot dot-16"></div>
      <div class="dot dot-17"></div>
      <div class="dot dot-18"></div>
      <div class="dot dot-19"></div>
      <div class="dot dot-20"></div>
      <div class="dot dot-21"></div>
  </div>

CSS:

/* Original pulsing dots by sharla */

@keyframes pulse 
  0% box-shadow: 0px 0px 0px 0px rgba(52, 106, 180, 1); 
  100% box-shadow: 0px 0px 0px 7px rgba(52, 106, 180, 0.0);


body 
    background-color: #111114;


img 
    width: 100%;
    max-width: 100%;


#map 
    position: relative;
    max-width: 1280px;
    margin: 0 auto;


.dot 
    width: 9px;
    height: 9px;
    border-radius: 50%;
    animation: pulse 1.5s infinite ease-out;
    background: #346ab4;
    position: absolute;
    z-index: 1;
    top: 50%;
    left: 50%;
    &:before 
        content: '';
        position: absolute;
        width: 3px;
        height: 3px;
        border-radius: 50%;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        margin: auto;
        background: rgba(255, 255, 255, 0.4);
    
    &:nth-child(odd)  
        animation: pulse 1.5s infinite ease-out 0.3s; 
    
    &-1  top: 34%; left: 14.5%; 
    &-2  top: 43%; left: 15.5%; 
    &-3  top: 51%; left: 20.5%; 
    &-4  top: 61%; left: 27%; 
    &-5  top: 68%; left: 29%; 
    &-6  top: 79%; left: 29%; 
    &-7  top: 39%; left: 47%; 
    &-8  top: 30%; left: 46%; 
    &-9  top: 27%; left: 47%; 
    &-10  top: 31%; left: 47.5%; 
    &-11  top: 34%; left: 48.5%; 
    &-12  top: 47%; left: 53%; 
    &-13  top: 56%; left: 47.5%; 
    &-14  top: 78%; left: 53%; 
    &-15  top: 56%; left: 76%; 
    &-16  top: 62%; left: 78%; 
    &-17  top: 41%; left: 79%; 
    &-18  top: 52%; left: 70%; 
    &-19  top: 26%; left: 51.5%; 
    &-20  top: 39%; left: 27%; 
    &-21  top: 82%; left: 88.5%; 

    @media (min-width: 768px) 
        width: 16px;
        height: 16px;
        &:before 
            width: 4px;
            height: 4px;
        
        @keyframes pulse 
            0% box-shadow: 0px 0px 0px 0px rgba(52, 106, 180, 1); 
            100% box-shadow: 0px 0px 0px 10px rgba(52, 106, 180, 0.0);
        
    

答案

这似乎对我来说是完美的响应。你可以使用 vh 但我认为你忘了删除媒体 heightwidth 属性。你不必在媒体查询中改变它,当 heightwidth 是对应于视口

@keyframes pulse 
  0% box-shadow: 0px 0px 0px 0px rgba(52, 106, 180, 1); 
  100% box-shadow: 0px 0px 0px 7px rgba(52, 106, 180, 0.0);


body 
    background-color: #111114;


img 
    width: 100%;
    max-width: 100%;


#map 
    position: relative;
    max-width: 1280px;
    margin: 0 auto;


.dot 
    width: 5vh;
    height: 5vh;
    border-radius: 50%;
    animation: pulse 1.5s infinite ease-out;
    background: #346ab4;
    position: absolute;
    z-index: 1;
    top: 50%;
    left: 50%;
    &:before 
        content: '';
        position: absolute;
        width: 1vh;
        height: 1vh;
        border-radius: 50%;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        margin: auto;
        background: rgba(255, 255, 255, 0.4);
    
    &:nth-child(odd)  
        animation: pulse 1.5s infinite ease-out 0.3s; 
    
    &-1  top: 34%; left: 14.5%; 
    &-2  top: 43%; left: 15.5%; 
    &-3  top: 51%; left: 20.5%; 
    &-4  top: 61%; left: 27%; 
    &-5  top: 68%; left: 29%; 
    &-6  top: 79%; left: 29%; 
    &-7  top: 39%; left: 47%; 
    &-8  top: 30%; left: 46%; 
    &-9  top: 27%; left: 47%; 
    &-10  top: 31%; left: 47.5%; 
    &-11  top: 34%; left: 48.5%; 
    &-12  top: 47%; left: 53%; 
    &-13  top: 56%; left: 47.5%; 
    &-14  top: 78%; left: 53%; 
    &-15  top: 56%; left: 76%; 
    &-16  top: 62%; left: 78%; 
    &-17  top: 41%; left: 79%; 
    &-18  top: 52%; left: 70%; 
    &-19  top: 26%; left: 51.5%; 
    &-20  top: 39%; left: 27%; 
    &-21  top: 82%; left: 88.5%; 

    @media (min-width: 768px) 
        @keyframes pulse 
            0% box-shadow: 0px 0px 0px 0px rgba(52, 106, 180, 1); 
            100% box-shadow: 0px 0px 0px 10px rgba(52, 106, 180, 0.0);
        
    

以上是关于如何使z-index=1的元素,在css中响应。的主要内容,如果未能解决你的问题,请参考以下文章

CSS浮动定位与z-index层叠等级详解——响应式Web系列学习笔记

在div+css中如何让两个元素的层级关系改变,z-index,不是很好使……

CSS 中z-index全解析(摘自阿里西西)

CSS样式中如何将下面的元素覆盖上面的元素?

CSS3 过渡 - 如何延迟 z-index 属性的重置?

css样式 z index 会在啥情况下无效