是否可以使用CSS或HTML设置复选框的大小?
width
并且size
在IE6 +下工作,但不适用于Firefox,即使我设置较小的尺寸,复选框也保持16x16.
它有点难看(由于扩展),但它适用于大多数较新的浏览器:
input[type=checkbox]
{
/* Double-sized Checkboxes */
-ms-transform: scale(2); /* IE */
-moz-transform: scale(2); /* FF */
-webkit-transform: scale(2); /* Safari and Chrome */
-o-transform: scale(2); /* Opera */
transform: scale(2);
padding: 10px;
}
/* Might want to wrap a span around your checkbox text */
.checkboxtext
{
/* Checkbox text */
font-size: 110%;
display: inline;
}
Option A
Option B
Option C
所有现代浏览器的工作解决方案
input[type=checkbox] {
transform: scale(1.5);
}
兼容性:
IE:10+
FF:16+
Chrome:36+
Safari:9+
歌剧:23岁以上
iOS Safari:9.2+
适用于Android的Chrome:51+
出现:
Chrome 58(2017年5月),Windows 10
一个简单的解决方案是使用该属性zoom
:
input[type="checkbox"] {
zoom: 1.5;
}
2017版:https://jsfiddle.net/ksvx2txb/11/
关于:如果支持,浏览器将使用css缩放功能,否则,将使用transform:scale.
为什么不使用变换?它在某些浏览器上看起来很难看,包括mac上的chrome.
Chrome - 作品
Firefox(mac) - 作品
Opera - 作品
Edge - 作品
Firefox(胜利) - 大,模糊!
Safari - 大,模糊!
@supports (zoom:2) {
input[type="radio"], input[type=checkbox]{
zoom: 2;
}
}
@supports not (zoom:2) {
input[type="radio"], input[type=checkbox]{
transform: scale(2);
margin: 15px;
}
}
label{
/* fix vertical align issues */
display: inline-block;
vertical-align: top;
margin-top: 10px;
}
预览:http:
//jsfiddle.net/h4qka9td/
*,*:after,*:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
margin: 0;
}
.switch {
margin: 50px auto;
position: relative;
}
.switch label {
width: 100%;
height: 100%;
position: relative;
display: block;
}
.switch input {
top: 0;
right: 0;
bottom: 0;
left: 0;
opacity: 0;
z-index: 100;
position: absolute;
width: 100%;
height: 100%;
cursor: pointer;
}
/* DEMO 3 */
.switch.demo3 {
width: 180px;
height: 50px;
}
.switch.demo3 label {
display: block;
width: 100%;
height: 100%;
background: #a5a39d;
border-radius: 40px;
box-shadow:
inset 0 3px 8px 1px rgba(0,0,0,0.2),
0 1px 0 rgba(255,255,255,0.5);
}
.switch.demo3 label:after {
content: "";
position: absolute;
z-index: -1;
top: -8px; right: -8px; bottom: -8px; left: -8px;
border-radius: inherit;
background: #ababab;
background: -moz-linear-gradient(#f2f2f2, #ababab);
background: -ms-linear-gradient(#f2f2f2, #ababab);
background: -o-linear-gradient(#f2f2f2, #ababab);
background: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#ababab));
background: -webkit-linear-gradient(#f2f2f2, #ababab);
background: linear-gradient(#f2f2f2, #ababab);
box-shadow: 0 0 10px rgba(0,0,0,0.3),
0 1px 1px rgba(0,0,0,0.25);
}
.switch.demo3 label:before {
content: "";
position: absolute;
z-index: -1;
top: -18px; right: -18px; bottom: -18px; left: -18px;
border-radius: inherit;
background: #eee;
background: -moz-linear-gradient(#e5e7e6, #eee);
background: -ms-linear-gradient(#e5e7e6, #eee);
background: -o-linear-gradient(#e5e7e6, #eee);
background: -webkit-gradient(linear, 0 0, 0 100%, from(#e5e7e6), to(#eee));
background: -webkit-linear-gradient(#e5e7e6, #eee);
background: linear-gradient(#e5e7e6, #eee);
box-shadow:
0 1px 0 rgba(255,255,255,0.5);
-webkit-filter: blur(1px);
-moz-filter: blur(1px);
-ms-filter: blur(1px);
-o-filter: blur(1px);
filter: blur(1px);
}
.switch.demo3 label i {
display: block;
height: 100%;
width: 60%;
border-radius: inherit;
background: silver;
position: absolute;
z-index: 2;
right: 40%;
top: 0;
background: #b2ac9e;
background: -moz-linear-gradient(#f7f2f6, #b2ac9e);
background: -ms-linear-gradient(#f7f2f6, #b2ac9e);
background: -o-linear-gradient(#f7f2f6, #b2ac9e);
background: -webkit-gradient(linear, 0 0, 0 100%, from(#f7f2f6), to(#b2ac9e));
background: -webkit-linear-gradient(#f7f2f6, #b2ac9e);
background: linear-gradient(#f7f2f6, #b2ac9e);
box-shadow:
inset 0 1px 0 white,
0 0 8px rgba(0,0,0,0.3),
0 5px 5px rgba(0,0,0,0.2);
}
.switch.demo3 label i:after {
content: "";
position: absolute;
left: 15%;
top: 25%;
width: 70%;
height: 50%;
background: #d2cbc3;
background: -moz-linear-gradient(#cbc7bc, #d2cbc3);
background: -ms-linear-gradient(#cbc7bc, #d2cbc3);
background: -o-linear-gradient(#cbc7bc, #d2cbc3);
background: -webkit-gradient(linear, 0 0, 0 100%, from(#cbc7bc), to(#d2cbc3));
background: -webkit-linear-gradient(#cbc7bc, #d2cbc3);
background: linear-gradient(#cbc7bc, #d2cbc3);
border-radius: inherit;
}
.switch.demo3 label i:before {
content: "off";
text-transform: uppercase;
font-style: normal;
font-weight: bold;
color: rgba(0,0,0,0.4);
text-shadow: 0 1px 0 #bcb8ae, 0 -1px 0 #97958e;
font-family: Helvetica, Arial, sans-serif;
font-size: 24px;
position: absolute;
top: 50%;
margin-top: -12px;
right: -50%;
}
.switch.demo3 input:checked ~ label {
background: #9abb82;
}
.switch.demo3 input:checked ~ label i {
right: -1%;
}
.switch.demo3 input:checked ~ label i:before {
content: "on";
right: 115%;
color: #82a06a;
text-shadow:
0 1px 0 #afcb9b,
0 -1px 0 #6b8659;
}
我刚刚出来了:
input[type="checkbox"] {display:none;}
input[type="checkbox"] + label:before {content:"?";}
input:checked + label:before {content:"?";}
label:hover {color:blue;}
我想制作一个稍微大一点的复选框,查看37Signals Basecamp的源代码,找到以下解决方案 -
您可以更改字体大小以使复选框稍大:
font-size: x-large;
然后,您可以通过执行以下操作正确对齐复选框:
vertical-align: top; margin-top: 3px; /* change to center it */
默认情况下,复选框的外观似乎是固定的。但是正如Worthy7所指出的那样,可以使用CSS appearance
属性对此进行补救。它将使复选框完全为空,因此您可以定义自己的外观。这样做的好处是:您可以使用现有的HTML代码。缺点:是实验技术。Edge和IE不使用自定义样式。
这里是所需的CSS样式:
input[type=checkbox] {
width: 14mm;
-webkit-appearance: none;
-moz-appearance: none;
height: 14mm;
border: 0.1mm solid black;
}
input[type=checkbox]:checked {
background-color: lightblue;
}
input[type=checkbox]:checked:after {
margin-left: 4.3mm;
margin-top: -0.4mm;
width: 3mm;
height: 10mm;
border: solid white;
border-width: 0 2mm 2mm 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
content: "";
display: inline-block;
}
今天发现了这个有用的提示:你可以在Safari中使复选框更大 - 这通常可以抵抗通常的方法 - 使用以下属性:-webkit-transform: scale(1.3, 1.3);
我的理解是,跨浏览器一点都不容易。不必尝试操纵复选框控件,您可以始终使用图像,javascript和隐藏的输入字段来构建自己的实现。我假设这与niceforms相似(根据上面的Staicu lonut的回答),但是实现起来并不是特别困难。我相信jQuery还有一个插件也允许这种自定义行为(如果我可以找到的话,会在此处查找链接并发布)。