Html css list inline 不是水平列出项目吗?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3790202/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-29 04:37:39  来源:igfitidea点击:

css list inline is not listing items horizontally?

htmlcsshtml-listsinline

提问by getaway

I don't know why this is not displayed right, the list is meant to display horizontally? Instead it is displaying vertically!

我不知道为什么这个显示不正确,列表是水平显示的?相反,它是垂直显示的!

this is my code:

这是我的代码:

#stats li {
  display: inline;
  list-style-type: none;
  padding-right: 20px;
}
<ul id="stats">
  <li>
    <h1>53</h1>
    </a>
  </li>
  <li>
    <h1>67</h1>
    </a>
  </li>
</ul>

回答by David says reinstate Monica

That's because the h1element is block-level element by default.

那是因为该h1元素默认是块级元素。

Add:

添加:

h1 {display: inline; }

to your css and they work as you want.

到您的 css,它们可以按您的意愿工作。

On a separate note, it's worth noting that there should be only one h1per page, all other headings, semantically, are below that heading and are sub-headings, of a sort. Think of it as a book, the book-title would be the h1, the chapters the h2and so on.

另外,值得注意的是h1每页应该只有一个,所有其他标题在语义上都在该标题下方,并且是某种子标题。把它想象成一本书,书名是h1,章节h2等等。

I'd suggest, then, changing your html a little:

我建议,然后,稍微改变你的 html:

<ul id="stats">
    <li><a href="#"><span class="listHeader">53</span></a></li>
    <li><a href="#"><span class="listHeader">67</span></a></li>
</ul>

But that might, possibly, be just me =)

但这可能只是我=)

Here's an article to support my point of view:

这里有一篇文章来支持我的观点:

回答by Ventus

You forgot to add float: leftproperty to your CSS:

您忘记向float: leftCSS添加属性:


#stats li
{
  display: inline;
  list-style-type: none;
  padding-right: 20px;
  float: left;
}

By the way, you are missing opening atag in your HTML example. Should be

顺便说一句,您a在 HTML 示例中缺少开始标记。应该


<li><a href="#"><h1>53</h1></a></li>

回答by Jeff Rupert

h1tags default as display:block;so that is taking precedence.

h1标签默认,display:block;因此优先。



Also, you have </a>tags after closing the <h1>tags, but there are no opening tags. That could cause issues in older browsers.

此外,</a>关闭标签后有<h1>标签,但没有开始标签。这可能会导致旧浏览器出现问题。



Third, what's the purpose of putting h1tags inside of lis? Semantically, that doesn't make sense.

三、h1lis里面放标签的目的是什么?从语义上讲,这没有意义。

回答by sternAndy

There are multiple solutions: you could change li to display: inline-block; or h1 to display:inline; (keep in mind to use only one h1 per site and to use it semantically correct! If you just want to style a word or a sentence which isn't really a h2 or 3 then use span's, em's or strong's.

有多种解决方案:您可以将 li 更改为 display: inline-block; 或 h1 显示:内联;(请记住,每个站点只使用一个 h1 并在语义上正确使用它!如果您只想设置一个不是真正 h2 或 3 的单词或句子的样式,请使用 span、em 或 strong。

Also it's important that an inline-a-Tag can't enclose a block-whatever-Tag that is if you're not developing for HTML5 where you can enclose just anything in an a-Tag.

同样重要的是,inline-a-Tag 不能包含 block-whatever-Tag,如果您不是为 HTML5 开发,您可以在 a-Tag 中包含任何内容。

Also if you can, omit floating for a thing that can be achieved with more backwards compatibilty

此外,如果可以,请省略浮动,因为可以通过更多向后兼容性来实现

回答by B T

Using display: inline-blockas sternAndy suggests is probably the right solution here. Inline isn't really useful for anything but elements that have no nested elements inside them.

display: inline-block按照 sternAndy 的建议使用可能是这里的正确解决方案。除了内部没有嵌套元素的元素外,内联并没有真正有用。