ใ“ใฎใƒšใƒผใ‚ธใฏใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃใƒผใฎๅฐฝๅŠ›ใง่‹ฑ่ชžใ‹ใ‚‰็ฟป่จณใ•ใ‚Œใพใ—ใŸใ€‚MDN Web Docs ใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃใƒผใซใคใ„ใฆใ‚‚ใฃใจ็Ÿฅใ‚Šใ€ไปฒ้–“ใซใชใ‚‹ใซใฏใ“ใกใ‚‰ใ‹ใ‚‰ใ€‚

View in English Always switch to English

<input type="button">

Baseline Widely available

This feature is well established and works across many devices and browser versions. Itโ€™s been available across browsers since โจ2015ๅนด7ๆœˆโฉ.

<input> ่ฆ็ด ใฎ button ๅž‹ใฏใ€ใƒ—ใƒƒใ‚ทใƒฅใƒœใ‚ฟใƒณใจใ—ใฆๆ็”ปใ•ใ‚Œใ€ใ‚คใƒ™ใƒณใƒˆใƒใƒณใƒ‰ใƒฉใƒผ้–ขๆ•ฐ (ใตใคใ†ใฏ click ใ‚คใƒ™ใƒณใƒˆ) ใ‚’ๅ‰ฒใ‚Šๅฝ“ใฆใ‚‹ใ“ใจใงใ€ใ‚ฆใ‚งใƒ–ใƒšใƒผใ‚ธใฎใ‚ใ‚‰ใ‚†ใ‚‹ๅ ดๆ‰€ใงใ‚ซใ‚นใ‚ฟใƒ ๆฉŸ่ƒฝใ‚’ๅˆถๅพกใ™ใ‚‹ใ‚ˆใ†ใซใƒ—ใƒญใ‚ฐใƒฉใƒ ใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

่ฉฆใ—ใฆใฟใพใ—ใ‚‡ใ†

<input class="styled" type="button" value="Add to favorites" />
.styled {
  border: 0;
  line-height: 2.5;
  padding: 0 20px;
  font-size: 1rem;
  text-align: center;
  color: #fff;
  text-shadow: 1px 1px 1px #000;
  border-radius: 10px;
  background-color: rgb(220 0 0 / 100%);
  background-image: linear-gradient(
    to top left,
    rgb(0 0 0 / 20%),
    rgb(0 0 0 / 20%) 30%,
    rgb(0 0 0 / 0%)
  );
  box-shadow:
    inset 2px 2px 3px rgb(255 255 255 / 60%),
    inset -2px -2px 3px rgb(0 0 0 / 60%);
}

.styled:hover {
  background-color: rgb(255 0 0 / 100%);
}

.styled:active {
  box-shadow:
    inset -2px -2px 3px rgb(255 255 255 / 60%),
    inset 2px 2px 3px rgb(0 0 0 / 60%);
}

ใƒกใƒข: <input> ่ฆ็ด ใฎ button ๅž‹ใฏๅฎŒๅ…จใซๅฆฅๅฝ“ใช HTML ใงใ™ใŒใ€ใ‚ˆใ‚Šๆ–ฐใ—ใ„ <button> ่ฆ็ด ใŒใ€ใƒœใ‚ฟใƒณใฎไฝœๆˆใซใฏใ‚ˆใ‚Šๅฅฝใพใ‚Œใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ—ใŸใ€‚ <button> ใฎใƒฉใƒ™ใƒซๆ–‡ๅญ—ๅˆ—ใฏ้–‹ๅง‹ใ‚ฟใ‚ฐใจ็ต‚ไบ†ใ‚ฟใ‚ฐใฎ้–“ใซๆŒฟๅ…ฅใ•ใ‚Œใ€ใƒฉใƒ™ใƒซใซ็”ปๅƒใ‚’ๅซใ‚€ HTML ใ‚’ๅซใ‚ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

ๅ€ค

value ใ‚ใ‚Šใฎใƒœใ‚ฟใƒณ

