gpt4 book ai didi

html - 带有内联 block 元素的垂直列表 CSS

转载 作者:行者123 更新时间:2023-11-28 06:17:21 27 4
gpt4 key购买 nike

请帮我解决这个问题。

我希望红色背景上的列表只显示在一行中。我不明白为什么最后一项要换行。

Why does it display like this?

body {
background-color: #F0F0F0;
font: 14px/20px Arial, sans-serif;
color: #555;
margin: 0 auto;
max-width: 1080px;
}
a {
color: #FFF;
text-decoration: none;
font-weight: bold;
}
a:hover {
color: #FFF;
text-decoration: underline;
}
header {
background-color: #333;
opacity: 0.90;
box-sizing: border-box;
width: 100%;
height: 86px;
top: 0;
left: 0;
}
p#logo {
float: left;
color: #FFF;
margin: 30px;
font-size: 350%;
}
nav {
display: table;
height: 100%;
background-color: #D50000;
float: right;
}
nav ul {
display: table-cell;
vertical-align: middle;
padding-left: 10%;
padding-right: 10%;
vertical-align: middle;
list-style: none;
}
nav ul li {
float: left;
padding-left: 3%;
padding-right: 3%;
}
<body>
<header>
<p id="logo">Lago Siu</p>
<nav>
<ul>
<li><a href="#" class="current">Home</a></li>
<li><a href="#">Menu pranzo</a></li>
<li><a href="#">Menu cena</a></li>
<li><a href="#info">Info</a></li>
</ul>
</nav>
</header>
</body>

看了其他类似的问题,还是解决不了问题!

最佳答案

您现在面临的真正痛苦是,您对所有宽度都使用百分比。

这听起来不错,但问题是:
parent 会弄清楚它的内容有多宽,然后设置它的宽度以匹配它的 child ,然后填充的百分比将是该宽度的百分比。如果子元素的填充是基于百分比的(基于每个元素的不同宽度),那么您的尺寸会发生变化,这意味着父元素需要重新调整其宽度、重新计算等等。

这行不通。
此外,您还会遇到舍入错误,每个浏览器的舍入都略有不同。百分比很好,直到您必须弄清楚它是多少像素。

这甚至不是最外面的盒子有一定百分比的问题; parent 的祖 parent 的 10% 宽度的 5% 意味着如果孙子被四舍五入一个像素, parent 将被四舍五入一个像素,意味着祖 parent 将被四舍五入一个像素......

除非四舍五入相反,在这种情况下,您的孙子的宽度较小,和/或您的 parent 容纳其 child 的空间较小。

与其将自己介绍给那个受伤的世界,我建议如下:

  • 始终在所有内容上使用边框框(使用 * 而不是单独应用它)
  • 非常谨慎地使用边距,并且仅在该行上没有其他任何内容时才用于水平居中
  • 更频繁地使用 display: inline-block;,并在父级上使用 text-align: center|left|right; 来控制内容流
  • 使用 emrem 进行填充,大小相对于您现在所在的小部件中的字体大小 (em ) 或相对于默认字体大小 (rem);而不是 font-size: 350% 你可以使用 font-size: 3.5rem;
  • 尝试为您的样式使用命名良好的类(在 BEM 或 SuitCSS 或 OOCSS 样式中,如果有帮助的话),而不是依赖 HTML 选择器或 ID;我之所以这样说,是因为随着页面复杂性的增加,两组 div div div span 发生碰撞(因此很难采用不同的样式)的可能性变得非常高.MediaPlayer-button.CommentSection-submit 发生冲突的几率仍然恰好为 0,只要 CSS 选择器未嵌套。

* {
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
}
html {
font: 14px/20px Arial, sans-serif;
}
/* I've moved most of the commonly-repeating housekeeping CSS into utility classes */

.u-floatLeft {
float: left;
}
.u-floatRight {
float: right;
}
.u-noMargin {
margin: 0;
}
.u-inlineBlock {
display: inline-block;
}
.u-table {
display: table;
}
.u-tableCell {
display: table-cell;
}
.u-fullHeight {
height: 100%;
}
.Header {
background-color: #333;
/* by making the height REM-based, the header now updates in relative-size,
as the base font-size changes, without needing to recalculate */
height: 6rem;
}
.Logo {
color: #fff;
font-size: 3.5rem;
/* === 350%, but is more idiomatic, as its text-based */
/* by making the line-height match the parent height,
the logo-text will align itself properly */
line-height: 6rem;
/* I don't need any other margin or padding, now, except to move it right;
use margin, instead, if the text needed its own background-color */
padding-left: 0.75em;
}
.HeaderNav {
background-color: #d50000;
}
.HeaderNav-list {
/* <ul> and <ol> have a margin and a padding-left by default */
/* 150% of an EM at this font-size and font-family */
padding: 0 1.5em;
vertical-align: middle;
}
.HeaderNav-item {
/* instead of % of total width, padding is now % of single EM */
padding: 0 0.2em;
}
.HeaderNav-link {
color: #fff;
font-weight: bold;
text-decoration: none;
}
.HeaderNav-link:hover {
text-decoration: underline;
}
.HeaderNav-link--current {}
<!doctype html>

<html>

<head>
</head>

<body>
<header class="Header">
<h1 class="Logo u-floatLeft u-noMargin u-fullHeight">Lago Siu</h1>
<nav class="HeaderNav u-table u-floatRight u-fullHeight">
<ul class="HeaderNav-list u-tableCell u-noMargin u-fullHeight">
<li class="HeaderNav-item u-inlineBlock">
<a href="#" class="HeaderNav-link HeaderNav-link--current">Home</a>
</li>
<li class="HeaderNav-item u-inlineBlock">
<a href="#" class="HeaderNav-link">Menu pranzo</a>
</li>
<li class="HeaderNav-item u-inlineBlock">
<a href="#" class="HeaderNav-link">Menu cena</a>
</li>
<li class="HeaderNav-item u-inlineBlock">
<a href="#" class="HeaderNav-link">Info</a>
</li>
</ul>
</nav>
</header>
</body>

</html>

我希望这有助于解决问题,并为正在发生的事情、您将来遇到的问题以及如何解决这些问题提供一些基础。

关于html - 带有内联 block 元素的垂直列表 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35816078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com