CSShanoi.htm

戻る

<!DOCTYPE HTML>
<HTML LANG="ja">

<HEAD>
<META CHARSET="Shift_JIS">
<TITLE>スタイルシート ハノイの塔</TITLE>

<STYLE TYPE="text/css">
<!--

body {
  background-color:#CCFFFF;
}

#title {
  color:#CC0000;
  font-size:large;
  font-weight:bold;
  text-align:center;
}

.pos, .sel {
  display:none;
}

#base {
  width:604px;
  margin-left:auto;
  margin-right:auto;
}

#back {
  position:relative;
  height:162px;
  margin-top:0.5em;
  background-color:black;

  --a-1:0;
  --a-2:0;
  --a-3:0;
  --a-4:0;
  --a-5:0;
  --b-1:0;
  --b-2:0;
  --b-3:0;
  --b-4:0;
  --b-5:0;
  --c-1:0;
  --c-2:0;
  --c-3:0;
  --c-4:0;
  --c-5:0;
}

:is(#pos-a-1, #sel-a-1):checked ~ #back {
  --a-1:1;
}
:is(#pos-a-2, #sel-a-2):checked ~ #back {
  --a-2:1;
}
:is(#pos-a-3, #sel-a-3):checked ~ #back {
  --a-3:1;
}
:is(#pos-a-4, #sel-a-4):checked ~ #back {
  --a-4:1;
}
:is(#pos-a-5, #sel-a-5):checked ~ #back {
  --a-5:1;
}

:is(#pos-b-1, #sel-b-1):checked ~ #back {
  --b-1:1;
}
:is(#pos-b-2, #sel-b-2):checked ~ #back {
  --b-2:1;
}
:is(#pos-b-3, #sel-b-3):checked ~ #back {
  --b-3:1;
}
:is(#pos-b-4, #sel-b-4):checked ~ #back {
  --b-4:1;
}
:is(#pos-b-5, #sel-b-5):checked ~ #back {
  --b-5:1;
}

:is(#pos-c-1, #sel-c-1):checked ~ #back {
  --c-1:1;
}
:is(#pos-c-2, #sel-c-2):checked ~ #back {
  --c-2:1;
}
:is(#pos-c-3, #sel-c-3):checked ~ #back {
  --c-3:1;
}
:is(#pos-c-4, #sel-c-4):checked ~ #back {
  --c-4:1;
}
:is(#pos-c-5, #sel-c-5):checked ~ #back {
  --c-5:1;
}

#disks-3:checked ~ #back {
  /* :is(#pos-a-4, #sel-a-4):checked ~ #back 等の設定を上書きする */
  --a-4:0;
  --a-5:0;
  --b-4:0;
  --b-5:0;
  --c-4:0;
  --c-5:0;
}

#disks-4:checked ~ #back {
  /* :is(#pos-a-5, #sel-a-5):checked ~ #back 等の設定を上書きする */
  --a-5:0;
  --b-5:0;
  --c-5:0;
}

.loc {
  position:absolute;
  top:1px;
  width:200px;
  height:160px;
  background-color:white;
}

.disk {
  position:absolute;
  height:24px;
  background-color:green;
}

#disk-1 {
  left:calc(var(--a-1) * 21px + var(--b-1) * 222px + var(--c-1) * 423px);
  top:135px;
  width:160px;
}
#disk-2 {
  left:calc(var(--a-2) * 35px + var(--b-2) * 236px + var(--c-2) * 437px);
  top:calc(135px - (var(--a-2) * var(--a-1)
                  + var(--b-2) * var(--b-1)
                  + var(--c-2) * var(--c-1)) * 26px);
  width:132px;
}
#disk-3 {
  left:calc(var(--a-3) * 49px + var(--b-3) * 250px + var(--c-3) * 451px);
  top:calc(135px - (var(--a-3) * (var(--a-1) + var(--a-2))
                  + var(--b-3) * (var(--b-1) + var(--b-2))
                  + var(--c-3) * (var(--c-1) + var(--c-2))) * 26px);
  width:104px;
}
#disk-4 {
  left:calc(var(--a-4) * 63px + var(--b-4) * 264px + var(--c-4) * 465px);
  top:calc(135px - (var(--a-4) * (var(--a-1) + var(--a-2) + var(--a-3))
                  + var(--b-4) * (var(--b-1) + var(--b-2) + var(--b-3))
                  + var(--c-4) * (var(--c-1) + var(--c-2) + var(--c-3))) * 26px);
  width:76px;
}
#disk-5 {
  left:calc(var(--a-5) * 77px + var(--b-5) * 278px + var(--c-5) * 479px);
  top:calc(135px - (var(--a-5) * (var(--a-1) + var(--a-2) + var(--a-3) + var(--a-4))
                  + var(--b-5) * (var(--b-1) + var(--b-2) + var(--b-3) + var(--b-4))
                  + var(--c-5) * (var(--c-1) + var(--c-2) + var(--c-3) + var(--c-4))) * 26px);
  width:48px;
}

