边界仅占div的一半

时间:2014-10-09 19:27:27

标签: html css

我的导航栏中有一个div,我有我的徽标。这个div优于导航栏并显示在包装器中。我会添加一张图片来向您展示我的意思:

My nav bar

所以,左边的图像是我的标志 你可以看到,导航有一个border-bottom属性,显示一条很小的红线,所以我想要的是在徽标div中也显示边框,但仅限于将导航器与包装器分开的部分(正常蓝色,深蓝色) 这是我的代码:

HTML

    <nav>
    <a href="index.php"><img src="resources/img/logo.png" id="logo"></a>
    <ul>
        <li><a href="portfolio.php">Portfolio</a></li>
    </ul>
</nav>

CSS

    nav {
    width: 100%;
    text-align: center;
    padding: 0;
    margin: 0;
    background-color: #38434d;
    height: 99%;
    border-bottom: 1px solid darkred;
    clear: both;
}

#logo {
    max-width: 7%;
    background: #38434d;
    float: left;
    padding: .2em;
    margin: .1em 0 0 3em;
}

那么,我该怎样才能只展示我的logo div的底边? 谢谢!

1 个答案:

答案 0 :(得分:5)

一种方法是设置<a>元素的样式,而不是包含的<img>,并使用我们可以设置样式的伪元素:

nav {
  width: 100%;
  text-align: center;
  padding: 0;
  margin: 0;
  background-color: #38434d;
  height: 99%;
  border-bottom: 1px solid darkred;
  clear: both;
}
/* keeping the same styling, with the addition of the position
   in order to position the pseudo-element */
nav > a {
  max-width: 7%;
  background: #38434d;
  float: left;
  padding: .2em;
  margin: .1em 0 0 3em;
  position: relative;
}
nav > a img {
  width: 30px;
  height: 60px;
}
nav > a::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 50%;
  /* styling the border of the pseudo-element the same as the nav element: */
  border: 1px solid darkred;
  /* 'removing' the top-border */
  border-top-width: 0;
<nav>
  <a href="index.php">
    <img src="resources/img/logo.png" id="logo">
  </a>
  <ul>
    <li><a href="portfolio.php">Portfolio</a>
    </li>
  </ul>
</nav>