CSS图像边框翻转效果而不调整图像大小?

Posted

技术标签:

【中文标题】CSS图像边框翻转效果而不调整图像大小?【英文标题】:CSS image border rollover effect without resizing image? 【发布时间】: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"   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背景,边框不影响。 【参考方案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 分!看起来你是通过使用嵌入阴影做到的。我确实尝试过,但不知道为什么我不能自己让它工作......非常感谢你的帮助!这正是我想要的。 我知道这是一个额外的问题,但仍然有些相关......当文本悬停在图像上时,是否有一种简单的方法来触发图像上的悬停效果?再次感谢!

以上是关于CSS图像边框翻转效果而不调整图像大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GraphicsMagick 从图像中裁剪/调整背景/边框的大小

更改表格的边框而不导致表格调整大小

html 使用CSS更改图像的大小,为其添加边框并更改其样式和边框半径

使用CSS的图像内边框?

带纹理背景的 CSS 锯齿形边框

画图软件中调整图像的大小