为大家介绍使用 CSS 来制作按钮。
基本按钮样式
默认按钮 CSS 按钮
CSS 实例
.button {
background-color: #4CAF50; /* Green */
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
}
按钮颜色
GreenBlueRedGrayBlack
我们可以使用 background-color
属性来设置按钮颜色:
CSS 实例
.button1 {background-color: #4CAF50;} /* Green */
.button2 {background-color: #008CBA;} /* Blue */
.button3 {background-color: #f44336;} /* Red */
.button4 {background-color: #e7e7e7; color: black;} /* Gray */
.button5 {background-color: #555555;} /* Black */
尝试一下 »
按钮大小
10px12px16px20px24px
我们可以使用 font-size
属性来设置按钮大小:
CSS 实例
.button1 {font-size: 10px;}
.button2 {font-size: 12px;}
.button3 {font-size: 16px;}
.button4 {font-size: 20px;}
.button5 {font-size: 24px;}
圆角按钮
2px4px8px12px50%
我们可以使用 border-radius
属性来设置圆角按钮:
CSS 实例
.button1 {border-radius: 2px;}
.button2 {border-radius: 4px;}
.button3 {border-radius: 8px;}
.button4 {border-radius: 12px;}
.button5 {border-radius: 50%;}
尝试一下 »
按钮边框颜色
绿蓝红灰黑
我们可以使用 border
属性设置按钮边框颜色:
CSS 实例
.button1 {
background-color: white;
color: black;
border: 2px solid #4CAF50; /* Green */
}
...
尝试一下 »
鼠标悬停按钮
绿蓝红灰黑
绿蓝红灰黑
我们可以使用 :hover
选择器来修改鼠标悬停在按钮上的样式。
提示: 我们可以使用 transition-duration
属性来设置 "hover" 效果的速度:
CSS 实例
.button {
-webkit-transition-duration: 0.4s; /* Safari */
transition-duration: 0.4s;
}
.button:hover {
background-color: #4CAF50; /* Green */
color: white;
}
...
按钮阴影
阴影按钮鼠标悬停后显示阴影
我们可以使用 box-shadow
属性来为按钮添加阴影:
CSS 实例
.button1 {
box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2), 0 6px 20px 0 rgba(0,0,0,0.19);
}
.button2:hover {
box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);
}
尝试一下 »
禁用按钮
正常按钮禁用按钮
我们可以使用 opacity
属性为按钮添加透明度 (看起来类似 "disabled" 属性效果)。
提示: 我么可以添加 cursor
属性并设置为 "not-allowed" 来设置一个禁用的图片:
CSS 实例
.disabled {
opacity: 0.6;
cursor: not-allowed;
}
尝试一下 »
按钮宽度
250px
50%100%
默认情况下,按钮的大小有按钮上的文本内容决定( 根据文本内容匹配长度 )。 我们可以使用 width
属性来设置按钮的宽度:
提示: 如果要设置固定宽度可以使用像素 (px) 为单位,如果要设置响应式的按钮可以设置为百分比。
CSS 实例
.button1 {width: 250px;}
.button2 {width: 50%;}
.button3 {width: 100%;}
尝试一下 »
按钮组
ButtonButtonButtonButton
移除外边距并添加 float:left
来设置按钮组:
CSS 实例
.button {
float: left;
}
尝试一下 »
带边框按钮组
ButtonButtonButtonButton
我们可以使用 border
属性来设置带边框的按钮组:
CSS 实例
.button {
float: left;
border: 1px solid green
}
尝试一下 »
按钮动画
CSS 实例
鼠标移动到按钮上后添加箭头标记:
Hover
尝试一下 »
CSS 实例
点击时添加 "波纹" 效果:
Click
CSS 实例
点击时添加 "压下" 效果:
Click
如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!
一篇文章Stimulus:连接HTML和JavaScript的桥梁,实现简单的controller,并学习了Stimulus是如何连接HTML与JavaScript的。现在我们使用Stimulus来实现复制文本到粘贴板的按钮。
比如说,我们现在有一个需求,就是帮助用户生成密码,在密码旁边放置一个按钮,点击按钮后密码就被拷贝到粘贴板上了,这样就方便用户使用这个密码了。
打开public/index.html,修改body内容,填充一个简单的按钮,如下:
<div>
PIN: <input type="text" value="1234" readonly>
<button>Copy to Clipboard</button>
</div>
下一步,创建src/controllers/clipboard_controller.js,然后添加一个copy()方法:
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
copy() {
}
}
然后,给div添加data-controller=“clipboard”。只要是给元素添加了data-controller属性,Stimulus就会连接一个controller实例。
<div data-controller="clipboard">
我们还需要一个对输入框的引用,这样我们就可以在调用粘贴板API之前获取输入框的内容。给文本框添加data-clipboard-target=“source“:
PIN: <input data-clipboard-target="source" type="text" value="1234" readonly>
在controller中定义一个target,然后就可以通过this.sourceTarget访问文本框了。
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static targets = [ "source" ]
copy() {
}
}
解释一下这个targets:
当Stimulus加载你的controller类时,它会查看静态数组targets的字符串元素,对于每一个字符串,Stimulus会在controller中添加3个属性。在这里,对于“source”,会添加如下属性:
this.sourceTarget 在controller的域内的第一个source
this.sourceTargets 在controller的域内所有的source组成的一个数组
this.hasSourceTarget 在controller的域内是否有source
我们希望点击按钮时调用controller中的copy()方法,所以我们需要添加data-action=“clipboard#copy“
<button data-action="clipboard#copy">Copy to Clipboard</button>
你可以已经注意到在上面的动作描述符中省略了click->。那是因为Stimulus给button设置了click作为它默认的事件。
某些其他元素也有默认事件。下面是个全部列表:
元素 | 默认事件 |
a | click |
button | click |
details | toggle |
form | submit |
input | input |
input type=“submit” | click |
select | change |
textarea | input |
最终,在copy()方法中,我们获取输入框的内容,调用粘贴板API
copy() {
navigator.clipboard.writeText(this.sourceTarget.value)
}
刷新页面,点击按钮,然后快捷键粘贴到Greet按钮前到输入框,可以看到1234。
到目前为止,在页面上同一时间只有一个controller实例。在页面上同时有一个controller的多个实例也是很正常的。
我们的controller是可以复用的,只要你需要在页面上添加复制内容的按钮,无论是哪个页面,只要把对应的属性值写好,我们的controller都是生效的。
还是上面的例子,再添加另外一个复制按钮:
<div data-controller="clipboard">
PIN: <input data-clipboard-target="source" type="text" value="3737" readonly>
<button data-action="clipboard#copy" class="clipboard-button">Copy to Clipboard</button>
</div>
刷新页面,验证一下两个复制按钮是否都生效。
我们再添加一个可以复制的元素,不用button,我们用a标签,
<div data-controller="clipboard">
PIN: <input data-clipboard-target="source" type="text" value="6666" readonly>
<a href="#" data-action="clipboard#copy" class="clipboard-button">Copy to Clipboard</a>
</div>
Stimulus允许我们使用任何元素,只要它设置了合适的data-action属性,就可以触发复制。
这个例子里,要注意一点,点击链接会使浏览器追踪a标签内的href属性跳转,可以取消这种默认行为,只需要在action中调用 event.preventDefault()就可以了。
copy(event) {
event.preventDefault()
navigator.clipboard.writeText(this.sourceTarget.value)
}
还有另外一个方法,拷贝粘贴板上
copy(event) {
event.preventDefault()
this.sourceTarget.select()
document.execCommand("copy")
}
在本文中,我们看了一个在现实中把浏览器API包装在Stimulus的controller中的例子。还有一个controller的多个实例如何同时出现在页面上,我们还探索了actions和targets如何保持HTML和JavaScript的松散耦合。
下一篇文章,我们将优化一下这个复制粘贴板的功能,让它运行起来更加健壮。
Stimulus:浏览器不支持复制或者弱网条件下,怎么办?
文中我们对CSS超炫加载动画设计、实现与实例进行了讲解与说明,通过学习可知使用CSS提供的animation属性及伪元素等可以实现精美的CSS动画效果的设计与开发。本文我们将继续介绍CSS在Web页面元素设计中的应用。
纯CSS实现开关元素设计
本例我们使用CSS完成开关的设计,主要要求是在点击开关时开关标识颜色需要改变,另外需要体现出元素点击前与点击后的动态变化与立体效果。本例最终设计呈现效果描述如下图所示:
开关按钮实现效果展示
要实现如上图所示的开关按钮效果,需要针对元素改变鼠标点击前后的CSS样式,因为只使用CSS实现,我们选择本身具有点击属性的INPUT元素。因此还需要考虑对INPUT元素外观进行设置,其设置也主要是依托于CSS选择器及相关属性的设置。
CSS选择器及属性设置
另一方面本例中出现的开关标志,主要使用第三方字体库提供的图标实现,因此需要对font相关属性及CSS外部link方法有所学习掌握。本例所使用字体如下所示:
字体图标
在明确基本思路之后,我们可以使用submine进行代码编写,主要编写步骤如下:
1、链接字体样式
本例使用如上图所示提供的on图标,即Font Awesome图标字体库和CSS框架,因此需要外部链接或者下载相应CSS文件,这里我们选择外部链接,通过使用CSS提供的link,实现代码如下:
字体链接
链接完成之后我们在设置字体时可直接使用FontAwesome字体,其中on图标对应的编码为f011。
2、定义页面内容
本例页面内容主要使用input元素checkbox属性进行按钮设置。因此页面内容部分定义如下所示:
页面主体部分
3、定义checkbox样式
在完成页面元素添加之后就需要对页面元素进行CSS样式的设置,本例通过元素加type属性作为选择器,选择指定元素并进行样式设置。代码如下:
checkbox属性设置
checkbox属性设置描述如上图所示,设置效果如下:
checkbox属性效果
4、input添加checked、after等样式
为进一步实现点击效果切换及图标按钮的效果,需要对check状态及after伪元素进行CSS样式的设置。其中after为元素主要用于在上图中添加on开关图标。实现代码描述如下:
after伪元素选择器及样式设置
after伪元素选择器及样式设置如上图所示,主要完成content内容即on图标设置,字体选择、字体颜色及字体大小设置,设置完成预览效果如下:
after为元素设置效果
要实现点击效果就需要在点击之后对input元素样式进行设置,因此我们使用checked作为选择器对该状态下input样式进行设置。设置代码如下所示:
checked状态CSS设置
checked状态CSS设置如上图所示,我们只对box-shadow阴影进行设置,通过阴影变化实现按钮动态效果。
5、点击之后on图标颜色变化
点击之后on图标颜色变化主要通过对input[type="checkbox"]:checked,进一步使用after伪元素定义字体颜色实现。实现代码如下所示:
on图标(字体)颜色改变
通过使用该选择器,会在input点击之后,on字体颜色变为红色。以上给出了input按钮效果实现的基本思路与部分核心实现代码。如需完整案例代码请关注并私信作者。
本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可在评论区回复。更多程序设计相关教程及实例分享,期待大家关注与阅读!
*请认真填写需求信息,我们会在24小时内与您取得联系。