<input type="button"> ่ฆ็ด ใฎ value ๅฑžๆ€งใซใฏใ€ใƒœใ‚ฟใƒณใฎใƒฉใƒ™ใƒซใจใ—ใฆไฝฟใ‚ใ‚Œใ‚‹ๆ–‡ๅญ—ๅˆ—ใ‚’่จญๅฎšใ—ใพใ™ใ€‚ value ใฏใƒœใ‚ฟใƒณใฎใ‚ขใ‚ฏใ‚ปใ‚ทใƒ–ใƒซ่ชฌๆ˜Žใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚

html
<input type="button" value="ใ‚ฏใƒชใƒƒใ‚ฏใ—ใฆใญ" />

value ใชใ—ใฎใƒœใ‚ฟใƒณ

value ใ‚’ๆŒ‡ๅฎšใ—ใชใ‹ใฃใŸๅ ดๅˆใฏใ€็„กๅฐใฎใƒœใ‚ฟใƒณใซใชใ‚Šใพใ™ใ€‚

html
<input type="button" />

ใƒœใ‚ฟใƒณใฎไฝฟ็”จ

<input type="button"> ่ฆ็ด ใซใฏๆ—ขๅฎšใฎๅ‹•ไฝœใŒใ‚ใ‚Šใพใ›ใ‚“๏ผˆ่ฆชๆˆšใงใ‚ใ‚‹ <input type="submit"> ใ‚„ <input type="reset"> ใฏใ€ใใ‚Œใžใ‚Œใƒ•ใ‚ฉใƒผใƒ ใฎ้€ไฟกใจใƒชใ‚ปใƒƒใƒˆใซไฝฟ็”จใ•ใ‚Œใพใ™๏ผ‰ใ€‚ใƒœใ‚ฟใƒณใซไฝ•ใ‹ใ‚’ใ•ใ›ใ‚‹ๅ ดๅˆใฏใ€ๅ‡ฆ็†ใ‚’่กŒใ†ใŸใ‚ใฎ JavaScript ใ‚ณใƒผใƒ‰ใ‚’ๆ›ธใๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚

ๅŸบๆœฌ็š„ใชใƒœใ‚ฟใƒณ

ๅŸบๆœฌ็š„ใชใƒœใ‚ฟใƒณใซ click ใ‚คใƒ™ใƒณใƒˆใƒใƒณใƒ‰ใƒฉใƒผใ‚’่จญๅฎšใ—ใ€ใƒžใ‚ทใƒณใ‚’่ตทๅ‹•ใ•ใ›ใพใ—ใ‚‡ใ†๏ผˆใคใพใ‚Šใ€ใƒœใ‚ฟใƒณใฎ value ใจ็ถšใๆฎต่ฝใฎๆ–‡ๅญ—ๅˆ—ใ‚ณใƒณใƒ†ใƒณใƒ„ใ‚’ๅˆ‡ใ‚Šๆ›ฟใˆใพใ™๏ผ‰ใ€‚

html
<form>
  <input type="button" value="ใƒžใ‚ทใƒณใ‚’่ตทๅ‹•" />
</form>
<p>ใƒžใ‚ทใƒณใŒๅœๆญขใ—ใฆใ„ใพใ™ใ€‚</p>
js
const button = document.querySelector("input");
const paragraph = document.querySelector("p");

button.addEventListener("click", updateButton);

function updateButton() {
  if (button.value === "ใƒžใ‚ทใƒณใ‚’่ตทๅ‹•") {
    button.value = "ใƒžใ‚ทใƒณใ‚’ๅœๆญข";
    paragraph.textContent = "ใƒžใ‚ทใƒณใŒ่ตทๅ‹•ใ—ใฆใ„ใพใ™๏ผ";
  } else {
    button.value = "ใƒžใ‚ทใƒณใ‚’่ตทๅ‹•";
    paragraph.textContent = "ใƒžใ‚ทใƒณใŒๅœๆญขใ—ใฆใ„ใพใ™ใ€‚";
  }
}

