这里需要特别注意!推拉门是一种相当古老的技术。它曾在网络上风靡一时,但如今可能不是最明智的选择。我们现在有了 border-radius 和渐变背景等等,这些都能实现我们当年使用推拉门想要达到的效果。
但记录其工作原理仍然很有趣,所以这里就有了
<a href="#" class="button">
<span>Sliding Doors Button</span>
</a>
.button {
float: left;
clear: both;
background: url(RIGHT_SIDE.png) top right no-repeat;
margin: 5px;
padding-right: 20px;
color: white;
text-decoration: none;
}
.button span {
background: url(LEFT_SIDE.png) top left no-repeat;
line-height: 22px;
padding: 7px 0 5px 18px;
display: block;
}
.button:hover {
background-position: right -34px;
}
.button:hover span {
background-position: 0 -34px; color: #fff;
}
假设有如下图形


查看 CodePen 上 Chris Coyier (@chriscoyier) 的作品 推拉门按钮。
嘿,Chris!很高兴你喜欢这个!我当时正在为 Biola 大学制作一个网站,需要一些美观且可缩放的东西……以便于将来轻松更新他们的网站 - 然后这个想法就出现在我的脑海里了!我非常希望这对更多设计师有所帮助!享受!
您好,Chris,
非常感谢这种方法,因为它非常有效。但是,有一个问题导致它无法达到 100% 的灵活性……
如何使其与具有透明背景的圆角按钮一起使用?我遇到的问题是右侧没问题,但左侧的角是透明的,因此按钮的主体显示在左侧角的下方……
您对此令人困惑的问题有任何解决方案吗?
谢谢!
我想 Chris 没有?
嘿,Mark,你的名字太棒了!无论如何,这正是我试图找到解决方案的问题。如果我找到了任何方法,我会在这里发布。或者,如果您已经有了,请告诉我。
使用相对定位微调它。
有没有人使用各种类型的 <input> 标签的示例?我正在做一个,但 IE 一直弄乱图像的对齐方式。
非常有帮助。就像黑暗中的灯塔。
谢谢……
不确定这是否对任何人有帮助,但如果您需要居中此按钮,请删除 float:left 并将 display:block 的两个实例更改为 display: inline-block。这样,如果您将按钮放入设置为 text-align:center 的元素中,它将居中但保持正确的宽度。
感谢 Joe 提供的这个很棒的技巧!它帮了大忙。
太好了,它真的很有帮助。
演示很酷,这是我需要的代码。谢谢
您的网站正是我需要的!感谢您的所有帮助!您的说明清晰易懂,完美无缺!
您知道如何居中此按钮吗?它无法在 div 或表格单元格内居中。
感谢您的提示。我每天都将您的网站用作参考。尽管如此,我仍然迫不及待地希望浏览器能够更好地支持,这样我就不必再使用此技术了。
在 IE8 中不起作用。当我在按钮的右侧悬停时,右侧会消失。
第一次尝试就完美了
IE7/IE8 也适用
我认为开发人员了解这一点很重要:链接不是按钮
我非常喜欢这篇文章。谢谢!