티스토리 뷰

웹접근성 지킨 라디오, 체크박스 라이브러리

<!DOCTYPE HTML>
<html lang="ko">
<head>
	<meta charset="utf-8">
	<title>체크박스와 라디오</title>
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
	<meta name="theme-color" content="#000000">
	<script src="https://code.jquery.com/jquery-latest.js"></script>
	<script src="https://limjungk.cafe24.com/dist/icheck.js"></script>
	<style>
		/* 기본속성 */
		* { margin: 0; padding: 0; font-family: '맑은 고딕'; box-sizing:border-box;}
		button { border:0 none; padding:0; margin:0; font-size:100%; color:#000; vertical-align:middle; background:transparent; cursor:pointer;}
		body { padding: 20px;}
		ul, ol { list-style: none;}

		/* 공통 */
		.icheckbox,
		.iradio { position:absolute; top: 0; left: 0; min-width: 24px; min-height: 24px;}
		.focus { outline: 1px solid #000 !important}

		/* 체크박스 */
		.checkboxGroup { display: flex; margin-top: 10px;}
		.checkboxGroup li ~ li { margin-left: 20px;}
		.checkboxGroup .checkboxBox { display: inline-block; position: relative; min-height: 24px; padding-left: 30px;}
		.checkboxGroup input,
		.checkboxGroup ins { top: 0 !important; left: 0 !important; z-index: 1; width: 24px !important; height: 24px !important; opacity: 0 !important; cursor: pointer;}
		.checkboxGroup label { font-size: 14px; cursor: pointer;}
		.checkboxGroup label::before { content: ''; display: block; position: absolute; left: 0; top: 0; width: 22px; height: 22px; border: 1px solid #ddd; background: url(https://limjungk.cafe24.com/dist/icoCheck.png) no-repeat; border-radius: 50%; transition: background-color .2s ease-in-out;}
		.checkboxGroup .checked +label::before { border-color: #e13962; background-color: #ef4d74; background-position-x: -24px;}
		.checkboxGroup .disabled,
		.checkboxGroup .disabled +label { cursor: not-allowed;}
		.checkboxGroup .disabled +label::before { border-color: #e5e5e5; background-color: #ccc;}

		/* 라디오 */
		.radiogroup { display: flex; margin-top: 10px;}
		.radiogroup li ~ li { margin-left: 20px;}
		.radiogroup .radioBox { display: inline-block; position: relative; min-height: 24px; padding-left: 30px;}
		.radiogroup	input { position: absolute; top: 0; left: 0; z-index: 1; width: 24px; height: 24px; opacity: 0 !important; cursor: pointer;}
		.radiogroup label { font-size: 14px; cursor: pointer;}
		.radiogroup label::before { content: ''; display: block; position: absolute; left: 0; top: 0; width: 22px; height: 22px; border: 1px solid #ddd; background-color: #eee; border-radius: 50%; transition: background-color .2s ease-in-out;}
		.radiogroup label::after { content: ''; display: block; position: absolute; left: 7px; top: 7px; width: 8px; height: 8px; border: 1px solid #ddd; background-color: #fff; border-radius: 50%;}
		.radiogroup .checked +label::before { border-color: #e13962; background-color: #ef4d74;}
		.radiogroup .checked +label::after { border-color: #e13962;}
		.radiogroup	.disabled,
		.radiogroup	.disabled +label { cursor: not-allowed;}
		.radiogroup	.disabled +label::before { border-color: #bbb; background-color: #ccc;}

		/* HiDPI support 
		@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
			.checkboxGroup label::before {
				background-image: url(https://limjungk.cafe24.com/dist/icoCheck@2x.png);
				-webkit-background-size: 96px 48px;
				background-size: 96px 48px;
			}
		}
		*/

		/* 박스형 디자인 */
		.groupBoxStyle >div,
		.groupBoxStyle >div ul li { margin-top: 15px;}
		.groupBoxStyle { margin-top: 10px;}
		.groupBoxStyle .icheckbox_line { position: relative; display: block; width: 400px; margin: 0; padding: 25px 15px 25px 50px; font-size: 13px; line-height: 17px; background: #fff; border: 1px solid #ddd; border-radius: 6px; transition: all .2s ease-in-out; cursor: pointer;}
		.groupBoxStyle .icheckbox_line label { font-size: 16px;}
		.groupBoxStyle .icheckbox_line label::before { content: ''; display: block; position: absolute; left: 15px; top: 50%; width: 22px; height: 22px; margin-top: -11px;; border: 1px solid #ddd; background: url(https://limjungk.cafe24.com/dist/icoCheck.png) no-repeat; border-radius: 50%; transition: background-color .2s ease-in-out;}
		.groupBoxStyle .icheckbox_line.hover,
		.groupBoxStyle .icheckbox_line.checked { border-color: #000; box-shadow: 1px 3px 6px rgb(0 0 0 / 10%);}
		.groupBoxStyle .icheckbox_line.checked label { font-weight: 700;}
		.groupBoxStyle .icheckbox_line.checked label::before { border-color: #e13962; background-color: #ef4d74; background-position-x: -24px;}
		.groupBoxStyle .icheckbox_line.disabled { background-color: #f5f5f5;}
		.groupBoxStyle .icheckbox_line.disabled label { color: #999;}
		.groupBoxStyle .icheckbox_line.disabled label::before { border-color: #e5e5e5; background-color: #ccc;}
		.groupBoxStyle .icheckbox_line.checked.disabled { border-color: #aaa;}
		.groupBoxStyle .icheckbox_line.checked.disabled label { color: #666;}
		.groupBoxStyle .iradio_line { position: relative; display: block; width: 400px; margin: 0; padding: 25px 15px 25px 50px; font-size: 13px; line-height: 17px; background: #fff; border: 1px solid #ddd; border-radius: 6px; transition: all .2s ease-in-out; cursor: pointer;}
		.groupBoxStyle .iradio_line label { font-size: 16px;}
		.groupBoxStyle .iradio_line label::before { content: ''; display: block; position: absolute; left: 15px; top: 50%; width: 22px; height: 22px; margin-top: -11px; border: 1px solid #ddd; background-color: #eee; border-radius: 50%; transition: background-color .2s ease-in-out;}
		.groupBoxStyle .iradio_line label::after { content: ''; display: block; position: absolute; left: 22px; top: 50%; width: 8px; height: 8px; margin-top: -4px; border: 1px solid #ddd; background-color: #fff; border-radius: 50%;}
		.groupBoxStyle .iradio_line.hover,
		.groupBoxStyle .iradio_line.checked { border-color: #000; box-shadow: 1px 3px 6px rgb(0 0 0 / 10%);}
		.groupBoxStyle .iradio_line.checked label { font-weight: 700;}
		.groupBoxStyle .iradio_line.checked label::before { border-color: #e13962; background-color: #ef4d74; background-position-x: -24px;}
		.groupBoxStyle .iradio_line.checked label::after { border-color: #e13962;}
		.groupBoxStyle .iradio_line.disabled,
		.groupBoxStyle .iradio_line.disabled label { cursor: not-allowed;}
		.groupBoxStyle .iradio_line.disabled label::before { border-color: #bbb; background-color: #ccc;}
	</style>
</head>

<body>
<div id="wrap">

	<h4>접근성을 지키는 체크박스 디자인</h4>
	<div>
		<ul class="groupBox checkboxGroup">
			<li>
				<div class="checkboxBox">
					<input type="checkbox" id="checkbox1">
					<label for="checkbox1">Checkbox 1</label>
				</div>
			</li>
			<li>
				<div class="checkboxBox checked">
					<input type="checkbox" id="checkbox2" checked>
					<label for="checkbox2">Checkbox 2</label>
				</div>
			</li>
			<li>
				<div class="checkboxBox disabled">
					<input type="checkbox" id="checkbox-disabled" disabled>
					<label for="checkbox-disabled">Disabled</label>
				</div>
			</li>
			<li>
				<div class="checkboxBox checked disabled">
					<input type="checkbox" id="checkbox-disabled-checked" checked disabled>
					<label for="checkbox-disabled-checked">Disabled &amp; checked</label>
				</div>
			</li>
		</ul>
	</div>

	<br><br><br>

	<h4>접근성을 지키는 라디오박스 디자인</h4>
	<ul class="groupBox radiogroup">
		<li>
			<div class="radioBox">
				<input type="radio" id="radio1" name="radio">
				<label for="radio1" class="">Radio button 1</label>
			</div>
		</li>
		<li>
			<div class="radioBox checked">
				<input type="radio" id="radio2" name="radio" checked>
				<label for="radio2" class="">Radio button 2</label>
			</div>
		</li>
		<li>
			<div class="radioBox disabled">
				<input type="radio" id="radio-disabled" disabled>
				<label for="radio-disabled">Disabled</label>
			</div>
		</li>
	</ul>

	<br><br><br>

	<h4>박스형 디자인</h4>
	<div class="groupBoxStyle">
		<div>
			<h5>체크박스</h5>
			<ul>
				<li>
					<input type="checkbox" id="checkbox_box1">
					<label for="checkbox_box1">체력 및 근력 향상을 위해서</label>
				</li>
				<li>
					<input type="checkbox" id="checkbox_box2" checked>
					<label for="checkbox_box2">일상에서 통증으로 인해 불편함을 느껴서</label>
				</li>
				<li>
					<input type="checkbox" id="checkbox_box3" disabled>
					<label for="checkbox_box3">체중을 감량하고 싶어서</label>
				</li>
				<li>
					<input type="checkbox" id="checkbox_box4" disabled checked>
					<label for="checkbox_box4">부위별 라인 관리를 하고 싶어서</label>
				</li>
			</ul>
		</div>

		<div>
			<h5 class="test">라디오박스</h5>
			<ul>
				<li>
					<input type="radio" name="boxRadio" id="radio_box1">
					<label for="radio_box1">Radio button default</label>
				</li>
				<li>
					<input type="radio" name="boxRadio" id="radio_box2" checked>
					<label for="radio_box2">Radio button checked</label>
				</li>
				<li>
					<input type="radio" name="boxRadio" id="radio_box3" disabled>
					<label for="radio_box3">Radio button disabled</label>
				</li>
			</ul>
		</div>
	</div>
</div>

<script>
	$(document).ready(function(){
		// 라디오, 체크박스
		$('.groupBox input').iCheck({
			checkboxClass: 'icheckbox',
			radioClass: 'iradio',
		});


		// 박스형 라디오, 체크박스
		$('.groupBoxStyle input').each(function(){
			var self = $(this),
				label = self.next(),
				label_text = label.detach();

	
			// label.remove();
			self.iCheck({
				checkboxClass: 'icheckbox_line',
				radioClass: 'iradio_line',
				insert: label_text
			});
		});
	});
	</script>
</body>
</html>

http://icheck.fronteed.com/

 

Checkboxes and radio buttons customization (jQuery and Zepto) plugin

iCheck is verified to work in Internet Explorer 6+, Firefox 2+, Opera 9+, Google Chrome and Safari browsers. Should also work in many others. Mobile browsers (like Opera mini, Chrome mobile, Safari mobile, Android browser, Silk and others) are also support

icheck.fronteed.com

'HTML > 콤포넌트 모음' 카테고리의 다른 글

원형차트  (0) 2021.12.28
웹접근성을 지키는 Swiper  (0) 2021.11.25
버튼  (0) 2021.11.22
아코디언  (0) 2021.11.11
  (0) 2021.11.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함