ใ“ใฎใ‚นใ‚ฏใƒชใƒ—ใƒˆใฏ DOM ใง <input> ใ‚’่กจใ™ HTMLInputElement ใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใฎๅ‚็…งใ‚’ๅ—ใ‘ๅ–ใ‚Šใ€ใ“ใฎๅ‚็…งใ‚’ๅค‰ๆ•ฐ button ใซไฟๅญ˜ใ—ใพใ™ใ€‚addEventListener() ใฏใ€ใƒœใ‚ฟใƒณใซ click ใ‚คใƒ™ใƒณใƒˆใŒ็™บ็”Ÿใ—ใŸใจใใซๅฎŸ่กŒใ•ใ‚Œใ‚‹้–ขๆ•ฐใ‚’่จญๅฎšใ—ใพใ™ใ€‚

ใƒœใ‚ฟใƒณใธใฎใ‚ทใƒงใƒผใƒˆใ‚ซใƒƒใƒˆใ‚ญใƒผใฎ่ฟฝๅŠ 

ใ‚ทใƒงใƒผใƒˆใ‚ซใƒƒใƒˆใ‚ญใƒผใฏใ€ใ‚ขใ‚ฏใ‚ปใ‚นใ‚ญใƒผใ‚„ใ‚ญใƒผใƒœใƒผใƒ‰ใ‚ทใƒงใƒผใƒˆใ‚ซใƒƒใƒˆใจใ‚‚ๅ‘ผใฐใ‚Œใพใ™ใŒใ€ใƒฆใƒผใ‚ถใƒผใŒใ‚ญใƒผใƒœใƒผใƒ‰ไธŠใฎใ‚ญใƒผใพใŸใฏใ‚ญใƒผใฎ็ต„ใฟๅˆใ‚ใ›ใ‚’ไฝฟ็”จใ—ใฆใƒœใ‚ฟใƒณใ‚’ๆ“ไฝœใงใใ‚‹ใ‚‚ใฎใงใ™ใ€‚ใƒœใ‚ฟใƒณใซใ‚ทใƒงใƒผใƒˆใ‚ซใƒƒใƒˆใ‚ญใƒผใ‚’่ฟฝๅŠ ใ™ใ‚‹ใซใฏใ€ใฉใฎ <input> ใงใ‚‚ๅŒใ˜ใงใ™ใŒใ€ accesskey ใ‚ฐใƒญใƒผใƒใƒซๅฑžๆ€งใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚

ใ“ใฎไพ‹ใงใฏใ€ s ใŒใ‚ขใ‚ฏใ‚ปใ‚นใ‚ญใƒผใจใ—ใฆๆŒ‡ๅฎšใ•ใ‚Œใฆใ„ใพใ™ (ใƒ–ใƒฉใ‚ฆใ‚ถใƒผใจ OS ใฎ็ต„ใฟๅˆใ‚ใ›ใซใ‚ˆใฃใฆใฏใ€ s ใจ็‰นๅฎšใฎไฟฎ้ฃพใ‚ญใƒผใฎ็ต„ใฟๅˆใ‚ใ›ใŒๅฟ…่ฆใงใ™ใ€‚ใใฎไธ€่ฆงใซใคใ„ใฆใฏ accesskey ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„)ใ€‚

html
<form>
  <input type="button" value="ใƒžใ‚ทใƒณใ‚’่ตทๅ‹•" accesskey="s" />
</form>
<p>ใƒžใ‚ทใƒณใŒๅœๆญขใ—ใฆใ„ใพใ™ใ€‚</p>

