CSS:在div元素悬停上用〜或+动画另一个div

时间:2017-12-09 22:47:43

标签: html css css3 css-transitions

我已经尝试了很多方法让这个工作正常,但没有成功..我注意到这个问题已经被问过几次了,我已经尝试过我的解决方案了发现..但没有成功..

所以,如果你们中的某个人发现这个问题是重复的话,我会先说对不起:(

悬停元素是" food-box",需要缩放动画的元素是" food-box-image" :

 <div class="food-box">
        <div class="food-box-image" style="background-image: url(myimage.jpg);"></div>

...我试图让动画像这样工作:

 .food-box:hover ~ .foox-box-image {
        -moz-transform: scale(1.1);
        -webkit-transform: scale(1.1);
        transform: scale(1.1);
  border:8px solid red;
}

但它不会触发:

我使它工作的唯一方法是指定.food-box-image:悬停,但是当悬停所需的div元素时它不会触发..

这里有完整的代码(运行):

任何人都知道如何做到这一点?

&#13;
&#13;
.fixedbuttons-container {
    position: absolute;
    width: 100%;
}

.buttons,
.fixedbuttons {
    display: flex;
    flex-flow: row wrap;
}

    .fixedbuttons > * {
        width: 25%;
    }

        .fixedbuttons > * > * {
            width: 100%;
            text-align: center;
        }
.food-box-container {
    padding: 10px;
}

.food-box {
    flex: 1;
    position: relative;
    background-color: white;
    min-height: 300px;
    background-color: #ffffff;
    -webkit-box-shadow: 0px 0px 20px 4px rgba(0, 0, 0, 0.35);
    -moz-box-shadow: 0px 0px 20px 4px rgba(0, 0, 0, 0.35);
    box-shadow: 0px 0px 20px 4px rgba(0, 0, 0, 0.35);
    border-color: #666666;
    border: 1px solid #666666;
    word-wrap: break-word;
    margin: 0 !important;
    padding: 0 !important;
    -moz-transition: all .1s ease-in;
    -o-transition: all .1s ease-in;
    -webkit-transition: all .1s ease-in;
    transition: all .1s ease-in;
}

    .food-box:hover {
        cursor: pointer;
        -webkit-box-shadow: 0px 0px 20px 4px rgba(255, 255, 255, 0.35);
        -moz-box-shadow: 0px 0px 20px 4px rgba(255, 255, 255, 0.35);
        box-shadow: 0px 0px 20px 4px rgba(255, 255, 255, 0.35);
        -moz-transition: all .1s ease-in;
        -o-transition: all .1s ease-in;
        -webkit-transition: all .1s ease-in;
        transition: all .1s ease-in;
    }

    .food-box:hover ~ .foox-box-image {
            -moz-transform: scale(1.1);
            -webkit-transform: scale(1.1);
            transform: scale(1.1);
      border:8px solid red;
    }

    .food-box .food-box-image {
        position: absolute top: 0 left: 0;
        background-size: cover;
        width: 100%;
        min-height: 150px;
        background-color: #ffffff;
        -moz-transition: all 0.3s;
        -webkit-transition: all 0.3s;
        transition: all 0.3s;
    }

    .food-box .food-box-content {
        -moz-transition: all .1s ease-in;
        -o-transition: all .1s ease-in;
        -webkit-transition: all .1s ease-in;
        transition: all .1s ease-in;
        position: absolute bottom: 0 left: 0;
        word-wrap: break-word;
        width: 100%;
        min-height: 150px;
        background-color: #ffd531;
        color: #000000;
        font-size: 80%;
        padding-top: 60px;
        padding-left: 5px;
        padding-right: 5px;
    }

    .food-box:hover > .food-box .food-box-content {
        background: yellow !important;
        -moz-transition: all .1s ease-in;
        -o-transition: all .1s ease-in;
        -webkit-transition: all .1s ease-in;
        transition: all .1s ease-in;
    }

    .food-box .food-box-badge {
        display: table;
        background: #ffffff !important;
        position: absolute;
        left: 50%;
        top: 50%;
        -webkit-transform: translate(-50%, -50%);
        transform: translate(-50%, -50%);
        width: 100px;
        height: 100px;
        line-height: 100px;
        border-radius: 50%;
        font-size: 12px;
        color: #000000;
        text-align: center;
        -webkit-box-shadow: 0px 0px 39px 4px rgba(0, 0, 0, 0.75);
        -moz-box-shadow: 0px 0px 39px 4px rgba(0, 0, 0, 0.75);
        box-shadow: 0px 0px 39px 4px rgba(0, 0, 0, 0.75);
        border-color: #d3e0e9;
        border: 1px solid #b3c9e5;
        padding-left: 10px;
        padding-right: 10px;
    }

        .food-box .food-box-badge span {
            color: #666;
            display: table-cell;
            vertical-align: middle;
            line-height: 1.2em;
            word-wrap: break-word;
        }
&#13;
<div class="fixedbuttons-container">
  <div class="fixedbuttons">
    <div>
      <a>
        <div class="food-box-container">
          <div class="food-box">
            <div class="food-box-image" style="background-image: url(https://assets.epicurious.com/photos/57c5c6d9cf9e9ad43de2d96e/master/pass/the-ultimate-hamburger.jpg);"></div>
            <div class="food-box-badge"><span>Sydhavsmeny</span></div>
            <div class="food-box-content">
              adslkfjaølkfj
            </div>
          </div>
        </div>
      </a>
    </div>
    <div>
      <a>
        <div class="food-box-container">
          <div class="food-box">
            <div class="food-box-image scalable" style="background-image: url(https://assets.epicurious.com/photos/57c5c6d9cf9e9ad43de2d96e/master/pass/the-ultimate-hamburger.jpg);"></div>
            <div class="food-box-badge"><span>Sydhavsmeny</span></div>
            <div class="food-box-content">
              adslkfjaølkfj
            </div>
          </div>
        </div>
      </a>
    </div>
  </div </div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

第一个是@panther指出要用foox*替换的拼写错误.food-box:hover > .foox-box-image

现在,如果您只想在容器框内缩放,请将overflow: hidden应用于包裹容器food-box

希望这是你所期待的。

.fixedbuttons-container {
    position: absolute;
    width: 100%;
}

.buttons,
.fixedbuttons {
    display: flex;
    flex-flow: row wrap;
}

    .fixedbuttons > * {
        width: 25%;
    }

        .fixedbuttons > * > * {
            width: 100%;
            text-align: center;
        }
.food-box-container {
    padding: 10px;
}

.food-box {
    overflow: hidden;
    flex: 1;
    position: relative;
    background-color: white;
    min-height: 300px;
    background-color: #ffffff;
    -webkit-box-shadow: 0px 0px 20px 4px rgba(0, 0, 0, 0.35);
    -moz-box-shadow: 0px 0px 20px 4px rgba(0, 0, 0, 0.35);
    box-shadow: 0px 0px 20px 4px rgba(0, 0, 0, 0.35);
    border-color: #666666;
    border: 1px solid #666666;
    word-wrap: break-word;
    margin: 0 !important;
    padding: 0 !important;
    -moz-transition: all .1s ease-in;
    -o-transition: all .1s ease-in;
    -webkit-transition: all .1s ease-in;
    transition: all .1s ease-in;
}

    .food-box:hover {
        cursor: pointer;
        -webkit-box-shadow: 0px 0px 20px 4px rgba(255, 255, 255, 0.35);
        -moz-box-shadow: 0px 0px 20px 4px rgba(255, 255, 255, 0.35);
        box-shadow: 0px 0px 20px 4px rgba(255, 255, 255, 0.35);
        -moz-transition: all .1s ease-in;
        -o-transition: all .1s ease-in;
        -webkit-transition: all .1s ease-in;
        transition: all .1s ease-in;
    }

    .food-box:hover > .food-box-image {
            -moz-transform: scale(1.1);
            -webkit-transform: scale(1.1);
            transform: scale(1.1);
    }

    .food-box .food-box-image {
        position: absolute top: 0 left: 0;
        background-size: cover;
        width: 100%;
        min-height: 150px;
        background-color: #ffffff;
        -moz-transition: all 0.3s;
        -webkit-transition: all 0.3s;
        transition: all 0.3s;
    }

    .food-box .food-box-content {
        -moz-transition: all .1s ease-in;
        -o-transition: all .1s ease-in;
        -webkit-transition: all .1s ease-in;
        transition: all .1s ease-in;
        position: absolute bottom: 0 left: 0;
        word-wrap: break-word;
        width: 100%;
        min-height: 150px;
        background-color: #ffd531;
        color: #000000;
        font-size: 80%;
        padding-top: 60px;
        padding-left: 5px;
        padding-right: 5px;
    }

    .food-box:hover > .food-box .food-box-content {
        background: yellow !important;
        -moz-transition: all .1s ease-in;
        -o-transition: all .1s ease-in;
        -webkit-transition: all .1s ease-in;
        transition: all .1s ease-in;
    }

    .food-box .food-box-badge {
        display: table;
        background: #ffffff !important;
        position: absolute;
        left: 50%;
        top: 50%;
        -webkit-transform: translate(-50%, -50%);
        transform: translate(-50%, -50%);
        width: 100px;
        height: 100px;
        line-height: 100px;
        border-radius: 50%;
        font-size: 12px;
        color: #000000;
        text-align: center;
        -webkit-box-shadow: 0px 0px 39px 4px rgba(0, 0, 0, 0.75);
        -moz-box-shadow: 0px 0px 39px 4px rgba(0, 0, 0, 0.75);
        box-shadow: 0px 0px 39px 4px rgba(0, 0, 0, 0.75);
        border-color: #d3e0e9;
        border: 1px solid #b3c9e5;
        padding-left: 10px;
        padding-right: 10px;
    }

        .food-box .food-box-badge span {
            color: #666;
            display: table-cell;
            vertical-align: middle;
            line-height: 1.2em;
            word-wrap: break-word;
        }
<div class="fixedbuttons-container">
  <div class="fixedbuttons">
    <div>
      <a>
        <div class="food-box-container">
          <div class="food-box">
            <div class="food-box-image" style="background-image: url(https://assets.epicurious.com/photos/57c5c6d9cf9e9ad43de2d96e/master/pass/the-ultimate-hamburger.jpg);"></div>
            <div class="food-box-badge"><span>Sydhavsmeny</span></div>
            <div class="food-box-content">
              adslkfjaølkfj
            </div>
          </div>
        </div>
      </a>
    </div>
    <div>
      <a>
        <div class="food-box-container">
          <div class="food-box">
            <div class="food-box-image scalable" style="background-image: url(https://assets.epicurious.com/photos/57c5c6d9cf9e9ad43de2d96e/master/pass/the-ultimate-hamburger.jpg);"></div>
            <div class="food-box-badge"><span>Sydhavsmeny</span></div>
            <div class="food-box-content">
              adslkfjaølkfj
            </div>
          </div>
        </div>
      </a>
    </div>
  </div </div>