CSS - 将鼠标悬停在圆形图像上后固定边缘

时间:2015-07-19 16:43:28

标签: html css css3

我创建了div元素,并且我还添加了border-radius属性,以使div更美观。我还在-webkit-transition: opacity .25s ease添加了div属性,以便在用户将鼠标悬停在div上时创建到黑暗叠加层的转换。然后,我遇到了一个可以通过这些图像解释的问题。

div元素之外的光标:

enter image description here

将光标移动到div元素内: enter image description here

光标完全位于div元素内: enter image description here

所以,我猜这是转换的问题,它是由图像的圆形边框引起的。这有点烦人,我想删除它,但我不知道如何。我在这里附上了代码:

注意:.memX(其中X是数字)是指每个div元素。有10个.mem元素。

mem1, .mem2, .mem3, .mem4, .mem5, .mem6, .mem7, .mem8, .mem9, .mem10 {
  height: 200px;
  width: 200px;
  margin: 0px 31px;
  display: inline-block;
  border-radius: 10px;
  border: solid;
  border-width: thin;
  border-color: #d6d6d6;
  overflow: hidden;
}

.overlay {
  background: rgba(0,0,0,.4);
  text-align: center;
  height: 100px;
  width: 100%;
  padding: 45px 0px 66px 0px;
  opacity: 0;
  -webkit-transition: opacity .25s ease;
  -moz-transition: opacity .25s ease;
}

.insidetext {
  font-family: "Source Sans Pro", Helvetica, Arial, sans-serif;
  font-weight: lighter;
  color: rgba(255,255,255,.85);
  font-size: 1.5em;
  margin-top: 35px;
}

.mem1:hover .overlay, .mem2:hover .overlay, .mem3:hover .overlay, .mem4:hover .overlay, .mem5:hover .overlay, .mem6:hover .overlay, .mem7:hover .overlay, .mem8:hover .overlay, .mem9:hover .overlay {
  border-radius: 10px;
  opacity: 1;
}

.mem1 {
  background-image: url(members/giles.png);
}

这似乎是一个普遍存在的问题。您可以在此CodePen中查看此特定问题:http://codepen.io/ianfarb/pen/ikeAf

3 个答案:

答案 0 :(得分:1)

嗯,我很困惑为什么你有这么多mem课程。类名可以重用,ID选择器不能。那么为什么只有.mem1才能拥有.mem等等?

无论如何,为了解决您的问题,您需要做的就是将border-radius:5px;添加到#overlay,这样可以为您提供所需的效果。

答案 1 :(得分:1)

尝试使用此..

body {
  background: #e7e7e7;
}

#box {
  width: 300px;
  height: 200px;
  box-shadow: inset 1px 1px 40px 0 rgba(0, 0, 0, .45);
  border-bottom: 2px solid #fff;
  border-right: 2px solid #fff;
  margin: 5% auto 0 auto;
  background: url(http://ianfarb.com/wp-content/uploads/2013/10/nicholas-hodag.jpg);
  background-size: cover;
  border-radius: 5px;
  overflow: hidden;
  position: relative;
}

#overlay {
  background: rgba(0, 0, 0, .75);
  text-align: center;
  /*padding: 45px 0 66px 0;*/
  display: table;
  width: 100%;
  height: 100%;
  opacity: 0;
  border-radius: 5px;
  -webkit-transition: opacity .25s ease;
  -moz-transition: opacity .25s ease;
}

#box:hover #overlay {
  opacity: 1;
}

#plus {
  font-family: Helvetica;
  font-weight: 900;
  color: rgba(255, 255, 255, .85);
  font-size: 96px;
  display: table-cell;
  vertical-align: middle;
}

http://codepen.io/anon/pen/VLBqvE

答案 2 :(得分:0)

我的例子你有两个div,一个是父(盒子),另一个是冷冻(叠加),你将边框应用于父母,你的悬停效果是冷冻的,所以当你悬停它将应用过渡冷藏。并且chilled没有 border-radius:5px; 所以将 border-radius:5px; 也应用到你的chilled id。所以我认为这是一个溢出问题

但你可以试试这个解决方案:

解决方案是从转换中移除延迟,然后它会起作用,因为它会给您带来问题的延迟。

请参阅此示例,了解从转换中删除的延迟:http://jsfiddle.net/9phk87x8/ 我认为它适用于您。

#overlay {
    background: rgba(0, 0, 0, .75);
    text-align: center;
    padding: 45px 0 66px 0;
    opacity: 0;
    -webkit-transition: opacity ease;
    -moz-transition: opacity ease;
}