网页按钮设计:三种风格及CSS实现
本文更新于2016年7月9日,已将<a></a>
标签替换为<button></button>
标签,以符合现代无障碍最佳实践。如果您正在处理按钮,请始终坚持使用<button></button>
标签。
按钮是任何网页最重要的组成部分之一,它们具有许多不同的状态和功能,所有这些都需要与之前的设计决策正确匹配。在本文中,我们将介绍三种按钮设计理念,以及CSS代码和工具,以帮助新开发者创建自己的按钮。
在深入探讨各种按钮设计理念之前,我们需要回顾一下CSS按钮的一些基础知识。如果您不知道哪些CSS组件会发生变化,那么了解扁平化UI和Material Design在思想上的差异就毫无意义。
让我们快速回顾一下CSS按钮的基础知识。
关键要点
<button></button>
标签是现代无障碍最佳实践中处理按钮的推荐方法。:hover
和:active
)进行操作。CSS按钮基础
良好按钮的定义因网站而异,但存在一些非技术性标准:
您在线上看到的几乎所有按钮都会使用颜色变化、转换时间以及边框和阴影变化的一些变体。这些可以使用各种CSS伪类来利用。我们将重点介绍其中的两个——:hover
和:active
。:hover
伪类定义了当鼠标悬停在对象上时CSS应该如何变化。:active
最常在用户按下鼠标按钮和释放鼠标按钮之间执行。
可以使用伪类更改按钮的整个显示,但这并不是一种用户友好的方法。对于初学者来说,一个好的策略是在保持按钮熟悉性的同时,对按钮的基本要素进行小的或简单的更改。按钮的三个主要基本要素是颜色、阴影和转换时间。
这是最常见的变化。我们可以更改各种属性的颜色,最简单的属性是color
、background-color
和border
属性。在我们跳转到示例之前,让我们首先关注如何选择按钮颜色:
box-shadow
允许您在对象周围添加阴影。可以为每一侧添加独特的阴影,扁平化UI和Material Design都利用了这个想法。要了解更多关于box-shadow
的信息,请查看MDN box-shadow
文档。
transition-duration
允许您为CSS更改添加时间刻度。没有转换时间的按钮会立即更改为其:hover
CSS,这可能会让用户感到反感。本指南中的许多按钮都利用转换时间来营造自然感。
以下示例在:hover
时以柔和的方式(超过0.5秒)转换按钮样式:
<code class="language-css">.color-change { border-radius: 5px; font-size: 20px; padding: 14px 80px; cursor: pointer; color: #fff; background-color: #00A6FF; font-size: 1.5rem; font-family: 'Roboto'; font-weight: 100; border: 1px solid #fff; box-shadow: 2px 2px 5px #AFE9FF; transition-duration: 0.5s; -webkit-transition-duration: 0.5s; -moz-transition-duration: 0.5s; } .color-change:hover { color: #006398; border: 1px solid #006398; box-shadow: 2px 2px 20px #AFE9FF; }</code>
运行转换的代码很复杂,因此旧版浏览器对转换的处理方式略有不同。因此,我们需要为旧版浏览器包含供应商前缀。
<code class="language-css">transition-duration: 0.5s /* 这是标准的,并且适用于大多数现代浏览器 */ -webkit-transition-duration: 0.5s; /* 帮助某些版本的Safari、Chrome和Android */ -moz-transition-duration: 0.5s; /* 帮助Firefox */</code>
为了从<button></button>
元素中去除默认的浏览器样式,以便我们可以为它们提供自定义样式,我们包含以下CSS:
<code class="language-css">button.your-button-class { -webkit-appearance: none; -moz-appearance: none; }</code>
但是,最好将其应用于按钮元素上的类,而不是默认情况下应用于所有按钮。
有很多复杂而有趣的方法可以修改转换如何更改您的CSS,本快速回顾只涵盖了基础知识。
三种按钮样式
这通常是我在我的副项目中添加的第一个按钮,因为它的简洁性适用于各种各样的样式。此样式利用了黑白的自然完美对比。
这两种变化非常相似,因此我们只将介绍带有白色背景的黑色按钮的代码。要获得另一个按钮,只需翻转每个白色和黑色即可。
<code class="language-css">.color-change { border-radius: 5px; font-size: 20px; padding: 14px 80px; cursor: pointer; color: #fff; background-color: #00A6FF; font-size: 1.5rem; font-family: 'Roboto'; font-weight: 100; border: 1px solid #fff; box-shadow: 2px 2px 5px #AFE9FF; transition-duration: 0.5s; -webkit-transition-duration: 0.5s; -moz-transition-duration: 0.5s; } .color-change:hover { color: #006398; border: 1px solid #006398; box-shadow: 2px 2px 20px #AFE9FF; }</code>
在上面的样式中,您会看到字体和background-color
在.2s
的转换持续时间内双向变化。这是一个非常简单的示例。要从此处构建,您可以使用您最喜欢的品牌的颜色作为灵感。使用BrandColors是一个查找此类品牌颜色的好方法。
扁平化UI专注于极简主义,并通过小的动作讲述一个大的故事。一旦我的项目开始成形,我通常会从黑白按钮迁移到扁平化UI按钮。扁平化UI按钮足够简洁,可以融入大多数设计中。
让我们通过添加按钮移动来模拟3D按钮,从而改进我们之前的按钮。
此示例包含五个按钮,但由于唯一的变化是颜色,我们将重点关注第一个按钮。
<code class="language-css">transition-duration: 0.5s /* 这是标准的,并且适用于大多数现代浏览器 */ -webkit-transition-duration: 0.5s; /* 帮助某些版本的Safari、Chrome和Android */ -moz-transition-duration: 0.5s; /* 帮助Firefox */</code>
此按钮有三种状态,常规(无状态名称)、:hover
和:active
。
值得注意的是,:hover
只包含一行代码,降低不透明度。这是一个有用的技巧,它可以使按钮看起来更轻,而无需您找到一种新的、实际上更轻的颜色。
CSS变量并不新鲜,但有一些是以新的方式使用的。border
不是实心均匀线,而是使用border-bottom
、border-left
和border-right
来创建3D深度效果。
扁平化UI按钮大量利用:active
。当我们的示例按钮变为:active
时,会发生两件事。
border-bottom
从3px更改为1px。这会导致按钮下方的阴影缩小,并将整个按钮对象向下移动几个像素。虽然简单,但这一个变化有助于用户感觉他们正在将按钮点击到页面中。扁平化UI按钮重视讲述大故事的简单和最小的动作。许多使用border-bottom
来创建浅层运动。值得注意的是,一些扁平化UI按钮根本不移动,只利用颜色变化。
Material Design是一种设计理念,它推广信息卡片,并具有引人注目的动作。Google设计了“Material Design”的概念,并在Material Design主页上列出了三个主要原则:
为了更好地了解这三个原则,让我们看看Material Design的实际应用。
注意:此示例不包含<button></button>
标签,因为它遵循Polymer的按钮默认标记,但是如果您在一个大型项目中实现Polymer,那么值得探索在您的实现中使用<button></button>
标签而不是<a></a>
标签。我们将在未来的文章中更详细地探讨这一点。
这些按钮利用了两个主要思想——box-shadow
和Polymer。
Polymer是一个组件和工具框架,用于帮助设计网站。如果您熟悉Bootstrap,Polymer非常相似。上面找到的强大的涟漪效果只需一行代码即可添加。
<code class="language-css">.color-change { border-radius: 5px; font-size: 20px; padding: 14px 80px; cursor: pointer; color: #fff; background-color: #00A6FF; font-size: 1.5rem; font-family: 'Roboto'; font-weight: 100; border: 1px solid #fff; box-shadow: 2px 2px 5px #AFE9FF; transition-duration: 0.5s; -webkit-transition-duration: 0.5s; -moz-transition-duration: 0.5s; } .color-change:hover { color: #006398; border: 1px solid #006398; box-shadow: 2px 2px 20px #AFE9FF; }</code>
<paper-ripple fit></paper-ripple>
是一个Polymer组件。通过在HTML的开头导入Polymer,我们可以访问流行的框架及其组件。在Polymer项目主页上了解更多信息。
现在我们了解了Polymer是什么以及涟漪来自哪里(它的工作原理是另一个故事),让我们讨论一下有助于实现Material Design原则的CSS,使按钮脱颖而出。
<code class="language-css">transition-duration: 0.5s /* 这是标准的,并且适用于大多数现代浏览器 */ -webkit-transition-duration: 0.5s; /* 帮助某些版本的Safari、Chrome和Android */ -moz-transition-duration: 0.5s; /* 帮助Firefox */</code>
这些按钮使用box-shadow
来实现大部分设计。让我们研究一下box-shadow
如何变化并发挥其魔力,方法是删除任何不更改的CSS:
<code class="language-css">button.your-button-class { -webkit-appearance: none; -moz-appearance: none; }</code>
box-shadow
用于在每个按钮的左侧和底部放置一个薄薄的暗影。单击时,阴影会延伸得更远,并且变得不那么暗。此动作模拟了从页面跳到用户面前的按钮的3D阴影。此动作是Material Design样式及其实际应用原则的一部分。
可以通过将Polymer与box-shadow
效果相结合来制作Material Design按钮。
box-shadow
,我们可以模拟现实世界对象中出现的3D阴影box-shadow
转换,我们可以在用户单击按钮时创建大量运动。本文介绍了如何使用三种不同的设计方法制作按钮。如果您想制作自己的按钮设计原型,我建议您使用CSS3 Button Generator。
结论
黑白按钮简单可靠。将黑色和白色替换为您品牌的颜色,即可快速获得与您的网站相关的按钮。扁平化UI按钮很简单,并利用小的动作和颜色来讲述大的故事。Material Design按钮利用大规模的复杂动作来模拟现实世界的阴影,从而吸引用户的注意力。
希望本指南能帮助CSS新手了解使按钮如此强大和创造性广泛传播的构建块。
关于现代CSS按钮的常见问题
创建简单的CSS按钮包括在您的CSS文件中定义一个类,并将其应用于HTML文件中的按钮元素。例如,您可以在CSS文件中定义一个.button
类,其中包含background-color
、color
、border
、padding
、text-align
、text-decoration
、display
和cursor
等属性。然后,在HTML文件中,您可以创建一个按钮元素并将.button
类应用于它。这将根据.button
类中定义的属性来设置按钮的样式。
可以使用:hover
伪类向CSS按钮添加悬停效果。此伪类用于选择和设置当用户指针悬停在其上时元素的样式。例如,当用户指针悬停在其上时,您可以更改按钮的背景颜色和文本颜色,方法是在按钮类的:hover
伪类中定义这些属性。
带有图标的CSS按钮可以通过使用图标字体或SVG图标来创建。Font Awesome等图标字体提供了各种易于使用CSS设置样式的图标。要使用图标字体,您需要在HTML文件中包含图标字体的CSS文件,然后使用您要使用的图标的相应类。另一方面,SVG图标可以直接嵌入到HTML文件中并使用CSS设置样式。
可以使用linear-gradient()
函数或radial-gradient()
函数创建带有渐变的CSS按钮。这些函数分别用于定义线性渐变或径向渐变。渐变由两个或多个颜色停止点定义,这些颜色停止点是渐变在其间转换的颜色。颜色停止点由颜色和沿渐变线的颜色位置定义。
可以使用border-radius
属性创建带有圆角的CSS按钮。此属性用于定义边框角的半径。border-radius
属性的值可以用像素或百分比指定。较高的值将创建更圆的角。
可以使用box-shadow
属性创建带有阴影的CSS按钮。此属性用于将阴影效果应用于元素。box-shadow
属性采用多个值,包括阴影的水平偏移量、垂直偏移量、模糊半径、扩展半径和颜色。
可以使用transition
属性创建带有过渡的CSS按钮。此属性用于控制当用户将鼠标悬停在按钮上或单击按钮时,从一种样式更改为另一种样式的速度。transition
属性采用多个值,包括要转换的属性、转换的持续时间、计时函数和延迟。
可以使用animation
属性和keyframes
规则创建带有动画的CSS按钮。animation
属性用于指定动画的名称、持续时间、计时函数、延迟、迭代次数、方向、填充模式和播放状态。keyframes
规则用于为动画的每个阶段指定样式。
可以使用媒体查询创建响应式CSS按钮。媒体查询用于为不同的设备或屏幕尺寸应用不同的样式。例如,您可以定义一个媒体查询,该查询会更改宽度小于600像素的屏幕的按钮的大小、填充和字体大小。
可以使用border-radius
属性和transform
属性创建具有不同形状的CSS按钮。border-radius
属性可用于创建圆形或椭圆形按钮。transform
属性可用于旋转、缩放、倾斜或平移按钮。
以上是现代CSS按钮基础知识的介绍的详细内容。更多信息请关注PHP中文网其他相关文章!