Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Centering an <li> element without taking bullet point into account [duplicate]

I am unsure on how to center my li elements in the light green space, just based off the green squares I've created around them. As of right now CSS is including the space taken up by the bullet points when centering, which I do not want.

#square {
  position: fixed;
  width: 350px;
  height: 100%;
  top: 0px;
  left: 0px;
  background-color: rgb(230, 255, 230);
}

ul {
  position: relative;
  bottom: 30px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

li {
  margin-top: 40px;
  padding-left: 75px;
  border-color: white;
  border-width: 2px;
  border-style: solid;
  padding: 5px 20px 5px 20px;
  background-color: green;
  border-radius: 10px;
  width: 100px;
  text-align: center;
}

.navlink {
  text-decoration: none;
  color: white;
}
<div id="square">
  <ul>
    <li><a class="navlink" href="#">Introduction</a></li>
    <li><a class="navlink" href="#">Middle</a></li>
    <li><a class="navlink" href="#">End</a></li>
  </ul>
</div>

I've tried applying list-style-type: none; to ul, however this just hides the bullet points, the space they take up is still there.

like image 517
Steel Avatar asked Mar 27 '19 03:03

Steel


People also ask

How do I center text in a div with bullets?

Give your div a class name center. Assuming your div width is 200px, margin:0 auto will center and text-align:left will align the text to the left while maintaining its centering due to margin auto. The problem is that the bullets are controlled by the ul rather than the individual li s.

How do I create a list without bullet points in HTML?

How To Create a List Without Bullets. The list-style-type:none property can be used to remove the default markers/bullets in a list. Note that the list also has default margin and padding. To remove this as well, add margin:0 and padding:0 to <ul>:

How to center the child element without negative margins?

This method is very similar to the negative margins method above. Set the position property of the parent element to relative. For the child element, set the position property to absolute and set top to 50%. Now instead of using a negative margin to truly center the child element, just use transform: translate (0, -50%):

How do I center elements horizontally?

Here are some common elements you may want to center horizontally and different ways to do it. To center text or links horizontally, just use the text-align property with the value center: Use the shorthand margin property with the value 0 auto to center block-level elements like a div horizontally:


2 Answers

It is not actually the space taken up by the bullet points - ul elements have a default padding-left - just reset it to zero:

Ideally you should just reset the padding instead of negative margins - see demo below:

#square {
  position: fixed;
  width: 350px;
  height: 100%;
  top: 0px;
  left: 0px;
  background-color: rgb(230, 255, 230);
}

ul {
  position: relative;
  bottom: 30px;
  display: flex;
  flex-direction: column;
  align-items: center;
  list-style-type: none; /* hide bullet points */
  padding-left: 0; /* ADDED */
}

li {
  margin-top: 40px;
  padding-left: 75px;
  border-color: white;
  border-width: 2px;
  border-style: solid;
  padding: 5px 20px 5px 20px;
  background-color: green;
  border-radius: 10px;
  width: 100px;
  text-align: center;
}

.navlink {
  text-decoration: none;
  color: white;
}
<div id="square">
  <ul>
    <li><a class="navlink" href="#">Introduction</a></li>
    <li><a class="navlink" href="#">Middle</a></li>
    <li><a class="navlink" href="#">End</a></li>
  </ul>
</div>
like image 53
kukkuz Avatar answered Sep 29 '22 11:09

kukkuz


Your given code almost ok just use one single line into style sheet in li style use below line

 list-style-type: none;

New li style look like

li {
    margin-top: 40px;
    padding-left: 75px;
    list-style-type: none;
    border-color: white;
    border-width: 2px;
    border-style: solid;
    padding: 5px 20px 5px 20px;
    background-color: green;
    border-radius: 10px;
    width: 100px;
    text-align: center;
 }
like image 25
Akbor Avatar answered Sep 29 '22 10:09

Akbor