CSS悬停不居中

时间:2018-03-06 10:22:53

标签: html css css3

我正在创建一个包含用户名称的div,当它们悬停在个人资料图片上时,它会在图像上显示名称,当我这样做时,它不会将div放在图像上,而是仅仅是在为网站设计样式时导致问题。

我的CSS如下:

.miniProfileImage {
    border-radius: 100%;
    border: 3px dashed #28A745;
    width: 100%;
    max-width: 200px;
    height: auto;
    transition: .5s ease;
    backface-visibility: hidden;
    opacity: 1;
    display: block;
}

.middle {
    transition: .5s ease;
    opacity: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    text-align: center;    
}

.img-container {
    position: relative;
    width: 50%;
}

.img-container:hover .miniProfileImage {
    opacity: 0.3;
}

.img-container:hover .middle {
    opacity: 1;
}

.middleText {
  background-color: #4CAF50;
  color: white;
  font-size: 16px;
  padding: 16px 32px;
}

可以在此处看到HTML标记示例:

<div class='img-container'>               
  <img class='miniProfileImage' src='http://via.placeholder.com/500x500'>
  <div class='middle'>
    <p class='middleText'>Some Name</p>
  </div>
</div> 

我还创建了一个JS小提琴来代表正在发生的事情

.miniProfileImage {
    border-radius: 100%;
    border: 3px dashed #28A745;
    width: 100%;
    max-width: 200px;
    height: auto;
    transition: .5s ease;
    backface-visibility: hidden;
    opacity: 1;
    display: block;
}

.middle {
    transition: .5s ease;
    opacity: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    text-align: center;    
}

.img-container {
    position: relative;
    width: 50%;
}

.img-container:hover .miniProfileImage {
    opacity: 0.3;
}

.img-container:hover .middle {
    opacity: 1;
}

.middleText {
  background-color: #4CAF50;
  color: white;
  font-size: 16px;
  padding: 16px 32px;
}
<div class='img-container'>               
  <img class='miniProfileImage' src='http://via.placeholder.com/500x500'>
  <div class='middle'>
    <p class='middleText'>Some Name</p>
  </div>
</div> 

由于

2 个答案:

答案 0 :(得分:2)

这是因为您的周围<div class='img-container'>的宽度比图像宽。

如果您希望div与图像具有相同的大小,则可以执行以下操作:

.img-container {
  position: relative;
  display: inline-block;
}

.miniProfileImage {
    border-radius: 100%;
    border: 3px dashed #28A745;
    width: 100%;
    max-width: 200px;
    height: auto;
    transition: .5s ease;
    backface-visibility: hidden;
    opacity: 1;
    display: block;
}

.middle {
    transition: .5s ease;
    opacity: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    text-align: center;    
}

.img-container {
    position: relative;
    display: inline-block;
}

.img-container:hover .miniProfileImage {
    opacity: 0.3;
}

.img-container:hover .middle {
    opacity: 1;
}

.middleText {
  background-color: #4CAF50;
  color: white;
  font-size: 16px;
  padding: 16px 32px;
}
<div class='img-container'>               
  <img class='miniProfileImage' src='http://via.placeholder.com/500x500'>
  <div class='middle'>
    <p class='middleText'>Some Name</p>
  </div>
</div> 

答案 1 :(得分:0)

请像这样更正CSS

.img-container {
        position: relative;
        width: 100%;
        max-width: 210px;
    }

.middle {white-space:nowrap}您可以将.miniProfileImage {max-width:100%}提供给图片