ช่องทำเครื่องหมายในหน้าเว็บ - จะทำให้ใหญ่ขึ้นได้อย่างไร


116

ช่องทำเครื่องหมายมาตรฐานที่แสดงในเบราว์เซอร์ส่วนใหญ่มีขนาดค่อนข้างเล็กและไม่เพิ่มขนาดแม้ว่าจะใช้แบบอักษรขนาดใหญ่ วิธีใดที่ดีที่สุดและไม่ขึ้นกับเบราว์เซอร์ในการแสดงช่องทำเครื่องหมายขนาดใหญ่

คำตอบ:


144

ในกรณีนี้สามารถช่วยทุกคนได้นี่คือ CSS ง่ายๆที่เป็นจุดเริ่มต้น เปลี่ยนให้เป็นสี่เหลี่ยมโค้งมนพื้นฐานที่ใหญ่พอสำหรับนิ้วหัวแม่มือที่มีสีพื้นหลังแบบสลับ

input[type='checkbox'] {
    -webkit-appearance:none;
    width:30px;
    height:30px;
    background:white;
    border-radius:5px;
    border:2px solid #555;
}
input[type='checkbox']:checked {
    background: #abd;
}
<input type="checkbox" />


@GabrielW ถูกต้อง เพียงใช้สิ่งที่เทียบเท่ากับคนอื่น
taylorcressy

@taylorcressy ยกเว้น IE (เช่น IE 11) caniuse.com/#search=Appearance - แต่ใช้งานได้ดีสำหรับเบราว์เซอร์อื่น ๆ ขอบคุณ!
CodeBrauer

16
คงจะดีถ้ามีเห็บอยู่ข้างใน :)
robert king

@ พอล: ขอบคุณสำหรับการแบ่งปัน ฉันสงสัยว่าคุณจัดการอย่างไรกับเครื่องหมายถูกที่ปรากฏขึ้น ด้วยการตั้งค่าพื้นหลังเป็นสีเครื่องหมายถูกสีขาวในช่องจะมองไม่เห็นอีกต่อไป มีวิธีง่ายๆหรือไม่? ฉันได้ลองเพิ่มเอนทิตี html สำหรับการเช็คอิน a: before แล้ว แต่สงสัยว่ามีทางเลือกอื่นหรือไม่
PBandJen

1
ฉันใช้สีเข้มกว่าสำหรับสีพื้นหลังที่ตรวจสอบแล้วและมันก็ไม่ได้แย่ขนาดนี้หากไม่มี "กา"
JR Lawhorne

48

จริงๆแล้วมีวิธีทำให้ใหญ่ขึ้นช่องทำเครื่องหมายก็เหมือนกับสิ่งอื่น ๆ (แม้แต่ iframe เช่นปุ่ม facebook)

รวมไว้ในองค์ประกอบ "ซูม":

.double {
  zoom: 2;
  transform: scale(2);
  -ms-transform: scale(2);
  -webkit-transform: scale(2);
  -o-transform: scale(2);
  -moz-transform: scale(2);
  transform-origin: 0 0;
  -ms-transform-origin: 0 0;
  -webkit-transform-origin: 0 0;
  -o-transform-origin: 0 0;
  -moz-transform-origin: 0 0;
}
<div class="double">
  <input type="checkbox" name="hello" value="1">
</div>

อาจดูเหมือน "ปรับขนาด" เล็กน้อย แต่ก็ใช้ได้ผล

แน่นอนคุณสามารถทำให้ div float นั้น: ซ้ายและใส่ label ของคุณไว้ข้าง ๆ , float: left ด้วย


1
โปรดทราบว่าใน Firefox (ในเวอร์ชัน 36) จะส่งผลให้มีลักษณะเบลอมาก แม้ว่าจะปรับขนาดได้ดีใน Chrome Demo: jsfiddle.net/tzp858j3
กาด

ไม่มีวิธีแก้ปัญหาที่ดีกว่าที่ไม่ได้ปรับขนาดหรือไม่?
basZero

3
ไม่สามารถzoom: 2และtransform: scale(2)จะนำมาใช้โดยตรงกับช่อง? ทำไมต้องมีกระดาษห่อหุ้ม?
Atav32

ขอบคุณ! ดูเหมือนว่าโค้ดของคุณจะคำนึงถึงเบราว์เซอร์มากขึ้นฉันก็เคยทดสอบด้วย แต่ใช้ได้กับทุกสิ่งที่ฉันลอง ดีเป็นพิเศษบน I-phone ของฉันที่ช่องทำเครื่องหมายกลายเป็นจุด! BTW คุณสามารถใส่มาตราส่วนเศษส่วนที่เล็กลง (เช่น 1.5) ในตำแหน่งที่สนิเพทนี้ใส่ "2" และสำหรับช่องทำเครื่องหมายขนาดกลาง
Randy

26

ลองใช้ CSS นี้

input[type=checkbox] {width:100px; height:100px;}

2
ไม่ใช่ข้ามเบราว์เซอร์ทั้งหมด (ควรตั้งค่าคลาสเป็น HTML และใช้ตัวเลือกคลาสใน CSS) แต่นี่อาจเป็นทางออกที่ดีกว่าของฉัน +1
Harmen