ใƒกใƒข: ไธŠ่จ˜ใฎไพ‹ใงใฏใ€ใƒฆใƒผใ‚ถใƒผใŒใ‚ขใ‚ฏใ‚ปใ‚นใ‚ญใƒผใŒไฝ•ใงใ‚ใ‚‹ใ‹ใ‚’็Ÿฅใ‚‹ใ“ใจใŒใงใใชใ„ใจใ„ใ†ๅ•้กŒใŒใ‚ใ‚Šใพใ™ใ€‚ๅฎŸ้š›ใฎใ‚ตใ‚คใƒˆใงใฏใ€ใ“ใฎๆƒ…ๅ ฑใ‚’ใ€ใ‚ตใ‚คใƒˆใฎใƒ‡ใ‚ถใ‚คใƒณใซๅนฒๆธ‰ใ—ใชใ„ๆ–นๆณ•ใงๆไพ›ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ (ใŸใจใˆใฐใ€็ฐกๅ˜ใซใ‚ขใ‚ฏใ‚ปใ‚นใงใใ‚‹ใƒชใƒณใ‚ฏใ‚’่จญ็ฝฎใ—ใฆใ€ใ‚ตใ‚คใƒˆใฎใ‚ขใ‚ฏใ‚ปใ‚นใ‚ญใƒผใซ้–ขใ™ใ‚‹ๆƒ…ๅ ฑใ‚’ๆŒ‡ใ™ใชใฉ)ใ€‚

ใƒœใ‚ฟใƒณใฎ็„กๅŠนๅŒ–ใจๆœ‰ๅŠนๅŒ–

ใƒœใ‚ฟใƒณใ‚’็„กๅŠนใซใ™ใ‚‹ใซใฏใ€ๆฌกใฎใ‚ˆใ†ใซ disabled ใ‚ฐใƒญใƒผใƒใƒซๅฑžๆ€งใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใ ใ‘ใงใ™ใ€‚

html
<input type="button" value="Disable me" disabled />

disabled ๅฑžๆ€งใฎ่จญๅฎš

ๅฎŸ่กŒๆ™‚ใซ disabled ใซ true ใพใŸใฏ false ใ‚’่จญๅฎšใ™ใ‚‹ใ ใ‘ใงใ€ใƒœใ‚ฟใƒณใ‚’ๆœ‰ๅŠนๅŒ–ใ—ใŸใ‚Š็„กๅŠนๅŒ–ใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚ใ“ใฎไพ‹ใงใฏใ€ใƒœใ‚ฟใƒณใฏๆœ‰ๅŠนใฎ็Šถๆ…‹ใงๅง‹ใพใ‚Šใพใ™ใŒใ€ๆŠผใ™ใจ button.disabled = true ใ‚’ไฝฟ็”จใ—ใฆ็„กๅŠนๅŒ–ใ•ใ‚Œใพใ™ใ€‚ใใ‚Œใ‹ใ‚‰ setTimeout() ้–ขๆ•ฐใ‚’ไฝฟ็”จใ—ใฆใ€2 ็ง’ๅพŒใซใƒœใ‚ฟใƒณใฎ็Šถๆ…‹ใ‚’ๆœ‰ๅŠนใฎ็Šถๆ…‹ใซใƒชใ‚ปใƒƒใƒˆใ—ใฆใ„ใพใ™ใ€‚

html
<input type="button" value="Enabled" />
js
const button = document.querySelector("input");

button.addEventListener("click", disableButton);

function disableButton() {
  button.disabled = true;
  button.value = "Disabled";
  setTimeout(() => {
    button.disabled = false;
    button.value = "Enabled";
  }, 2000);
}

disabled ็Šถๆ…‹ใฎ็ถ™ๆ‰ฟ

disabled ๅฑžๆ€งใŒๆŒ‡ๅฎšใ•ใ‚Œใชใ‹ใฃใŸๅ ดๅˆใ€ใƒœใ‚ฟใƒณใฏ disabled ใฎ็Šถๆ…‹ใ‚’่ฆช่ฆ็ด ใ‹ใ‚‰็ถ™ๆ‰ฟใ—ใพใ™ใ€‚ใ“ใ‚Œใซใ‚ˆใฃใฆใ€่ค‡ๆ•ฐใฎ่ฆ็ด ใ‚’ <fieldset> ่ฆ็ด ใฎใ‚ˆใ†ใชใ‚ณใƒณใƒ†ใƒŠใƒผใฎไธญใซๅ…ฅใ‚Œใ€ใ‚ณใƒณใƒ†ใƒŠใƒผใซ disabled ใ‚’่จญๅฎšใ™ใ‚‹ใ“ใจใงใ€ไธ€ๆ‹ฌใงๆœ‰ๅŠนๅŒ–ใ—ใŸใ‚Š็„กๅŠนๅŒ–ใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

