Reputation: 1007
I made a menu and want to add a background color to one of the menu items. After I added the background color there was a small space on the left that wasn't covered by the color. Does anyone know how I can fill the entire space?
Here is a fiddle: https://jsfiddle.net/9crtzv6s/1/
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {
display: inline-block;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li>
<li><a href="#" class="slider-2">Menu</a>
</li>
<li><a href="#" class="slider-3">Menu</a>
</li>
<li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
Upvotes: 0
Views: 2232
Reputation: 197
Please migrate the class from "a" to "li". Because you want to put your background to li. And add the following css. Its working now.
<div class="slider">
<ul>
<li class="slider-1"><a href="#">Menu</a>
</li>
<li class="slider-2"><a href="#">Menu</a>
</li>
<li class="slider-3"><a href="#">Menu</a>
</li>
<li class="slider-4"><a href="#">Menu</a>
</li>
</ul>
</div>
<style>
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider-1
.slider-2
.slider-3
.slider-4{
border-right: 1px solid black;
}
.slider li {
display: inline-block;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider ul .slider-3 {
background-color: green;
}
</style>
Upvotes: 0
Reputation: 105943
It is about the white-space from your HTML code that shows up when element are displayed inline-block.
There a few ways to get rid of it ( you may also want to read https://css-tricks.com/fighting-the-space-between-inline-block-elements/ )
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {
display: inline-block;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li><!--
--><li><a href="#" class="slider-2">Menu</a>
</li><!--
--><li><a href="#" class="slider-3">Menu</a>
</li><!--
--><li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {
display: inline-block;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li><li>
<a href="#" class="slider-2">Menu</a>
</li><li>
<a href="#" class="slider-3">Menu</a>
</li><li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
font-size
on parent to 0
and back to normal on li
in the code.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
font-size:0
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {
display: inline-block;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li>
<li><a href="#" class="slider-2">Menu</a>
</li>
<li><a href="#" class="slider-3">Menu</a>
</li>
<li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
edit
Some other ways float or display
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
display:flex;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {
display: inline-block;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li>
<li><a href="#" class="slider-2">Menu</a>
</li>
<li><a href="#" class="slider-3">Menu</a>
</li>
<li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
display:table;
}
.slider ul:after {
content:'';
display:table-cell;
width:100%;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {
display: table-cell;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li>
<li><a href="#" class="slider-2">Menu</a>
</li>
<li><a href="#" class="slider-3">Menu</a>
</li>
<li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
float
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {float:left;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li>
<li><a href="#" class="slider-2">Menu</a>
</li>
<li><a href="#" class="slider-3">Menu</a>
</li>
<li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
Upvotes: 0
Reputation: 9470
You need to define float: left;
for .slider li
-s. It will remove redundant gaps:
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {
display: inline-block;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
float: left;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li>
<li><a href="#" class="slider-2">Menu</a>
</li>
<li><a href="#" class="slider-3">Menu</a>
</li>
<li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
Upvotes: 0
Reputation: 207900
Inline elements, like you list items, are sensitive to white space in your code, so either remove the space or instead of setting the display to inline-block, float the list items left.
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {
float: left;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li>
<li><a href="#" class="slider-2">Menu</a>
</li>
<li><a href="#" class="slider-3">Menu</a>
</li>
<li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
Or
.slider ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
border: 1px solid black;
width: 480px;
margin: 0 auto;
}
.slider li a {
display: block;
text-align: center;
padding: 16px;
text-decoration: none;
}
.slider li {
display: inline-block;
border-right: 1px solid black;
text-transform: uppercase;
font-size: 13px;
font-family: 'textaw00-heavyregular', 'AvenirNextLTW01', 'Helvetica Neue', 'Helvetica', 'Arial', 'sans-serif';
text-transform: uppercase;
letter-spacing: 1px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.slider li:last-child {
border-right: none;
}
.slider-3 {
background-color: green;
}
<div class="slider">
<ul>
<li><a href="#" class="slider-1">Menu</a>
</li><li><a href="#" class="slider-2">Menu</a>
</li><li><a href="#" class="slider-3">Menu</a>
</li><li><a href="#" class="slider-4">Menu</a>
</li>
</ul>
</div>
Upvotes: 2