Files
Shaun Hamilton 393aeabc8f feat(curriculum): add css-penguin practice project (#44214)
* feat: add css-penguin practice project

* rename block name

* rename meta block

* rename necessary properties

* rename page

* add to step 25

* adjust prototype with better structure/naming

* add step adjusting .ground z-index

* fix: add position: absolute to .ground

* add to step 37

* add to step 103

* remove erm from solution

* add tests to 001-020

* add tests 021-030

* test: update 012 to use dynamic hints

* test: improve tests with dynamic hints

* fix: add position:relative to .penguin

* add tests 032-055

* add tests 056 - 103

* fix some tests

* code blocks and test fixes

Co-authored-by: Krzysztof G. <60067306+gikf@users.noreply.github.com>

* allow 0% 0px 0

* fix: add width and height step for silly firefox

* add instruction to add html element

* Tom's good suggestions, and his American suggestions

Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>

* adjust wording for - you guessed it - firefox

Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>

* add missing calc keyword

* just fix it with regex :(

* apply Nich's probably bogus suggestions

Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>

* remove duplicate

Co-authored-by: Krzysztof G. <60067306+gikf@users.noreply.github.com>
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
2021-12-03 17:59:32 -06:00

4.6 KiB

id, title, challengeType, dashedName
id title challengeType dashedName
619d1deb8b04811b8839ffe4 Step 77 0 step-77

--description--

Position the .shirt element 165px from the top, and 127.5px from the left of its parent. Then, increase its stacking order such that it appears above the .penguin-body element.

--hints--

You should give .shirt a top of --fcc-expected--, but found --fcc-actual--.

assert.equal(new __helpers.CSSHelp(document).getStyle('.shirt')?.top, '165px');

You should give .shirt a left of --fcc-expected--, but found --fcc-actual--.

assert.equal(new __helpers.CSSHelp(document).getStyle('.shirt')?.left, '127.5px');

You should give the .shirt element a z-index of 1.

assert.equal(new __helpers.CSSHelp(document).getStyle('.shirt')?.zIndex, '1');

--seed--

--seed-contents--

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="./styles.css" />
    <title>CSS Penguin</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>

  <body>
    <div class="left-mountain"></div>
    <div class="back-mountain"></div>
    <div class="sun"></div>
    <div class="penguin">
      <div class="penguin-head">
        <div class="face left"></div>
        <div class="face right"></div>
        <div class="chin"></div>
        <div class="eye left">
          <div class="eye-lid"></div>
        </div>
        <div class="eye right">
          <div class="eye-lid"></div>
        </div>
        <div class="blush left"></div>
        <div class="blush right"></div>
        <div class="beak top"></div>
        <div class="beak bottom"></div>
      </div>
      <div class="shirt">
        <div>💜</div>
        <p>I CSS</p>
      </div> 
      <div class="penguin-body"></div>
    </div>

    <div class="ground"></div>
  </body>
</html>
:root {
  --penguin-face: white;
}

body {
  background: linear-gradient(45deg, rgb(118, 201, 255), rgb(247, 255, 222));
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100vh;
  overflow: clip;
}

.left-mountain {
  width: 300px;
  height: 300px;
  background: linear-gradient(rgb(203, 241, 228), rgb(80, 183, 255));
  position: absolute;
  transform: skew(0deg, 44deg);
  z-index: 2;
  margin-top: 100px;
}

.back-mountain {
  width: 300px;
  height: 300px;
  background: linear-gradient(rgb(203, 241, 228), rgb(47, 170, 255));
  position: absolute;
  z-index: 1;
  transform: rotate(45deg);
  left: 110px;
  top: 225px;
}

.sun {
  width: 200px;
  height: 200px;
  background-color: yellow;
  position: absolute;
  border-radius: 50%;
  top: -75px;
  right: -75px;
}

.penguin {
  width: 300px;
  height: 300px;
  margin: auto;
  margin-top: 75px;
  z-index: 4;
  position: relative;
}

.penguin * {
  position: absolute;
}

.penguin-head {
  width: 50%;
	height: 45%;
  background: linear-gradient(
    45deg,
		gray,
		rgb(239, 240, 228)
	);
	border-radius: 70% 70% 65% 65%;
  top: 10%;
  left: 25%;
  z-index: 1;
}

.face {
  width: 60%;
  height: 70%;
  background-color: var(--penguin-face);
  border-radius: 70% 70% 60% 60%;
  top: 15%;
}

.face.left {
  left: 5%;
}

.face.right {
  right: 5%;
}

.chin {
  width: 90%;
  height: 70%;
  background-color: var(--penguin-face);
  top: 25%;
  left: 5%;
  border-radius: 70% 70% 100% 100%;
}

.eye {
  width: 15%;
  height: 17%;
  background-color: black;
  top: 45%;
  border-radius: 50%;
}

.eye.left {
  left: 25%;
}

.eye.right {
  right: 25%;
}

.eye-lid {
  width: 150%;
  height: 100%;
  background-color: var(--penguin-face);
  top: 25%;
  left: -23%;
  border-radius: 50%;
}

.blush {
  width: 15%;
  height: 10%;
  background-color: pink;
  top: 65%;
  border-radius: 50%;
}

.blush.left {
  left: 15%;
}

.blush.right {
  right: 15%;
}

.beak {
  height: 10%;
  background-color: orange;
  border-radius: 50%;
}

.beak.top {
  width: 20%;
	top: 60%;
	left: 40%;
}

.beak.bottom {
  width: 16%;
  top: 65%;
  left: 42%;
}

--fcc-editable-region--
.shirt {
  font: bold 25px Helvetica, sans-serif;

}

.shirt div {
  font-weight:  initial;
  top: 22.5px;
  left: 12px;
}
--fcc-editable-region--

.penguin-body {
  width: 53%;
  height: 45%;
  background: linear-gradient(
    45deg,
		rgb(134, 133, 133) 0%,
		rgb(234, 231, 231) 25%,
		white 67%
	);
  border-radius: 80% 80% 100% 100%;
  top: 40%;
  left: 23.5%;
}

.penguin-body::before {
  content: "";
  position: absolute;
  width: 50%;
  height: 45%;
  background-color: gray;
  top: 10%;
  left: 25%;
  border-radius: 0% 0% 100% 100%;
  opacity: 70%;
}

.ground {
  width: 100vw;
  height: 400px;
  background: linear-gradient(90deg, rgb(88, 175, 236), rgb(182, 255, 255));
  z-index: 3;
  position: absolute;
  margin-top: -58px;
}