.sel-1:checked ~ #back #disk-1 {
  background-color:orange;
}
.sel-2:checked ~ #back #disk-2 {
  background-color:orange;
}
.sel-3:checked ~ #back #disk-3 {
  background-color:orange;
}
.sel-4:checked ~ #back #disk-4 {
  background-color:orange;
}
.sel-5:checked ~ #back #disk-5 {
  background-color:orange;
}

.sel-l, .pos-l {
  position:absolute;
  top:1px;
  width:200px;
  height:160px;
  z-index:-1;
  cursor:pointer;
}

#loc-a,
#sel-a-1-l, #sel-a-2-l, #sel-a-3-l, #sel-a-4-l, #sel-a-5-l,
#pos-a-1-l, #pos-a-2-l, #pos-a-3-l, #pos-a-4-l, #pos-a-5-l {
  left:1px;
}
#loc-b,
#sel-b-1-l, #sel-b-2-l, #sel-b-3-l, #sel-b-4-l, #sel-b-5-l,
#pos-b-1-l, #pos-b-2-l, #pos-b-3-l, #pos-b-4-l, #pos-b-5-l {
  left:202px;
}
#loc-c,
#sel-c-1-l, #sel-c-2-l, #sel-c-3-l, #sel-c-4-l, #sel-c-5-l,
#pos-c-1-l, #pos-c-2-l, #pos-c-3-l, #pos-c-4-l, #pos-c-5-l {
  left:403px;
}

#disks-3:checked ~ #back .hide-4 {
  display:none;
}
:is(#disks-3, #disks-4):checked ~ #back .hide-5 {
  display:none;
}

.sel:checked ~ #back .sel-l {
  display:none;
}

#pos-a-1:checked ~ #back #sel-a-1-l {
  z-index:1;
}
#pos-b-1:checked ~ #back #sel-b-1-l {
  z-index:1;
}
#pos-c-1:checked ~ #back #sel-c-1-l {
  z-index:1;
}

#pos-a-2:checked ~ #back #sel-a-2-l {
  z-index:2;
}
#pos-b-2:checked ~ #back #sel-b-2-l {
  z-index:2;
}
#pos-c-2:checked ~ #back #sel-c-2-l {
  z-index:2;
}

#pos-a-3:checked ~ #back #sel-a-3-l {
  z-index:3;
}
#pos-b-3:checked ~ #back #sel-b-3-l {
  z-index:3;
}
#pos-c-3:checked ~ #back #sel-c-3-l {
  z-index:3;
}

#pos-a-4:checked ~ #back #sel-a-4-l {
  z-index:4;
}
#pos-b-4:checked ~ #back #sel-b-4-l {
  z-index:4;
}
#pos-c-4:checked ~ #back #sel-c-4-l {
  z-index:4;
}

#pos-a-5:checked ~ #back #sel-a-5-l {
  z-index:5;
}
#pos-b-5:checked ~ #back #sel-b-5-l {
  z-index:5;
}
#pos-c-5:checked ~ #back #sel-c-5-l {
  z-index:5;
}

.sel-1:checked ~ #back #pos-a-1-l {
  z-index:calc(0 - var(--a-2) - var(--a-3) - var(--a-4) - var(--a-5));
}
.sel-1:checked ~ #back #pos-b-1-l {
  z-index:calc(0 - var(--b-2) - var(--b-3) - var(--b-4) - var(--b-5));
}
.sel-1:checked ~ #back #pos-c-1-l {
  z-index:calc(0 - var(--c-2) - var(--c-3) - var(--c-4) - var(--c-5));
}

