用图片填满整个div并使整个div成为可点击的链接

3
我有一个圆形的div,我想用一张图片填充它,并使整个图片/ div可通过鼠标点击(href)并更改鼠标指针为手型光标。
我查看了一些示例,并尝试了以下内容,但它没有将图像加载到div中。我还想在悬停时缩小图像。
请问如何实现这个效果?
<div class="circleDiv">
    <a href='#'></a>
</div>

.circleDiv{
  position: relative;
  background-color: #09f;
  margin: 30px 70px 30px 70px;
  width: 250px;
  height: 250px;
  border-radius: 50%;
}

.circleDiv a{
  background: url("path_to_image") no-repeat right center;
}
6个回答

2
您可以通过使用background-sizebackground-positiondisplay:hover伪类来实现您的目标。这是相同代码的JSfiddle:https://jsfiddle.net/bhfr0t1m/3/ 我希望这正是您想要的。
更新:
如果您想将正方形图像变成圆形,可以使用以下代码。

.circleDiv{
  position: relative;
  background-color: #09f;
  margin: 30px 70px 30px 70px;
  width: 250px;
  height: 250px;
  border-radius: 50%;
  overflow:hidden;
}

.circleDiv a img{
  border-radius: 50%;
   transform: translate(50%,50%);
   height: 50%;
    width: 50%;
    display: block;
}

.circleDiv a img:hover{
    height: 100%;
    width: 100%;
    transform: translate(0,0);
   
  }
  
<div class="circleDiv">
    <a href='#'><span><img src="http://s27.postimg.org/6ndnxsbqr/index.jpg"/></span></a>
</div>


谢谢 - 在这个示例中,图像呈正方形。您有办法将其缩放以填充圆形div吗? - usert4jju7
@usert4jju7 我已经更新了我的 jsfiddle,请在答案中检查更新后的链接。实际上,您在问题中写的是缩小,而“放大”意味着增加大小。请更新您的问题。此外,您可以在 :hover 的 CSS 定义中将 background-size 属性设置为任何值,以便根据您的方便进行缩放(尽可能多)。 - geeksal
@usert4jju7 更新了答案,将正方形图像转换为圆形图像。 - geeksal
你好,geeksal - 我又遇到了一个问题,与从点击的div开始填充背景颜色到整个页面有关。我在这里创建了一个问题 - http://stackoverflow.com/questions/36232064/html-grow-transition-image-color-to-fill-entire-web-page。如果你愿意帮忙,请告诉我。 - usert4jju7

2

您可以使用以下方法使整个DIV可点击(而不是其中的元素):

<div class="circleDiv" role="button" onClick="location.href='stackoverflow.com'">

将以下CSS添加到div类中(仅更改鼠标指针):

cursor: pointer;

1
我已经更新了你的js fiddle 你需要为img添加:hover,以及将border radius添加到img或wrapper中。仅在wrapper中添加它还需要将overflow设置为hidden。

你好 noa-dev - 我遇到了另一个问题,与从单击的 div 开始向页面填充背景颜色有关。我已经在这里创建了一个问题- http://stackoverflow.com/questions/36232064/html-grow-transition-image-color-to-fill-entire-web-page 。如果您乐意帮忙,请告诉我。 - usert4jju7

1
只需将以下内容添加到 .circleDiv a 中。
.circleDiv a{
  ...

  display: block;
  height: 100%;
  width: 100%;
}

{{链接1:Fiddle}}


谢谢smnbbrv。我已经在 https://jsfiddle.net/7avvwreq/ 上更新了一个可用的图像。如果我放一个正方形的图像,整个图像就变成正方形而不是保持圆形。图像不会缩小到 div 的大小。你能帮忙解决一下吗? - usert4jju7

1

Try this :

<a href='https://www.google.fr/'>
   <div class="circleDiv">
   </div>
</a>

.circleDiv{
   position: relative;
   margin: 30px 70px 30px 70px;
   width: 250px;
   height: 250px;
   border-radius: 50%;
   background: url("path_to_image") no-repeat right center;
   cursor: pointer;
 }

1

看起来很有趣,是使用clip的好时机:)我创建了一个小例子,但没有做太多更改。使用clip可以避免当鼠标到达圆形边缘时出现奇怪的指针变化。

.circleDiv {
   position: relative;
   background-color: #09f;
   margin: 30px 70px 30px 70px;
   width: 250px;
   height: 250px;
   border-radius: 50%;
   overflow: hidden;
}

.circleDiv a {
   background: url('https://placeimg.com/500/500/animals') no-repeat center;
  background-size: fill;
  display: block;
  width: 250px;
  height: 250px;
  -webkit-clip-path: circle(125px at center);
  clip-path: circle(125px at center);
}

/* hover style, could be animated */
.circleDiv a:hover {
  background-size: contain;
}

Fiddle链接


很酷的东西。谢谢 :) - usert4jju7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接