我的最终目标是点击每个框时,会显示背景颜色。当我为此添加Javascript时,很明显背景颜色实际上并没有填满整个盒子。当没有颜色时,这并不明显。我该如何解决这个问题?
HTML:
<div id="logo">Codeplayer</div>
<ul class="toggle">
<li id="htmlLi">HTML</li>
<li id="cssLi">CSS</li>
<li id="jsLi">JS</li>
<li id="resultLi">Result</li>
</ul>
<button>Run</button>
</div>
CSS:
/* ----------- UNIVERSAL -----------*/
a, body, html, ul, li, div, button {
margin: 0;
padding: 0;
list-style: none;
font-family: helvetica;
}
#logo, .toggle {
line-height: 50px;
}
/* ----------- MENU BAR -----------*/
#menu {
background-color: #EDEBED;
width: 100%;
height: 50px;
box-shadow: 1px 1px 1px #000000;
position: absolute;
}
/* ----------- LOGO -----------*/
#logo {
float: left;
font-weight: bold;
margin-left: 15px;
font-size: 20px;
height: 20px;
text-shadow: 1px 2px #000000;
color: #9d9d9a;
}
/* ----------- TOGGLE BAR -----------*/
.toggle li {
list-style: none;
float: left;
margin-left: 20px;
border-right: 1px solid black;
padding-right: 17px;
font-weight: bold;
}
.toggle {
margin: 0 auto;
width: 300px;
height: 30px;
line-height: 30px;
margin-top: 10px;
border: 1px solid black;
box-shadow: 1px 1px 1px #000000;
border-radius: 4px;
}
/* ----------- TOGGLE LIST ITEMS -----------*/
#resultLi {
border-right: none;
}
/* ----------- BUTTON -----------*/
button {
float: right;
margin-right: 15px;
height: 30px;
width: 50px;
position: relative;
top: -30px;
border-radius: 4px;
}
/* ----------- TEST -----------*/
#htmlLi {
background-color: red;
}
#cssLi {
background-color: green;
}
#jsLi {
background-color: yellow;
}
#resultLi {
background-color: blue;
}
答案 0 :(得分:4)
您需要padding-left
上的li
,而不是margin-left
。
.toggle li {
list-style: none;
float: left;
padding-left: 20px; /* <-- padding-left */
border-right: 1px solid black;
padding-right: 17px;
font-weight: bold;
}
这是因为元素的background-color
不会扩展包含框的 。将margin
视为创建外部空白,将padding
视为创建内部空白。
答案 1 :(得分:0)
我建议您删除margin
和padding
,然后设置固定宽度并将内容居中。在我看来更容易管理,并且因为你的容器已经修复@ 300px
,所以工作正常。我还添加了CSS来删除last-child
的边框,因为它不需要。
<强> JSFiddle 强>
.toggle li {
list-style: none;
float: left;
width: 74.2px; //fixed width allows you to center text exactly
border-right: 1px solid black;
font-weight: bold;
text-align: center; //easy as pie
}
.toggle li:last-child {
border: none;
}