CSS3 按钮生成器

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

拖动元素,选择颜色,为您的按钮创建漂亮的类……隆重推出 按钮生成器


哇,那真是一个漂亮的按钮。

我之所以说“CSS3”,是因为这些按钮使用了渐变、阴影和圆角,这些特性极大地增强了它们的按钮感。在不支持这些属性的旧版浏览器中,回退方案是使用纯色背景、无阴影和方形角。这没什么大不了的。

我希望这一点非常明显,但要使用此按钮生成器,您只需调整设置直到获得一个好看的按钮,然后按下按钮,它就会为您提供 CSS 代码。您可以随意复制和粘贴。现在,您可以在 HTML 元素上使用类名“button”来使它们看起来像按钮。生成的 CSS 格式不是很好看。如果有人有关于如何改进格式的想法,请告诉我。

超级棒的赋能理念……

……关于按钮生成器预览是如何工作的。

使用 JavaScript 可以轻松地动态更改元素的 CSS。但是我们如何更改 :hover 状态呢?答案是我们无法真正做到,至少不是很容易。我们可以附加一个 mouseenter 事件,该事件将应用一些新的 CSS 来覆盖旧的 CSS,以及一个 mouseleave 事件来将其恢复原状。对于如此相对较小的事情来说,这需要大量的开销。如果我们也想要控制 :active 状态,情况会变得更加复杂。

此按钮生成器向您显示了您创建的按钮的实时工作版本,包括 :hover 和 :active 状态。它是无需将任何 JavaScript 事件附加到按钮本身来实现的。那么它是如何实现的呢?我使用了从 Doug Neiner 那里借鉴的技术,他在 jQConf 上(作为完全不同的应用程序的一小部分)展示了该技术。

好吧,好吧,我继续说。这个想法是将一个<style>元素附加到<head>中,该元素会覆盖现有的 CSS(文档内 CSS 会自动覆盖具有相同特异性值的相同选择器的链接 CSS)。然后,当某些内容发生更改时,您只需将整个样式标签删除并替换它。

附加新的样式

$("head").append("<style type='text/css'></style>");

文本变量,用于保存 CSS 代码。当选项发生更改时,请保持此文本最新。

var cssText = "";

使用 replaceWith() 函数删除现有的样式元素并应用新的样式元素

$("style").replaceWith("<style type='text/css'>" + cssText + "</style>");

删除部分很重要。最初,我尝试在样式元素上放置一个 ID,并在运行时替换其中的内容。它确实替换了内容,但这些更改并未反映在页面上。显然,为了强制浏览器使用新的 CSS 重新渲染,您必须将其删除并放回。

获取它,摇晃它

如果出于任何原因您想在本地运行它,我将提供该工具的源代码。或者更好的是,因为您想让它更酷。如果您这样做,请分享。

查看演示   下载文件