.sel-2:checked ~ #back #pos-a-2-l {
  z-index:calc(0 - var(--a-3) - var(--a-4) - var(--a-5));
}
.sel-2:checked ~ #back #pos-b-2-l {
  z-index:calc(0 - var(--b-3) - var(--b-4) - var(--b-5));
}
.sel-2:checked ~ #back #pos-c-2-l {
  z-index:calc(0 - var(--c-3) - var(--c-4) - var(--c-5));
}

.sel-3:checked ~ #back #pos-a-3-l {
  z-index:calc(0 - var(--a-4) - var(--a-5));
}
.sel-3:checked ~ #back #pos-b-3-l {
  z-index:calc(0 - var(--b-4) - var(--b-5));
}
.sel-3:checked ~ #back #pos-c-3-l {
  z-index:calc(0 - var(--c-4) - var(--c-5));
}

.sel-4:checked ~ #back #pos-a-4-l {
  z-index:calc(0 - var(--a-5));
}
.sel-4:checked ~ #back #pos-b-4-l {
  z-index:calc(0 - var(--b-5));
}
.sel-4:checked ~ #back #pos-c-4-l {
  z-index:calc(0 - var(--c-5));
}

.sel-5:checked ~ #back #pos-a-5-l {
  z-index:0;
}
.sel-5:checked ~ #back #pos-b-5-l {
  z-index:0;
}
.sel-5:checked ~ #back #pos-c-5-l {
  z-index:0;
}

-->
</STYLE>

</HEAD>

<BODY>
<BR>
<DIV ID="title">スタイルシート ハノイの塔</DIV>
<BR>

<DIV ID="base">

<INPUT TYPE=RADIO NAME="radio-1" ID="pos-a-1" CLASS="pos" CHECKED>
<INPUT TYPE=RADIO NAME="radio-1" ID="pos-b-1" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-1" ID="pos-c-1" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-1" ID="sel-a-1" CLASS="sel sel-1">
<INPUT TYPE=RADIO NAME="radio-1" ID="sel-b-1" CLASS="sel sel-1">
<INPUT TYPE=RADIO NAME="radio-1" ID="sel-c-1" CLASS="sel sel-1">

<INPUT TYPE=RADIO NAME="radio-2" ID="pos-a-2" CLASS="pos" CHECKED>
<INPUT TYPE=RADIO NAME="radio-2" ID="pos-b-2" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-2" ID="pos-c-2" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-2" ID="sel-a-2" CLASS="sel sel-2">
<INPUT TYPE=RADIO NAME="radio-2" ID="sel-b-2" CLASS="sel sel-2">
<INPUT TYPE=RADIO NAME="radio-2" ID="sel-c-2" CLASS="sel sel-2">

<INPUT TYPE=RADIO NAME="radio-3" ID="pos-a-3" CLASS="pos" CHECKED>
<INPUT TYPE=RADIO NAME="radio-3" ID="pos-b-3" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-3" ID="pos-c-3" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-3" ID="sel-a-3" CLASS="sel sel-3">
<INPUT TYPE=RADIO NAME="radio-3" ID="sel-b-3" CLASS="sel sel-3">
<INPUT TYPE=RADIO NAME="radio-3" ID="sel-c-3" CLASS="sel sel-3">

<INPUT TYPE=RADIO NAME="radio-4" ID="pos-a-4" CLASS="pos" CHECKED>
<INPUT TYPE=RADIO NAME="radio-4" ID="pos-b-4" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-4" ID="pos-c-4" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-4" ID="sel-a-4" CLASS="sel sel-4">
<INPUT TYPE=RADIO NAME="radio-4" ID="sel-b-4" CLASS="sel sel-4">
<INPUT TYPE=RADIO NAME="radio-4" ID="sel-c-4" CLASS="sel sel-4">

<INPUT TYPE=RADIO NAME="radio-5" ID="pos-a-5" CLASS="pos" CHECKED>
<INPUT TYPE=RADIO NAME="radio-5" ID="pos-b-5" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-5" ID="pos-c-5" CLASS="pos">
<INPUT TYPE=RADIO NAME="radio-5" ID="sel-a-5" CLASS="sel sel-5">
<INPUT TYPE=RADIO NAME="radio-5" ID="sel-b-5" CLASS="sel sel-5">
<INPUT TYPE=RADIO NAME="radio-5" ID="sel-c-5" CLASS="sel sel-5">

