Home > Back-end >  How does the `a` tag behave?
How does the `a` tag behave?

Time:01-29

Could you explain how the a tag behaves in this example? Why is it so small?

a {
  border: 1px solid currentColor;
}
<li>
  <a href="https://facebook.com/starbucks">
    <svg aria-hidden="true"  focusable="false" preserveAspectRatio="xMidYMid meet">
<path></path>
<circle  cx="50%" cy="50%" fill="transparent" r="75%"></circle>
</svg>
  </a>
</li>

Also, could you explain, how to fix it? And how to center it inside the block? Thank you!

CodePudding user response:

The anchor element (<a>) is by default an inline element. It will have the height of the font (example 1). So, making a border around it will display the height of the font.

If you set the display of the <a> to inline-block or block (example 2 and 3) the element will "contain" the child elements (except if you limit the height...). With either one you can set properties like border, background, padding, margin etc.

svg {
  display: inline; /*default*/
  height: 2em;
  vertical-align: bottom;
}

a {
  border: 1px solid currentColor;
}

ul li:nth-child(1) a {
  display: inline; /*default*/
}

ul li:nth-child(2) a {
  display: inline-block;
}

ul li:nth-child(3) a {
  display: block;
}

li {
  margin: .1em;
}
<ul>
  <li>
    <a href="https://facebook.com/starbucks">default
      <svg viewBox="0 0 100 100">
        <circle cx="50%" cy="50%" fill="red" r="50%"/>
      </svg>
    </a>
  </li>
  <li>
    <a href="https://facebook.com/starbucks">inline-block
      <svg viewBox="0 0 100 100">
        <circle cx="50%" cy="50%" fill="red" r="50%"/>
      </svg>
    </a>
  </li>
  <li>
    <a href="https://facebook.com/starbucks">block
      <svg viewBox="0 0 100 100">
        <circle cx="50%" cy="50%" fill="red" r="50%"/>
      </svg>
    </a>
  </li>
</ul>

  • Related