技能测试:定位

本次技能测试旨在帮助您评估是否理解 CSS 中的定位,包括使用 CSS position 属性和值。您将完成两个小任务,这些任务使用了您刚刚学习的材料中的不同元素。

注意: 如需帮助,请阅读我们的“技能测试”使用指南。您也可以通过我们的沟通渠道与我们联系。

任务 1

要完成此任务,请将 class 为 target 的元素定位到容器的顶部和右侧,该容器有一个 5px 的灰色边框。

您的最终结果应如下面的图片所示

The green box is at the top right of a container with a grey border.

奖励问题:您能将目标元素改变为显示在文本下方吗?

html
<div class="container">
  <p>
    Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion
    daikon amaranth tatsoi tomatillo melon azuki bean garlic.
  </p>
  <div class="target">Target</div>
  <p>
    Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette
    tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato.
    Dandelion cucumber earthnut pea peanut soko zucchini.
  </p>
</div>
css
body {
  font: 1.2em / 1.5 sans-serif;
}

* {
  box-sizing: border-box;
}

.container {
  padding: 0.5em;
  border: 5px solid #cccccc;
}

.target {
  width: 150px;
  height: 150px;
  border-radius: 5px;
  background-color: #663398;
  padding: 1em;
  color: white;
}

.container {
  /* Add styles here */
}

.target {
  /* Add styles here */
}
点击此处显示解决方案

这需要 position: relativeposition: absolute,以及理解它们在相对定位创建新定位上下文方面的关系。一个可能出现的问题是,您将 position: absolute 添加到子元素而未将 position: relative 应用到容器。在这种情况下,目标元素将根据视口进行定位。

css
.container {
  position: relative;
}

.target {
  position: absolute;
  top: 0;
  right: 0;
}

对于奖励问题,您需要为目标元素添加一个负数的 z-index,例如 z-index: -2

任务 2

在此任务中,如果您滚动下面的示例框,侧边栏会随内容一起滚动。我们希望您更新代码,以便侧边栏(<div class="sidebar">)保持在原位,只有内容会滚动。

The content is scrolled but the sidebar has stayed in place.

html
<div class="container">
  <div class="sidebar">
    <p>
      This is the sidebar. It should remain in position as the content scrolls.
    </p>
  </div>
  <div class="content">
    <p>
      Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh
      onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.
    </p>
    <p>
      Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette
      tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato.
      Dandelion cucumber earthnut pea peanut soko zucchini.
    </p>
    <p>
      Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce
      kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus
      winter purslane kale. Celery potato scallion desert raisin horseradish
      spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo
      shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea.
      Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi
      beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki
      bean chickweed potato bell pepper artichoke.
    </p>
  </div>
</div>
css
body {
  font: 1.2em / 1.5 sans-serif;
}

* {
  box-sizing: border-box;
}

.container {
  height: 400px;
  padding: 0.5em;
  border: 5px solid #cccccc;
  overflow: auto;
}

.sidebar {
  color: white;
  background-color: #663398;
  padding: 1em;
  float: left;
  width: 150px;
}

.content {
  padding: 1em;
  margin-left: 160px;
}

.container {
  /* Add styles here */
}

.sidebar {
  /* Add styles here */
}
点击此处显示解决方案

我们正在使用一个与学习材料中的示例略有不同的示例来测试您对 position: fixed 的理解。

css
.sidebar {
  position: fixed;
}