ãã©ã¼ã ã¸ã®é«åº¦ãªã¹ã¿ã¤ã«è¨å®
ãã®è¨äºã§ã¯ãã¹ã¿ã¤ã«è¨å®ãããé£ããããä¸è¯ãã壿ªãã«åé¡ããã種é¡ã®ãã©ã¼ã ã³ã³ããã¼ã«ã«ã¹ã¿ã¤ã«è¨å®ããããã«ãCSS ã§ä½ãã§ããããè¦ã¦ããã¾ããåã®è¨äºã§è¦ãããã«ãããã¹ããã£ã¼ã«ãããã¿ã³ã§ã® CSS 使ç¨ã¯ã¾ã£ããåé¡ãããã¾ãããããããã¯ãããåé¡ã®ããé¨åã®ã¹ã¿ã¤ã«è¨å®ãæãä¸ãã¾ãã
| åææ¡ä»¶: | HTML ããã³ CSS ã«å¯¾ããåºæ¬çãªçè§£ã |
|---|---|
| ç®ç: | ãã©ã¼ã ã®ã©ã®é¨åãã¹ã¿ã¤ã«è¨å®ããã®ãé£ããã®ããã¾ããªããªã®ããçè§£ããããããã«ã¹ã¿ãã¤ãºããã®ã«ä½ãã§ããããå¦ã¶ã |
å§ããåã«ã2 種é¡ã® HTML ãã©ã¼ã ã¦ã£ã¸ã§ããã«ã¤ãã¦ãããããã¾ãããã
ä¸è¯: ã¹ã¿ã¤ã«ã®è¨å®ãé£ããè¤éãªããªãã¯ãå¿ è¦ã§ãããæã« CSS ã®é«åº¦ãªç¥èãå¿ è¦ã§ããè¦ç´ ã§ãã
- ãã§ãã¯ããã¯ã¹ãã©ã¸ãªãã¿ã³
<input type="search">
壿ª: ä¸é¨ã®è¦ç´ 㯠CSS ã§ã¹ã¿ã¤ã«è¨å®ã§ãã¾ãããä¾ãã°ä»¥ä¸ã®ãã®ã§ãã
- ãããããã¦ã³ã¦ã£ã¸ã§ããã使ããè¦ç´ ã
<select>,<option>,<optgroup>,<datalist>ãå«ãã¡ã¢: ä¸é¨ã®ãã©ã¦ã¶ã¼ã§ã¯ãã«ã¹ã¿ãã¤ãºå¯è½ãª select è¦ç´ ã«å¯¾å¿ããããã«ãªãã¾ããããã㯠HTML 㨠CSS ã®æ©è½ç¾¤ã§ããã
<select>è¦ç´ ã¨ãã®å 容ãé常㮠DOM è¦ç´ ã¨åæ§ã«å®å ¨ã«ã«ã¹ã¿ãã¤ãºãããã¨ãå¯è½ã«ãã¾ãã <input type="color"><input type="datetime-local">ã®ãããªæ¥ä»é¢é£ã³ã³ããã¼ã«<input type="range"><input type="file"><progress>ããã³<meter>
æåã« appearance ããããã£ã«ã¤ãã¦èª¬æãã¾ããããã¯ä¸è¨ã®ãã¹ã¦ãããã¹ã¿ã¤ã«ä»ãã§ããããã«ããããã«ããªãæç¨ãªããããã£ã§ãã
appearance: OS ã¬ãã«ã®ã¹ã¿ã¤ã«å¶å¾¡
åã®è¨äºã§è¿°ã¹ãããã«ãéå»ã«ã¯ã¦ã§ããã©ã¼ã ã³ã³ããã¼ã«ã®ã¹ã¿ã¤ã«ã¯ä¸»ã«åºç¤ã¨ãªããªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ããæ´¾çãããã®ã§ãããããããããã®ã³ã³ããã¼ã«ã®å¤è¦³ãç¬èªã®ãã®ã«ãããã¨ãé£ããçç±ã®ä¸é¨ã¨ãªã£ã¦ãã¾ãã
appearance ããããã£ã¯ OS ãã·ã¹ãã ã¬ãã«ã§ã¦ã§ããã©ã¼ã ã®ã¹ã¿ã¤ã«è¨å®ãå¶å¾¡ããæ¹æ³ã¨ãã¦ä½æããã¾ãããæãæç¨ãªå¤ã¯ãããããå¯ä¸ä½¿ç¨ãããã¨ã«ãªãã§ããã none ã§ããããã¯é©ç¨ããã³ã³ããã¼ã«ãã·ã¹ãã ã¬ãã«ã®ã¹ã¿ã¤ã«ã使ç¨ãããã¨ãå¯è½ãªéãæ¢ãã CSS ã使ç¨ãã¦èªåã§ã¹ã¿ã¤ã«ãæ§ç¯ã§ããããã«ãã¾ãã
ä¾ãã°ã次ã®ã³ã³ããã¼ã«ãè¦ã¦ã¿ã¾ãããã
<form>
<p>
<label for="search">æ¤ç´¢: </label>
<input id="search" name="search" type="search" />
</p>
<p>
<label for="text">ããã¹ã: </label>
<input id="text" name="text" type="text" />
</p>
<p>
<label for="date">æ¥æ: </label>
<input id="date" name="date" type="datetime-local" />
</p>
<p>
<label for="radio">ã©ã¸ãªãã¿ã³: </label>
<input id="radio" name="radio" type="radio" />
</p>
<p>
<label for="checkbox">ãã§ãã¯ããã¯ã¹: </label>
<input id="checkbox" name="checkbox" type="checkbox" />
</p>
<p><input type="submit" value="éä¿¡" /></p>
<p><input type="button" value="ãã¿ã³" /></p>
</form>
次㮠CSS ãé©ç¨ãã¦ã·ã¹ãã ã¬ãã«ã®ã¹ã¿ã¤ã«è¨å®ãåé¤ãã¾ãã
input {
appearance: none;
}
ä¸è¨ã®ä¾ã§ã¯ã使ãã®ã·ã¹ãã ã§ã©ã®ããã«è¦ãããã示ãã¾ããæ¢å®ã§ã¯å·¦ã§ãä¸è¨ã® CSS ãé©ç¨ãããã¨å³ã®ããã«ãªãã¾ãã
ããã¦ãã®å ´åãå¹æã¯æ ç·ãé¤å»ãã CSS ã§ã®ã¹ã¿ã¤ã«è¨å®ãå°ãç°¡åã«ãã¾ãããããã¯æ¬è³ªçã§ã¯ããã¾ãããããã¤ãã®å ´åãæ¤ç´¢ãã©ã¸ãªãã¿ã³/ãã§ãã¯ããã¯ã¹ã§ã¯ããã£ã¨ä¾¿å©ã§ãããããè¦ã¦ããã¾ãããã
æ¤ç´¢ããã¯ã¹ã¨ appearance
appearance: none; ã®å¤ã¯ã<input type="search"> è¦ç´ ãä¸è²«ãã¦ã¹ã¿ã¤ã«è¨å®ããã®ã«ç¹ã«ä¾¿å©ã§ãããããããªãã¨ãSafari ã§ã¯ãããã®è¦ç´ ã« height ã font-size ã®å¤ãè¨å®ãããã¨ã¯ã§ãã¾ããã§ããããã ãããã®å¶éã¯Safari 16 以éã§ã¯ãªããªãã¾ããããã ãããã©ã¦ã¶ã¼ã®å¯¾å¿ç¯å²ã« Safari 16 ããå¤ããã¼ã¸ã§ã³ãå«ã¾ãã¦ããå ´åãinput[type="search"] è¦ç´ ãæç¤ºçã«ã¿ã¼ã²ããã¨ãã¦ãappearance: none; ãé©ç¨ãããã¨ãæ¤è¨ãã¦ãã ããã
æ¤ç´¢å ¥åæ¬ã«ããã¦ãå¤ã null ã§ãªãå ´åã«ç¾ãã "x" åé¤ãã¿ã³ã¯ãEdge 㨠Chrome ã§ã¯å ¥åæ¬ããã©ã¼ã«ã¹ã失ãã¨æ¶ãã¾ãããSafari ã§ã¯è¡¨ç¤ºãããã¾ã¾ã«ãªãã¾ãã æ¬¡ã®ã«ã¼ã«ã使ç¨ãããã¨ã§ãCSS ã«ããé¤å»ãããã¨ãã§ãã¾ãã
input[type="search"]:not(:focus, :active)::-webkit-search-cancel-button {
display: none;
}
appearance ã使ç¨ãããã§ãã¯ããã¯ã¹ã¨ã©ã¸ãªãã¿ã³ã®ã¹ã¿ã¤ã«è¨å®
ãã§ãã¯ããã¯ã¹ãã©ã¸ãªãã¿ã³ã®ã¹ã¿ã¤ã«è¨å®ã¯ãåæç¶æ ã®ã¾ã¾ã§ã¯åä»ã§ãããã§ãã¯ããã¯ã¹ãã©ã¸ãªãã¿ã³ã®ãµã¤ãºã¯åæç¶æ ã®ã¾ã¾ã§ã¯å¤æ´ã§ããªãããã«ãªã£ã¦ãã¾ããã夿´ãããã¨ããã¨ãã©ã¦ã¶ã¼ã®åå¿ã大ããç°ãªãã¾ããã³ã³ããã¼ã«ã®ãµã¤ãºã大ãããªãªããã®ãããã°ãã³ã³ããã¼ã«ã®ãµã¤ãºããã®ã¾ã¾ã«å¨å²ã«ç©ºéã追å ãããã®ãããã¾ãã
appearance: none; ã§ãã§ãã¯ããã¯ã¹ã¨ã©ã¸ãªãã¿ã³ã®ããã©ã«ãã®å¤è¦³ãå®å
¨ã«é¤å»ãããããã«è¨å®ãããã®å¾ãããããã®æ§ã
ãªç¶æ
ã«èªåèªèº«ã§ã¹ã¿ã¤ã«ã追å ããã®ãã¯ããã«è¯ãæ¹æ³ã§ãã
ãã® HTML ã®ä¾ãè¦ã¦ã¿ã¾ãããã
<form>
<fieldset>
<legend>æç©ã®å¥½ã¿</legend>
<p>
<label>
<input type="checkbox" name="fruit" value="cherry" />
ãµã¯ã©ã³ãã好ã
</label>
</p>
<p>
<label>
<input type="checkbox" name="fruit" value="banana" disabled />
ãããã¯å¥½ãã«ãªããªã
</label>
</p>
<p>
<label>
<input type="checkbox" name="fruit" value="strawberry" />
ã¤ãã´ã好ã
</label>
</p>
</fieldset>
</form>
ããããç¬èªã®ãã§ãã¯ããã¯ã¹ãã¶ã¤ã³ã§ã¹ã¿ã¤ã«è¨å®ãã¾ããããå ã®ãã§ãã¯ããã¯ã¹ã®ã¹ã¿ã¤ã«ãåé¤ãããã¨ããå§ãã¾ãããã
input[type="checkbox"] {
appearance: none;
}
:checked 㨠:disabled æ¬ä¼¼ã¯ã©ã¹ã使ç¨ãã¦ãç¶æ
ã®å¤åã«åããã¦ã«ã¹ã¿ã ãã§ãã¯ããã¯ã¹ã®å¤è¦³ã夿´ãã¾ãã
input[type="checkbox"] {
position: relative;
width: 1em;
height: 1em;
border: 1px solid gray;
/* ãã§ãã¯ããã¯ã¹ã®ä½ç½®ãããã¹ãã®ãã¼ã¹ã©ã¤ã³ã«åããã¦èª¿æ´ */
vertical-align: -2px;
/* Windows ã®ãã¤ã³ã³ãã©ã¹ãã¢ã¼ããåªå
ãããããã«è¨å®ãã */
color: green;
}
input[type="checkbox"]::before {
content: "â";
position: absolute;
font-size: 1.2em;
right: -1px;
top: -0.3em;
visibility: hidden;
}
input[type="checkbox"]:checked::before {
/* `visibility` ã `display` ã®ä»£ããã«ä½¿ç¨ããã¨ãã¬ã¤ã¢ã¦ãã®åè¨ç®ãé¿ãããã¨ãã§ãã */
visibility: visible;
}
input[type="checkbox"]:disabled {
border-color: black;
background: #dddddd;
color: gray;
}
ããããæ¬ä¼¼ã¯ã©ã¹ãªã©ã«ã¤ãã¦ã®æ å ±ã¯ã次ã®è¨äºã§è¦ããã¨ãã§ãã¾ããä¸è¨ã®ãã®ã¯æ¬¡ã®ãããªãã¨ããã¦ãã¾ãã
:checkedâ ãã§ãã¯ããã¯ã¹ (ãã©ã¸ãªãã¿ã³) ããã§ãã¯ãããç¶æ ã«ããã¾ã â ã¦ã¼ã¶ã¼ãã¯ãªãã¯/æå¹åãã¦ãã¾ãã:disabledâ ãã§ãã¯ããã¯ã¹ (ãã©ã¸ãªãã¿ã³) ãç¡å¹ãªç¶æ ã«ããã¾ã â æä½ãããã¨ãã§ãã¾ããã
å®éã®çµæã表示ããã¾ãã
ã¾ããããå¤ãã®ã¢ã¤ãã¢ãæä¾ããããã«ãä»ã®ä¾ãããã¤ã使ãã¦ãã¾ãã
- Styled radio buttons: ã«ã¹ã¿ã ã©ã¸ãªãã¿ã³ã¹ã¿ã¤ã«è¨å®ã
- Toggle switch example: ãã°ã«ã¹ã¤ããã®ãããªãã§ãã¯ããã¯ã¹ã
ã壿ªãè¦ç´ ã«ä½ãã§ããã
ä»åº¦ã¯ã壿ªããªã³ã³ããã¼ã«ã«æ³¨ç®ãã¾ããããããã¯å®å
¨ã«ã¹ã¿ã¤ã«è¨å®ããã®ãæ¬å½ã«é£ãããã®ã§ããç°¡åã«ããã¨ãããã¯ãããããã¦ã³ããã¯ã¹ã color ã datetime-local ã®ãããªè¤åã³ã³ããã¼ã«åã<progress> ã <meter> ã®ãããªã³ã³ããã¼ã«å¿åã®ãã£ã¼ãããã¯ã§ãã
åé¡ã¯ãè¦ç´ ã¯ãã©ã¦ã¶ã¼å士ã§ãããããªæ¢å®ã®è¦ãç®ããã£ã¦ãããã«ã¹ã¿ã¤ã«è¨å®ã§ãã¦ããå é¨ã®ããã¤ãã¯ã¹ã¿ã¤ã«è¨å®ã§ããªããã¨ã§ãã
è¦ãç®ãæä½æã«å¤å°ã®éãããããã¨ã許容ã§ããå ´åãåç´ãªã¹ã¿ã¤ã«è¨å®ã§å¤§å¹
ã«æ¹åãããã¨ãã§ãã¾ãã ä¾ãã°ãbackground-color ãªã©ã®ããããã£ã®ãµã¤ãºãã¹ã¿ã¤ã«ãçµ±ä¸ããããappearance ã使ç¨ãã¦ã·ã¹ãã ã¬ãã«ã®ã¹ã¿ã¤ã«ãä¸é¨é¤å»ãããããã«ããããããã¨ã§ãã
ä¾ãè¦ã¦ã¿ã¾ããããããããã®ã壿ªããªãã©ã¼ã æ©è½ãã¤ãã¤ãã«è¡¨ç¤ºãã¦ãã¾ãã
Play ãã¿ã³ãæ¼ãã¨ãMDN Playground ã§ãã®ä¾ãå®è¡ããã½ã¼ã¹ãç·¨éãããã¨ãã§ãã¾ãã
ãã®ä¾ã§ã¯ä¸è¨ã® CSS ãé©ç¨ãã¦ãã¾ãã
body {
font-family: "Josefin Sans", sans-serif;
margin: 20px auto;
max-width: 400px;
}
form > div {
margin-bottom: 20px;
}
select {
appearance: none;
width: 100%;
height: 100%;
}
.select-wrapper {
position: relative;
}
.select-wrapper::after {
content: "â¼";
font-size: 1rem;
top: 3px;
right: 10px;
position: absolute;
}
button,
label,
input,
select,
progress,
meter {
display: block;
font-family: inherit;
font-size: 100%;
margin: 0;
box-sizing: border-box;
width: 100%;
padding: 5px;
height: 30px;
}
input[type="text"],
input[type="datetime-local"],
input[type="color"],
select {
box-shadow: inset 1px 1px 3px #cccccc;
border-radius: 5px;
}
label {
margin-bottom: 5px;
}
button {
width: 60%;
margin: 0 auto;
}
ãã¡ã¤ã«ããã«ã¼ã§é¸æããããã¡ã¤ã«ãä¸è¦§è¡¨ç¤ºãããã¼ã¸ã«ãã³ã³ããã¼ã«ã®ä¸é¨ã« JavaScript ã追å ãã¾ããããã㯠<input type="file"> ãªãã¡ã¬ã³ã¹ãã¼ã¸ã«ããä¾ã®ç°¡ç¥çã§ãã
const fileInput = document.querySelector("#file");
const fileList = document.querySelector("#file-list");
fileInput.addEventListener("change", updateFileList);
function updateFileList() {
while (fileList.firstChild) {
fileList.removeChild(fileList.firstChild);
}
const curFiles = fileInput.files;
if (!(curFiles.length === 0)) {
for (const file of curFiles) {
const listItem = document.createElement("li");
listItem.textContent = `ãã¡ã¤ã«å: ${file.name}; ãã¡ã¤ã«ãµã¤ãº: ${returnFileSize(file.size)}.`;
fileList.appendChild(listItem);
}
}
}
function returnFileSize(number) {
if (number < 1e3) {
return `${number} bytes`;
} else if (number >= 1e3 && number < 1e6) {
return `${(number / 1e3).toFixed(1)} KB`;
}
return `${(number / 1e6).toFixed(1)} MB`;
}
ãã°ãã¼ãã«ãªãã¹ã¿ã¤ã«
åã®ä¾ã§ã¯ãã壿ªããªã³ã³ããã¼ã«ãç¾è¡ã®ãã©ã¦ã¶ã¼éã§çµ±ä¸ãããè¦ãç®ã«ããã¨ããç¹ã§ãããªããã¾ãããã¾ããã
åã®è¨äºã§è§¦ããããã«ããã¹ã¦ã®ã³ã³ããã¼ã«ã¨ãã®ã©ãã«ã«ã°ãã¼ãã«ãªæ£è¦å CSS ãé©ç¨ããåãæ¹æ³ã§ãµã¤ãºèª¿æ´ãããã親è¦ç´ ã®ãã©ã³ããæ¡ç¨ããããã¾ããã
button,
label,
input,
select,
progress,
meter {
display: block;
font-family: inherit;
font-size: 100%;
margin: 0;
box-sizing: border-box;
width: 100%;
padding: 5px;
height: 30px;
}
ã³ã³ããã¼ã«ã«çµ±ä¸ããå½±ã¨è§ä¸¸ãä¸ãã¦ãæå³ã®ããããã«ãã¾ãã
input[type="text"],
input[type="datetime-local"],
input[type="color"],
select {
box-shadow: inset 1px 1px 3px #cccccc;
border-radius: 5px;
}
ç¯å²ã鲿ãã¼ãã¡ã¼ã¿ã¼ã«ã¤ãã¦ã¯ãã³ã³ããã¼ã«é åã®å¨ãã«ç¾ãããªãããã¯ã¹ãã§ããã ããªã®ã§ãæå³ã¯ããã¾ããã
ãããã®ç¨®é¡ã®ã³ã³ããã¼ã«ã¨ããããã®å ·ä½çãªç¹ã«ã¤ãã¦ããã®éç¨ã§çããå°é£ã強調ããªãã説æãã¾ãããã
select ã¨ãã¼ã¿ãªã¹ã
ä¸é¨ã®ãã©ã¦ã¶ã¼ã§ã¯ãã«ã¹ã¿ãã¤ãºå¯è½ãª select è¦ç´ ã«å¯¾å¿ããããã«ãªãã¾ããããã㯠HTML 㨠CSS ã®æ©è½ç¾¤ã§ããã<select> è¦ç´ ã¨ãã®ã³ã³ãã³ããé常㮠DOM è¦ç´ ã¨åæ§ã«å®å
¨ã«ã«ã¹ã¿ãã¤ãºãããã¨ãã§ãã¾ãã対å¿ãã©ã¦ã¶ã¼ãã³ã¼ããã¼ã¹ã§ã¯ãä¸è¨ã§èª¬æãã¦ãã <select> è¦ç´ åãã®å¤ãææ³ãæ°ã«ããå¿
è¦ã¯ããããã¾ããã
ï¼ã«ã¹ã¿ãã¤ãºå¯è½ãª select ã«å¯¾å¿ãã¦ããªããã©ã¦ã¶ã¼ã«ããã¦ï¼ãã¼ã¿ãªã¹ã㨠select ã®ã¹ã¿ã¤ã«è¨å®ã¯ãããã©ã«ãã®è¦ãç®ãã大ããå¤ããªããã°ã容èªã§ããã¬ãã«ã®ã«ã¹ã¿ãã¤ãºããããã¨ãã§ãã¾ããããã¯ã¹ã®åºæ¬çãªè¦ãç®ãããªãåä¸ã§ä¸è²«æ§ã®ãããã®ã«ãã¦ãã¾ããããã¼ã¿ãªã¹ãã³ã³ããã¼ã«ã¯ã©ã®ã¿ã¡ <input type="text"> ãªã®ã§ãåé¡ã«ãªããªããã¨ãããã£ã¦ãã¾ãã
2 ã¤ã®ãã®ãå¤å°åé¡ãã¯ããã§ãã¾ããã¾ãæåã«ã select ããããããã¦ã³ã§ãããã¨ã示ããç¢å°ãã¢ã¤ã³ã³ã¯ããã©ã¦ã¶ã¼ã«ãã£ã¦ç°ãªãã¾ããã¾ã select ããã¯ã¹ã®ãµã¤ãºã大ãããããã夿´ãããããã¨ãéããªããã¡ã§ãããããä¿®æ£ãããããä¾ã§ã¯æåã«æ§åã® appearance: none ã使ã£ã¦ã¢ã¤ã³ã³ãé¤å»ãã¦ãã¾ãã
select {
appearance: none;
}
次ã«çæãããã³ã³ãã³ãã使ã£ã¦ç¬èªã®ã¢ã¤ã³ã³ã使ãã¾ããã³ã³ããã¼ã«ã®å¨ãã«ç¹å¥ãªã©ããã¼ãç½®ãã¾ããããã㯠::before/::after ã <select> è¦ç´ ã§ã¯åä½ããªãããã§ãï¼ããã¯ã³ã³ãã³ããå®å
¨ã«ãã©ã¦ã¶ã¼ã«ãã£ã¦å¶å¾¡ããã¦ããããã§ãï¼ã
<label for="select">Select a fruit</label>
<div class="select-wrapper">
<select id="select" name="select">
<option>ããã</option>
<option>ãµã¯ã©ã³ã</option>
<option>ã¬ã¢ã³</option>
</select>
</div>
次ã«çæãããã³ã³ãã³ãã使ã£ã¦å°ããªä¸åãç¢å°ãä½ããæ£ããå ´æã«é ç½®ãã¾ãã
.select-wrapper {
position: relative;
}
.select-wrapper::after {
content: "â¼";
font-size: 1rem;
top: 6px;
right: 10px;
position: absolute;
}
2 ã¤ç®ã®ãããå°ãéè¦ãªåé¡ã¯ã <select> ããã¯ã¹ãã¯ãªãã¯ãã¦éããã¨ãã«ç¾ããã鏿è¢ã®å
¥ã£ãããã¯ã¹ãæä½ãããã¨ãã§ããªããã¨ã§ãã親è¦ç´ ã«è¨å®ããã¦ãããã©ã³ããç¶æ¿ãããã¨ã¯ã§ãã¾ãããééãè²ãªã©ãè¨å®ãããã¨ã¯ã§ãã¾ããã <datalist> ã§ç¾ããèªåè£å®ãªã¹ããåæ§ã§ãã
æ¬å½ã«é¸æè¢ãã¹ã¿ã¤ã«è¨å®ããå¿
è¦ãããå ´åãã«ã¹ã¿ã ã³ã³ããã¼ã«ãçæããã©ã¤ãã©ãªã¼ã使ç¨ããããç¬èªã®ã«ã¹ã¿ã ã³ã³ããã¼ã«ã使ãããã®ã©ã¡ãããå¿
è¦ã§ãã <select> ã®å ´åãmultiple 屿§ã使ããã¨ã§ãããã¯ãã¼ã¸ä¸ã«åºã¦ãããã¹ã¦ã®é¸æè¢ã使ãããã®ç¹æ®ãªåé¡ãé¿ãããã¨ãã§ãã¾ãã
<label for="select">æç©ã鏿</label>
<select id="select" name="select" multiple>
â¦
</select>
ãã¡ããããã§ãé²ãã¦ãããã¶ã¤ã³ã«ã¯åããªãå¯è½æ§ãããã¾ãããæ³¨ç®ã«å¤ãã¾ãã
æ¥ä»å ¥åå
æ¥ä»/æéã®å
¥åå (datetime-local, time, week, month) ã«ã¯ãã¹ã¦åãé大ãªé¢é£ããåé¡ãããã¾ããå®éã®ããã¯ã¹ã¯ãããã¹ãå
¥åã¨åæ§ã«ç°¡åã«ã¹ã¿ã¤ã«ãè¨å®ãããã¨ãã§ãããã®ãã¢ã§ã¯ãã¾ã表示ããã¦ãã¾ãã
ããããã³ã³ããã¼ã«ã®å
é¨é¨åï¼æ¥ä»ãããã¯ã¢ããããã®ã«ä½¿ããããã¢ããã«ã¬ã³ãã¼ãå¤ã墿¸ããã¹ããã¼ãªã©ï¼ã¯ã¾ã£ããã¹ã¿ã¤ã«è¨å®ã§ãããappearance: none; ã使ã£ã¦ãã¹ã¿ã¤ã«ãé¤å»ã§ãã¾ãããã¹ã¿ã¤ã«è¨å®ãå®å
¨ã«å¶å¾¡ããå¿
è¦ãããå ´åã¯ãã«ã¹ã¿ã ã³ã³ããã¼ã«ãçæããã©ã¤ãã©ãªã¼ã使ãããèªåã§ä½ããªããã°ãªãã¾ããã
ã¡ã¢:
ããã§ã<input type="number"> ã¯è§¦ãã価å¤ãããã¾ãããããã¾ããå¤ãå¢å /æ¸å°ãããããã«ä½¿ç¨ãããã¨ãã§ããã¹ããã¼ãããã®ã§ãåãåé¡ã«æ©ã¾ãããå¯è½æ§ãããã¾ãããããã number åã®å ´åãåéãããã¼ã¿ã¯ããåç´ã§ã代ããã« tel å
¥ååã使ç¨ããã®ãç°¡åã§ãããã㯠text ã®ãããªå¤è¦³ã§ãããã¿ãããã¼ãã¼ããæè¼ããæ©å¨ã§ã¯ãã³ãã¼ã表示ãããã¨ãã§ãã¾ãã
ç¯å²å ¥åå
<input type="range"> ã¯ã¹ã¿ã¤ã«è¨å®ãå°é£ã§ãã以ä¸ã®ããã«ä½¿ç¨ãããã¨ã§ãæ¢å®å¤ã®ã¹ã©ã¤ãã¼ãã©ãã¯ãå®å
¨ã«åé¤ããã«ã¹ã¿ã ã¹ã¿ã¤ã«ï¼ãã®ä¾ã§ã¯ãç´°ã赤ã®ãã©ãã¯ï¼ã«ç½®ãæãããã¨ãã§ãã¾ãã
input[type="range"] {
appearance: none;
background: red;
height: 2px;
padding: 0;
outline: 1px solid transparent;
}
ãããã range ã³ã³ããã¼ã«ã®ãã©ãã°ãã³ãã«ã®ã¹ã¿ã¤ã«ãã«ã¹ã¿ãã¤ãºãããã¨ã¯ã¨ã¦ãå°é£ã§ãã range ã®ã¹ã¿ã¤ã«ãå®å ¨ã«æä½ããããã«ã¯ãè¤æ°ã®éæ¨æºçã§ãã©ã¦ã¶ã¼ç¹æã®æ¬ä¼¼è¦ç´ ãå«ããè¤é㪠CSS ã³ã¼ãã使ç¨ããå¿ è¦ãããã¾ãã Styling Cross-Browser Compatible Range Inputs with CSS ã§å¿ è¦ãªãã®ãç´°ããæ¸ãããã® CSS ããªãã¯ã確èªãã¾ãã
color å ¥åå
color åã®å ¥åã³ã³ããã¼ã«ã¯æªããã®ã§ã¯ããã¾ããã対å¿ãã¦ãããã©ã¦ã¶ã¼ã§ã¯ãå°ããªå¢çç·ä»ãã®ç¡å°ã®ãããã¯ã表示ããã¾ãã
å¢çç·ãåé¤ãã¦ãè²ã®ãããã¯ã ãã«ããã«ã¯ã次ã®ããã«ãã¾ãã
input[type="color"] {
border: 0;
padding: 0;
}
ãããã大ããå¤ãã£ããã®ãå¾ãã«ã¯ãã«ã¹ã¿ã ã½ãªã¥ã¼ã·ã§ã³ãå¯ä¸ã®æ¹æ³ã§ãã
ãã¡ã¤ã«å ¥åå
ãã¡ã¤ã«å ¥ååã¯é常㯠OK ã§ããä¾ã§è¦ã¦ããããã«ããã¼ã¸ã®æ®ãã®é¨åã«åé¡ãªããã£ããããä½ããä½ãã®ã¯ã¨ã¦ãç°¡åã§ããã³ã³ããã¼ã«ã®ä¸é¨åã§ãããåºåè¡ã¯ãå ¥åã«ããæç¤ºãã¦ããå ´åã¯è¦ªã®ãã©ã³ããç¶æ¿ãã¦ãã«ã¹ã¿ã ãªã¹ãã«ååããµã¤ãºãã好ã¿ã§ã¹ã¿ã¤ã«è¨å®ã§ãã¾ããçµå±ã¯ä½ã£ã¦ã¿ã¾ããã
ãã¡ã¤ã«ããã«ã¼ã®å¯ä¸ã®åé¡ã¯ããã¡ã¤ã«ããã«ã¼ãéãããã«æ¼ããã¿ã³ãããµã¤ãºãè²ã夿´ã§ãããç°ãªããã©ã³ããåãå ¥ãããããå®å ¨ã«ã¹ã¿ã¤ã«è¨å®ãä¸å¯è½ã§ãããã¨ã§ãã
ãããåé¿ããä¸ã¤ã®æ¹æ³ã¯ããã©ã¼ã ã³ã³ããã¼ã«ã«é¢é£ä»ããããã©ãã«ãããå ´åããã®ã©ãã«ãã¯ãªãã¯ããã¨ã³ã³ããã¼ã«ãæå¹ã«ãªããã¨ãå©ç¨ãããã¨ã§ããããã§ã次ã®ãããªæ¹æ³ã§å®éã®ãã©ã¼ã å ¥åãé表示ã«ãããã¨ãã§ãã¾ãã
input[type="file"] {
height: 0;
padding: 0;
opacity: 0;
}
次ã«ãã¿ã³ã®ããã«åä½ããã©ãã«ãã¹ã¿ã¤ã«è¨å®ãããã®ã©ãã«ãæ¼ãããæã«ãã¡ã¤ã«ããã«ã¼ãæå¾ éãéãããã«ãã¾ãã
label[for="file"] {
box-shadow: 1px 1px 3px #cccccc;
background: linear-gradient(to bottom, #eeeeee, #cccccc);
border: 1px solid darkgrey;
border-radius: 5px;
text-align: center;
line-height: 1.5;
}
label[for="file"]:hover {
background: linear-gradient(to bottom, white, #dddddd);
}
label[for="file"]:active {
box-shadow: inset 1px 1px 3px #cccccc;
}
ä¸è¨ã® CSS ã¹ã¿ã¤ã«ã®è¨å®ã®çµæã¯ãä¸è¨ã©ã¤ããµã³ãã«ã§ç¢ºèªå¯è½ã§ãã
Play ãã¿ã³ãæ¼ãã¨ãMDN Playground ã§ãã®ä¾ãå®è¡ããã½ã¼ã¹ãç·¨éãããã¨ãã§ãã¾ãã
meter ã¨é²æãã¼
<meter> 㨠<progress> ã¯å¤ãã®ä¸ã§ææªããããã¾ãããå
ã»ã©ã®ä¾ã§è¦ãããã«ãå¹
ã¯æ¯è¼ç叿éãã«è¨å®ãããã¨ãã§ãã¾ãããããããã以ä¸ã«ãã©ã®ãããªæ¹æ³ã§ãã¹ã¿ã¤ã«ãè¨å®ãããã¨ã¯æ¬å½ã«å°é£ã§ããã¾ããèæ¯ã«ã¯è²ãã¤ãããã¨ãã§ãã¾ãããåé¢ã®ãã¼ã«ã¯è²ãã¤ãããã¨ãã§ãã¾ãããã appearance: none ãè¨å®ããã¨ãè¯ããªãã©ãããæªåãã¦ãã¾ãã¾ãã
ã¹ã¿ã¤ã«è¨å®ãå¶å¾¡ãããå ´åã¯ããã®æ©è½ã®ã«ã¹ã¿ã ã½ãªã¥ã¼ã·ã§ã³ãä½ã£ãããprogressbar.js ã®ãããªãµã¼ããã¼ãã£ã®ã½ãªã¥ã¼ã·ã§ã³ã使ã£ããããæ¹ãç°¡åã§ãã
ã¾ã¨ã
HTML ãã©ã¼ã ã§ CSS ã使ç¨ããã®ã¯ã¾ã å°é£ã§ããããã°ãã°ããããåé¿ããæ¹æ³ãããã¾ããã¯ãªã¼ã³ã§ã¦ããã¼ãµã«ãªè§£æ±ºæ¹æ³ã¯ããã¾ããããææ°ã®ãã©ã¦ã¶ã¼ã§ã¯æ°ããå¯è½æ§ãããã¾ããä»ã®ã¨ãããæè¯ã®è§£æ±ºçã¯ãHTML ãã©ã¼ã ã¦ã£ã¸ã§ããã«é©ç¨ãããã¨ãã«ç°ãªããã©ã¦ã¶ã¼ã CSS ããµãã¼ãããæ¹æ³ã®è©³ç´°ãå¦ã¶ãã¨ã§ãã
ãã®ã¢ã¸ã¥ã¼ã«ã®æ¬¡ã®è¨äºã§ã¯ãææ°ã®HTMLã¨CSSã®å°ç¨æ©è½ãæ´»ç¨ãã¦ãå®å
¨ã«ç¬èªã® <select> è¦ç´ ãçæããæ¹æ³ã«ã¤ãã¦æ¢æ±ãã¾ãã