【问题标题】:CSS image border rollover effect without resizing image?CSS图像边框翻转效果而不调整图像大小?
【发布时间】:2013-10-19 23:09:48
【问题描述】:

我几乎不敢问这个问题,因为它看起来很明显,但我就是找不到明确的答案,所以冒着玷污我不存在的声誉的风险,这里是:

有没有办法在悬停时向图像添加扩展的 CSS 内边框,而不影响图像的大小?

这是我自己的代码,尽可能接近:

CSS

* {
-webkit-box-sizing: border-box;
 -moz-box-sizing: border-box;
  -ms-box-sizing: border-box;
      box-sizing: border-box;
}

.media_item_container img {  
border: 3px solid #00205f;

-webkit-transition: all .3s ease;
 -moz-transition: all .3s ease;
   -o-transition: all .3s ease;
  -ms-transition: all .3s ease;
      transition: all .3s ease;
}

.media_item_container img:hover {
border: 10px solid #00205f;
}


.media_item_container a
{
font-weight:bold;
color:#000;
text-decoration:none;
font-size:13px;
}
.media_item_container a:hover
{
color:#fff;
}

HTML

<body bgcolor="#999999">
<div class="media_item_container">

    <div class="media_item_text">
    <a href="#"><img src="http://lorempixel.com/output/business-q-c-158-158-5.jpg" width="158" height="158" class="media_item_thumb" />
    <h3>E-Brochure: <em>Printable e-brochure</em></h3>
    DOWNLOAD »</a>
    </div>
</div>
</body>

http://jsfiddle.net/aKedV/

只是试图确定是否有任何方法可以做到这一点,而不会随着边框尺寸的增加而缩小图像(我基本上明白为什么会发生这种情况,只是我自己似乎无法提出解决方案)。

当我问是否有办法做到这一点时,我应该澄清一下,我认为一定有办法做到这一点,但我很想知道是否有相对简单的方法。

非常感谢!

【问题讨论】:

  • 喜欢这个? jsfiddle.net/aKedV/2 ... 还是这样的? jsfiddle.net/mVaXJ
  • 谢谢 Josh,但我实际上希望它是一个内边框......除非我看到的东西与你不同,否则你发布的 Fiddle 添加了一个外边框,当它移动页面内容时被鼠标悬停。
  • 谢谢!你知道什么......我问了一个愚蠢的问题得到了积分:P
  • 设置图片为CSS背景,边框不影响。

标签: css image hover border


【解决方案1】:

您可以使用轮廓代替边框。

outline:3px solid red;
outline-offset:-3px; //keeping it inside

悬停时

outline:10px solid red;
outline-offset:-10px;

Fiddle

【讨论】:

  • 这也很好用!我只需将每个偏移量减少一个像素,以使边框正好靠在边缘上。谁知道这很容易......所以规则!
  • @ElliottSamuelLemberger:你还在寻找使用边框吗?
  • 谢谢 Lokesh。这个答案和下面 Donte 的答案都可以实现这一目标。
  • @ElliottSamuelLemberger 我的回答 Elliott 有什么问题吗?
  • 不,就像我在上面评论的那样很棒。再次感谢!
【解决方案2】:

伙伴这是我想出的解决方案。不得不更改一些 HTML 和 CSS,但这是我的尝试。希望这有助于交配,干杯

http://jsfiddle.net/aKedV/3/

HTML:

<body bgcolor="#999999">
    <div class="media_item_container">
        <div class="media_item_text">
            <a href="#">
                <div class="border"  style="background: url(http://lorempixel.com/output/business-q-c-158-158-5.jpg);">
                </div>


<h3>E-Brochure: <em>Printable e-brochure</em></h3>
    DOWNLOAD »</a>

    </div>
</div>

CSS:

.border {
    -webkit-transition: all 500ms linear;
    -o-transition: all 500ms linear;
    -moz-transition: all 500ms linear;
    -ms-transition: all 500ms linear;
    -kthtml-transition: all 500ms linear;
    transition: all 500ms linear;
    width: 158px;
    height: 158px;
}
.border:hover {
    -webkit-box-shadow: inset 0px 0px 2px 10px #00205f;
   box-shadow: inset 0px 0px 2px 10px #00205f;
}
.media_item_container a
{
    font-weight:bold;
    color:#000;
    text-decoration:none;
    font-size:13px;
}
.media_item_container a:hover
{
    color:#fff;
}

【讨论】:

  • 干得好!对不起,但我距离能够支持你的答案还有 3 分!看起来你是通过使用嵌入阴影做到的。我确实尝试过,但不知道为什么我不能自己让它工作......非常感谢你的帮助!这正是我想要的。
  • 我知道这是一个额外的问题,但仍然有些相关......当文本悬停在图像上时,是否有一种简单的方法来触发图像上的悬停效果?再次感谢!
猜你喜欢
  • 2013-06-20
  • 2011-07-24
  • 2016-12-26
  • 2016-02-29
  • 2011-03-18
  • 1970-01-01
  • 2018-09-12
  • 2018-09-03
  • 1970-01-01
相关资源
最近更新 更多