为什么每种颜色都不会填充我的菜单栏中的相应框?
Why won't each color fill its respective box in my menu bar?
我的最终目标是在单击每个框时显示背景色。当我为此添加 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;
}
你想要 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
视为创建 内部 空白。
我建议只删除 margin
和 padding
,然后设置固定宽度并将内容居中。在我看来,管理起来要容易得多,而且会很好地工作,因为你的容器是固定的@ 300px
。我还添加了 CSS 以从 last-child
中删除边框,因为它不需要。
.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;
}
我的最终目标是在单击每个框时显示背景色。当我为此添加 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;
}
你想要 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
视为创建 内部 空白。
我建议只删除 margin
和 padding
,然后设置固定宽度并将内容居中。在我看来,管理起来要容易得多,而且会很好地工作,因为你的容器是固定的@ 300px
。我还添加了 CSS 以从 last-child
中删除边框,因为它不需要。
.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;
}