需要解释CSS中的显示,前,后属性和伪类

时间:2016-10-10 03:10:55

标签: css html5



nav.page-nav {
  background-color: #1d1d1d;
  line-height: 6rem;
  font-size: 1.7rem;
}
nav.page-nav .container {
  display: -ms-flexbox;
}
nav.page-nav a {
  display: block;
  width: 9rem;
  padding: 0 1.8rem;
  border-right: 1px dotted #3d3d3d;
  text-decoration: none;
  text-transform: uppercase;
  text-align: center;
  color: #c3c3c3;
  text-shadow: 0 1px 0 #000;
}
nav.page-nav a:first-child {
  border-left-width: 1px;
  border-left-color: #3d3d3d;
}
nav.page-nav a:hover {
  color: #e4e4e4;
  background-color: black;
}
nav.page-nav .active {
  color: white;
  background: -ms-linear-gradient(#c95656, #8d0606);
  background: linear-gradient(#c95656, #8d0606);
}
nav.page-nav .active:hover {
  color: #fff;
}
nav.page-nav .active:before {
  position: absolute;
  top: 6rem;
  display: block;
  height: 0;
  width: 0;
  margin-left: -1.9rem;
  border-top: 2rem solid #8d0606;
  border-right: 6.5rem solid transparent;
  content: "";
}
nav.page-nav .active:after {
  position: absolute;
  display: block;
  height: 0;
  width: 0;
  margin-left: 4.3rem;
  border-top: 2rem solid #8d0606;
  border-left: 6.5rem solid transparent;
  content: "";
}

<nav class="page-nav">
  <div class="container">
    <a href="/index.htm" class="active">Home</a>
    <a href="/about.htm">About</a>
    <a href="/schedule.htm">Schedule</a>
    <a href="/register.htm">Register</a>
  </div>
</nav>
&#13;
&#13;
&#13;

我对display: block选择器中的nav.page-nav感到困惑。如果我将其更改为显示:inline-block没有任何变化。为什么?

我也对:之前和之后感到困惑。它们如何在上面的代码中工作?我的意思是之前应该在元素之前没有贬低它。它们显示在每个活动元素下方。

1 个答案:

答案 0 :(得分:1)

display:block and inline-block之间最常见的区别是对齐。

默认情况下,

Display:Block会将width完整height分配给display:block元素。 float:left元素的放置是一个接一个,而要将它们对齐在一行,即水平我们需要使用display:inline-block,但inline元素默认在float:left对齐需要使用Pseudo ::before

top:6rem - 用于在目标元素之前分配一些内容或某些样式属性,但是您已将nav.page-nav .active:before分配给Pseudo ::after,因此您的before元素位于目标元素的底部。 nav.page-nav { background-color: #1d1d1d; line-height: 6rem; font-size: 1.7rem; } /* TODO: nav.page-nav .container */ nav.page-nav .container { display: -ms-flexbox; } /* TODO: nav.page-nav a */ nav.page-nav a { display: block; width: 9rem; padding: 0 1.8rem; border-right: 1px dotted #3d3d3d; text-decoration: none; text-transform: uppercase; text-align: center; color: #c3c3c3; text-shadow: 0 1px 0 #000; position:relative; } /* TODO: nav.page-nav a:first-child */ nav.page-nav a:first-child { border-left-width: 1px; border-left-color: #3d3d3d; } /* TODO: nav.page-nav a:hover */ nav.page-nav a:hover { color: #e4e4e4; background-color: black; } /* TODO: nav.page-nav .active */ nav.page-nav .active { color: white; background: -ms-linear-gradient(#c95656, #8d0606); background: linear-gradient(#c95656, #8d0606); } /* TODO: nav.page-nav .active:hover */ nav.page-nav .active:hover { color: #fff; } /* TODO: nav.page-nav .active:before */ nav.page-nav .active:before { position: absolute; top:6rem; left:0; display: block; height: 0; width: 0; border-top: 2rem solid #8d0606; border-right: 6.5rem solid transparent; content: ""; } /* TODO: nav.page-nav .active:after */ nav.page-nav .active:after { position: absolute; display: block; height: 0; width: 0; border-top: 2rem solid #8d0606; border-left: 6.5rem solid transparent; content: ""; bottom:-2rem; right:0; } - 用于在目标元素之后分配一些内容或某些样式属性。

<nav class="page-nav">
<div class="container">
<a href="/index.htm" class="active">Home</a>
<a href="/about.htm">About</a>
<a href="/schedule.htm">Schedule</a>
<a href="/register.htm">Register</a>
</div>
</nav>
config.sample.yaml