ไปฅไธ‹ใฎไพ‹ใฏใ“ใฎๆ“ไฝœใ‚’่กจใ—ใฆใ„ใพใ™ใ€‚ใ“ใ‚Œใฏไธ€ใคๅ‰ใฎไพ‹ใจใจใฆใ‚‚ไผผใฆใ„ใพใ™ใŒใ€ๆœ€ๅˆใฎใƒœใ‚ฟใƒณใŒๆŠผใ•ใ‚ŒใŸใจใใซ disabled ๅฑžๆ€งใŒ <fieldset> ใซ่จญๅฎšใ•ใ‚Œใ€2 ็ง’็ตŒ้Žใ™ใ‚‹ใพใง 3 ใคใฎใƒœใ‚ฟใƒณใŒใ™ในใฆ็„กๅŠนใซใชใ‚Šใพใ™ใ€‚

html
<fieldset>
  <legend>Button group</legend>
  <input type="button" value="Button 1" />
  <input type="button" value="Button 2" />
  <input type="button" value="Button 3" />
</fieldset>
js
const button = document.querySelector("input");
const fieldset = document.querySelector("fieldset");

button.addEventListener("click", disableButton);

function disableButton() {
  fieldset.disabled = true;
  setTimeout(() => {
    fieldset.disabled = false;
  }, 2000);
}

ใƒกใƒข: Firefox ใฏไป–ใฎใƒ–ใƒฉใ‚ฆใ‚ถใƒผใจ็•ฐใชใ‚Šใ€ใƒšใƒผใ‚ธใŒๅ†่ชญใฟ่พผใฟใ•ใ‚ŒใŸๅพŒใงใ‚‚ <input> ่ฆ็ด ใฎ disabled ็Šถๆ…‹ใ‚’็ถญๆŒใ—ใพใ™ใ€‚ๅ›ž้ฟใ™ใ‚‹ใซใฏใ€ <input> ่ฆ็ด ใฎ autocomplete ๅฑžๆ€งใ‚’ off ใซ่จญๅฎšใ—ใพใ™ใ€‚๏ผˆ่ฉณใ—ใใฏ Firefox ใƒใ‚ฐ 654072 ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚๏ผ‰

ๆคœ่จผ

ใƒœใ‚ฟใƒณใซๅฏพใ—ใฆๅˆถ็ด„ๆคœ่จผใฏ่กŒใ‚ใ‚Œใพใ›ใ‚“ใ€‚ๅˆถ็ด„ใ™ในใๅ€คใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚

ไพ‹

ไปฅไธ‹ใฎไพ‹ใงใฏใ€ <canvas> ่ฆ็ด ใจใ„ใใ‚‰ใ‹ใฎ CSS ใจ JavaScript ใ‚’ไฝฟ็”จใ—ใฆไฝœๆˆใ—ใŸใ€ใจใฆใ‚‚ๅŸบๆœฌ็š„ใชใŠ็ตตใ‹ใใ‚ขใƒ—ใƒชใ‚’็ดนไป‹ใ—ใพใ™ใ€‚ (็ฐก็•ฅๅŒ–ใฎใŸใ‚ CSS ใ‚’็œ็•ฅใ—ใพใ™)ใ€‚ไธŠ้ƒจใฎ 2 ใคใฎใ‚ณใƒณใƒˆใƒญใƒผใƒซใงใ€่‰ฒใจๆ็”ปใ™ใ‚‹ใƒšใƒณใฎๅคงใใ•ใ‚’้ธๆŠžใงใใพใ™ใ€‚ใƒœใ‚ฟใƒณใฏใ€ใ‚ฏใƒชใƒƒใ‚ฏใ™ใ‚‹ใจใ€ใ‚ญใƒฃใƒณใƒใ‚นใ‚’ๆถˆๅŽปใ™ใ‚‹้–ขๆ•ฐใ‚’ๅ‘ผใณๅ‡บใ—ใพใ™ใ€‚