1
ฉันใช้ความกว้างและความสูงเพื่อจุดประสงค์ อาจเป็นการรวมกันของ Harmen และวิธีแก้ปัญหาของฉันเป็นวิธีที่จะไปได้เนื่องจากคุณอาจต้องการรูปแบบมากกว่าที่ CSS สามารถจัดหาได้อย่างสมเหตุสมผล
Collin White

6
สิ่งนี้จะใช้ได้เฉพาะในบางเบราว์เซอร์ไม่ใช่ในเบราว์เซอร์สมัยใหม่หลายตัว
RJ Owen

1
วิธีนี้ใช้ได้กับ ipad safari ซึ่งช่องทำเครื่องหมายมักจะต้องใหญ่ขึ้นเพื่อให้ผู้ใช้คลิกได้ง่ายขึ้น
user3032973

3
ข้อ จำกัด ที่สำคัญคือใช้ไม่ได้เลยใน Firefox (ณ Firefox 36) และในความเป็นจริงแล้วจะดูไม่เป็นธรรมชาติ (ช่องทำเครื่องหมายมีขนาดปกติ แต่ช่องว่างรอบ ๆ จะเต็มพื้นที่ 100 x 100px
Kat

5

ฉันพยายามเปลี่ยนpaddingและmarginและรวมทั้งwidthและheightแล้วในที่สุดก็พบว่าถ้าคุณเพียงแค่เพิ่มขนาดมันจะทำงาน:

input[type=checkbox] {
    transform: scale(1.5);
}

1

นี่คือเคล็ดลับที่ใช้ได้กับเบราว์เซอร์ล่าสุด (IE9 +) เป็นโซลูชันเฉพาะ CSS ที่สามารถปรับปรุงได้ด้วยจาวาสคริปต์เพื่อรองรับ IE8 และต่ำกว่า

<div>
  <input type="checkbox" id="checkboxID" name="checkboxName" value="whatever" />
  <label for="checkboxID"> </label>
</div>

จัดรูปแบบตามlabelที่คุณต้องการให้ช่องทำเครื่องหมายมีลักษณะดังนี้

#checkboxID
{
  position: absolute fixed;
  margin-right: 2000px;
  right: 100%;
}
#checkboxID + label
{
  /* unchecked state */
}
#checkboxID:checked + label
{
  /* checked state */
}

สำหรับจาวาสคริปต์คุณจะสามารถเพิ่มคลาสลงในป้ายกำกับเพื่อแสดงสถานะได้ นอกจากนี้ควรใช้ฟังก์ชันต่อไปนี้:

$('label[for]').live('click', function(e){
  $('#' + $(this).attr('for') ).click();
  return false;
});

แก้ไขเพื่อปรับเปลี่ยน#checkboxIDรูปแบบ


ดูstackoverflow.com/a/3772914/190135สำหรับลิงก์ไปยังซอร์สโค้ดแบบเต็มสำหรับเทคนิคนี้
AlexChaffee

1

ฉันกำลังเขียนแอพ phonegap และช่องทำเครื่องหมายมีขนาดรูปลักษณ์ ฯลฯ แตกต่างกันไปดังนั้นฉันจึงทำช่องทำเครื่องหมายง่ายๆของตัวเอง:

ก่อนอื่นรหัส HTML:

<span role="checkbox"/>

จากนั้น CSS:

[role=checkbox]{
    background-image: url(../img/checkbox_nc.png);
    height: 15px;
    width: 15px;
    display: inline-block;
    margin: 0 5px 0 5px;
    cursor: pointer;
}

.checked[role=checkbox]{
    background-image: url(../img/checkbox_c.png);
}

ในการสลับสถานะช่องทำเครื่องหมายฉันใช้ JQuery:

CLICKEVENT='touchend';
function createCheckboxes()
{
    $('[role=checkbox]').bind(CLICKEVENT,function()
    {
        $(this).toggleClass('checked');
    });
}

แต่สามารถทำได้อย่างง่ายดายโดยไม่ต้อง ...

หวังว่าจะช่วยได้!


1

การตัดสินใจเฉพาะ CSS 2020 ที่ทันสมัยอย่างแท้จริงโดยไม่ต้องปรับขนาดเบลอหรือการเปลี่ยนแปลงที่ไม่สะดวก และด้วยเห็บ! =)

ใช้งานได้ดีในเบราว์เซอร์ที่ใช้ Firefox และ Chromium

ดังนั้นคุณสามารถกำหนดช่องทำเครื่องหมายADAPTIVEของคุณได้อย่างหมดจดเพียงแค่ตั้งค่าบล็อกหลักfont-heightและมันจะเติบโตไปพร้อมกับข้อความ!

input[type='checkbox'] {
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
  vertical-align: middle;
  outline: none;
  font-size: inherit;
  cursor: pointer;
  width: 1.0em;
  height: 1.0em;
  background: white;
  border-radius: 0.25em;
  border: 0.125em solid #555;
  position: relative;
}

input[type='checkbox']:checked {
  background: #adf;
}

input[type='checkbox']:checked:after {
  content: "✔";
  position: absolute;
  font-size: 90%;
  left: 0.0625em;
  top: -0.25em;
}
<label for="check1"><input type="checkbox" id="check1" checked="checked" /> checkbox one</label>
<label for="check2"><input type="checkbox" id="check2" /> another checkbox</label>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.