首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换HTML元素会显示在不同的位置吗?

转换HTML元素会显示在不同的位置吗?
EN

Stack Overflow用户
提问于 2020-07-29 22:57:44
回答 1查看 18关注 0票数 0

我正在用html创建一张卡片。我的目标是当我将鼠标悬停在卡片主体上时,我想显示购物车图标,但它确实显示了与我预期的不同的地方。我希望它直接显示在卡片的页脚上。

下面是react组件:

代码语言:javascript
复制
  <div className="card-body ">
          <div className="card-img-container translate-cart-btn">
            <Link to={`/shop/${title}/${name}`}>
              <img src={imageUrl} alt={name} className="card-img" />
            </Link>
          </div>

          <button
            className="cart-btn "
            onClick={addToCart}
            disabled={inCart ? true : false}
          >
            {addedToCart ? (
              <p disabled>In Cart</p>
            ) : (
              <TiShoppingCart className="icon" />
            )}
          </button>
        </div>

        <div className="card-footer">
          <span className="name">{name}</span>
          <span>
            <div className="price-and-dollar">
              <span className="dollar-sign">$</span>
              <span className="price"> {price}</span>
            </div>
          </span>
        </div>
      </div>

下面是css:

代码语言:javascript
复制
.collection-item {
  background-color: $gray-700;
  display: flex;
  flex-direction: column;
  width: 23vw;
  .card-body {
    width: 100%;
    display: flex;
    justify-content: center;
    flex-direction: column;
    &:hover {
      .card-img {
        border: 0.3rem solid $main-black;
        // box-shadow: 2px 0 5px 0 rgb(136, 12, 12);
      }
      .cart-btn {
        transform: translate(0, 0);
      }
    }
  }
}
.card-img-container {
  height: 100%;
  width: 100%;
  overflow: hidden;
  position: relative;
  text-align: center;
  &:hover {
    .card-img {
      transform: scale(1.2);
    }
  }

  .card-img {
    transition: all 1s linear;

    margin-top: 1rem;
    margin-bottom: 1rem;
    width: 21rem;
    height: 24rem;
  }
}

// .card-body:hover .cart-btn {
//   transform: translate(0, 0);
// }

.card-footer {
  border-top: transparent;
  transition: all 1s linear;
  display: flex;
  align-items: center;
  width: 100%;
  justify-content: space-evenly;
  font-family: Alice-Regular;
  font-weight: 600;
  color: white;

  .price-and-dollar {
    display: flex;
    text-align: right !important;
    padding-right: 0.5rem;
  }
  .dollar-sign {
    color: black;
  }
  .price {
    font-size: 2rem;
    font-family: Lobster-Regular;
    color: rgb(167, 37, 37);
    font-weight: bold;
  }
}
.translate-cart-btn:hover .cart-btn {
  position: relative;
  transform: translate(0, 0);
}

.cart-btn {
  position: absolute;
  right: 0;
  bottom: 0;
  padding: 0.2rem 0.4rem;
  font-size: 1rem;
  border-radius: 0.5rem 0 0 0;
  transform: translate(100%, 100%); /*move right and bottom */
  transition: all 1s linear;
  // }
  // .card-img-container:hover .cart-btn {
  //   transform: translate(0, 0);
  // }
  .cart-btn:hover {
    color: green;
    cursor: pointer;
  }
  .icon {
    height: 2.4rem;
    width: 2.8rem;
  }
}
EN

回答 1

Stack Overflow用户

发布于 2020-07-29 23:03:56

我不确定这是否能解决你的问题,但是试试这个:

代码语言:javascript
复制
.card-body{
   position: relative;
}

出现这个问题的原因是,当使用'position :absolute‘时,它被绝对定位到没有position :static的最接近的父元素(对于所有元素,static都是浏览器的默认设置)。而离你最近的父母是..card body

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63156518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档