html
<div class="toolbar">
  <input type="color" aria-label="select pen color" />
  <input
    type="range"
    min="2"
    max="50"
    value="30"
    aria-label="select pen size" /><span class="output">30</span>
  <input type="button" value="Clear canvas" />
</div>

<canvas class="myCanvas">
  <p>Add suitable fallback here.</p>
</canvas>
js
const canvas = document.querySelector(".myCanvas");
const width = (canvas.width = window.innerWidth);
const height = (canvas.height = window.innerHeight - 85);
const ctx = canvas.getContext("2d");

ctx.fillStyle = "rgb(0 0 0)";
ctx.fillRect(0, 0, width, height);

const colorPicker = document.querySelector('input[type="color"]');
const sizePicker = document.querySelector('input[type="range"]');
const output = document.querySelector(".output");
const clearBtn = document.querySelector('input[type="button"]');

// ่ง’ๅบฆใ‚’ใƒฉใ‚ธใ‚ขใƒณใซๅค‰ๆ›ใ™ใ‚‹
function degToRad(degrees) {
  return (degrees * Math.PI) / 180;
}

// ้ธๆŠžใ—ใŸๅคงใใ•ใฎๅ€คใ‚’ๅๆ˜ 

sizePicker.oninput = () => {
  output.textContent = sizePicker.value;
};

// ใƒžใ‚ฆใ‚นใƒใ‚คใƒณใ‚ฟใƒผใจใ€ใƒœใ‚ฟใƒณใŒๆŠผใ•ใ‚Œใฆใ„ใ‚‹ใ‹ใฉใ†ใ‹ใ‚’ๆ ผ็ด
let curX;
let curY;
let pressed = false;

// ใƒžใ‚ฆใ‚นใƒใ‚คใƒณใ‚ฟใƒผใฎๅบงๆจ™ใ‚’ๆ›ดๆ–ฐ
document.onmousemove = (e) => {
  curX = e.pageX;
  curY = e.pageY;
};

canvas.onmousedown = () => {
  pressed = true;
};

canvas.onmouseup = () => {
  pressed = false;
};

clearBtn.onclick = () => {
  ctx.fillStyle = "rgb(0 0 0)";
  ctx.fillRect(0, 0, width, height);
};

function draw() {
  if (pressed) {
    ctx.fillStyle = colorPicker.value;
    ctx.beginPath();
    ctx.arc(
      curX,
      curY - 85,
      sizePicker.value,
      degToRad(0),
      degToRad(360),
      false,
    );
    ctx.fill();
  }

  requestAnimationFrame(draw);
}

draw();

ๆŠ€่ก“็š„ๆฆ‚่ฆ

ๅ€ค ใƒœใ‚ฟใƒณใฎใƒฉใƒ™ใƒซใจใ—ใฆไฝฟใ‚ใ‚Œใ‚‹ๆ–‡ๅญ—ๅˆ—
ใ‚คใƒ™ใƒณใƒˆ click
ๅฏพๅฟœใ—ใฆใ„ใ‚‹ๅ…ฑ้€šๅฑžๆ€ง type ใŠใ‚ˆใณ value
IDL ๅฑžๆ€ง value
DOM ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใ‚คใ‚น HTMLInputElement
ใƒกใ‚ฝใƒƒใƒ‰ ใชใ—
ๆš—้ป™ใฎ ARIA ใƒญใƒผใƒซ button

ไป•ๆง˜ๆ›ธ

Specification
HTML
# button-state-(type=button)

ใƒ–ใƒฉใ‚ฆใ‚ถใƒผใฎไบ’ๆ›ๆ€ง

้–ข้€ฃๆƒ…ๅ ฑ

  • <input> ใŠใ‚ˆใณใใ‚ŒใซๅฎŸ่ฃ…ใ•ใ‚Œใฆใ„ใ‚‹ HTMLInputElement ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใ‚คใ‚นใ€‚
  • ใ‚ˆใ‚Šๆ–ฐใ—ใ„ <button> ่ฆ็ด ใ€‚