ディスク枚数
<INPUT TYPE=RADIO NAME="disks" ID="disks-3" TABINDEX="-1" CHECKED><LABEL FOR="disks-3">3枚</LABEL>
<INPUT TYPE=RADIO NAME="disks" ID="disks-4" TABINDEX="-1"><LABEL FOR="disks-4">4枚</LABEL>
<LABEL><INPUT TYPE=RADIO NAME="disks" TABINDEX="-1">5枚</LABEL>
<BR>

<DIV ID="back">

<DIV ID="loc-a" CLASS="loc"></DIV>
<DIV ID="loc-b" CLASS="loc"></DIV>
<DIV ID="loc-c" CLASS="loc"></DIV>
<DIV ID="disk-1" CLASS="disk"></DIV>
<DIV ID="disk-2" CLASS="disk"></DIV>
<DIV ID="disk-3" CLASS="disk"></DIV>
<DIV ID="disk-4" CLASS="disk hide-4"></DIV>
<DIV ID="disk-5" CLASS="disk hide-5"></DIV>

<LABEL ID="pos-a-1-l" FOR="pos-a-1" CLASS="pos-l"></LABEL>
<LABEL ID="pos-b-1-l" FOR="pos-b-1" CLASS="pos-l"></LABEL>
<LABEL ID="pos-c-1-l" FOR="pos-c-1" CLASS="pos-l"></LABEL>
<LABEL ID="sel-a-1-l" FOR="sel-a-1" CLASS="sel-l"></LABEL>
<LABEL ID="sel-b-1-l" FOR="sel-b-1" CLASS="sel-l"></LABEL>
<LABEL ID="sel-c-1-l" FOR="sel-c-1" CLASS="sel-l"></LABEL>

<LABEL ID="pos-a-2-l" FOR="pos-a-2" CLASS="pos-l"></LABEL>
<LABEL ID="pos-b-2-l" FOR="pos-b-2" CLASS="pos-l"></LABEL>
<LABEL ID="pos-c-2-l" FOR="pos-c-2" CLASS="pos-l"></LABEL>
<LABEL ID="sel-a-2-l" FOR="sel-a-2" CLASS="sel-l"></LABEL>
<LABEL ID="sel-b-2-l" FOR="sel-b-2" CLASS="sel-l"></LABEL>
<LABEL ID="sel-c-2-l" FOR="sel-c-2" CLASS="sel-l"></LABEL>

<LABEL ID="pos-a-3-l" FOR="pos-a-3" CLASS="pos-l"></LABEL>
<LABEL ID="pos-b-3-l" FOR="pos-b-3" CLASS="pos-l"></LABEL>
<LABEL ID="pos-c-3-l" FOR="pos-c-3" CLASS="pos-l"></LABEL>
<LABEL ID="sel-a-3-l" FOR="sel-a-3" CLASS="sel-l"></LABEL>
<LABEL ID="sel-b-3-l" FOR="sel-b-3" CLASS="sel-l"></LABEL>
<LABEL ID="sel-c-3-l" FOR="sel-c-3" CLASS="sel-l"></LABEL>

<LABEL ID="pos-a-4-l" FOR="pos-a-4" CLASS="pos-l hide-4"></LABEL>
<LABEL ID="pos-b-4-l" FOR="pos-b-4" CLASS="pos-l hide-4"></LABEL>
<LABEL ID="pos-c-4-l" FOR="pos-c-4" CLASS="pos-l hide-4"></LABEL>
<LABEL ID="sel-a-4-l" FOR="sel-a-4" CLASS="sel-l hide-4"></LABEL>
<LABEL ID="sel-b-4-l" FOR="sel-b-4" CLASS="sel-l hide-4"></LABEL>
<LABEL ID="sel-c-4-l" FOR="sel-c-4" CLASS="sel-l hide-4"></LABEL>

<LABEL ID="pos-a-5-l" FOR="pos-a-5" CLASS="pos-l hide-5"></LABEL>
<LABEL ID="pos-b-5-l" FOR="pos-b-5" CLASS="pos-l hide-5"></LABEL>
<LABEL ID="pos-c-5-l" FOR="pos-c-5" CLASS="pos-l hide-5"></LABEL>
<LABEL ID="sel-a-5-l" FOR="sel-a-5" CLASS="sel-l hide-5"></LABEL>
<LABEL ID="sel-b-5-l" FOR="sel-b-5" CLASS="sel-l hide-5"></LABEL>
<LABEL ID="sel-c-5-l" FOR="sel-c-5" CLASS="sel-l hide-5"></LABEL>

</DIV>
</DIV>

</BODY>

</HTML>