热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用CSS居中元素最不可怕的方式是什么?-WhatistheleasthorriblewaytocenteranelementwithCSS?

Ihavehtmlthatlookslikethis:我有这样的html:<!DOCTYPEhtml><head><metachars

I have html that looks like this:

我有这样的html:

 

    

    
 




  

Some title thing, who knows

If I give header an auto margin and a width, it's horizontally centered. What's the least horrible way to ensure that it's vertically centered, as well?

如果我给标头一个自动边距和宽度,它是水平居中。要保证它是垂直居中的,最不可怕的方法是什么?

I am aware of the following articles which provide some discussion of the topic:

我注意到下列文章对这个主题进行了一些讨论:

  • http://blog.themeforest.net/tutorials/vertical-centering-with-css/
  • http://blog.themeforest.net/tutorials/vertical-centering-with-css/
  • http://www.vanseodesign.com/css/vertical-centering/
  • http://www.vanseodesign.com/css/vertical-centering/
  • http://www.jakpsatweb.cz/css/css-vertical-center-solution.html
  • http://www.jakpsatweb.cz/css/css-vertical-center-solution.html
  • http://www.brunildo.org/test/vertmiddle.html
  • http://www.brunildo.org/test/vertmiddle.html

6 个解决方案

#1


12  

Since this question was tagged CSS3, here's a "least horrible" solution using CSS3's "flexbox". Unfortunately only recent versions of Safari, Chrome and Firefox support it.

由于这个问题被标记为CSS3,这里有一个使用CSS3的“flexbox”的“最不恐怖”的解决方案。不幸的是,只有最近版本的Safari、Chrome和Firefox支持它。

html, body {
  margin:0;
  padding:0;
  height:100%;
  background:#eee;
}
header {
  width:30em;
  background:#fff;
}
body {  
  display:box;
  box-pack:center;
  box-align:center;
  box-orient:horizontal;
}

A more complete demo can be found here.

一个更完整的演示可以在这里找到。

#2


4  

If you do NOT know the height of the header the only way I often use, requires extra html if done properly, tough you could do without.

如果你不知道标题的高度,这是我经常使用的唯一方法,需要额外的html,如果做得正确,很难没有。

You make the header vertical-align: middle by making it a table-cell

通过将标题设置为表格单元格,可以使标题垂直对齐:居中

html{
    height: 100%;
}      
body {
    display: table;
    height: 100%;
    margin: 0 auto;
    padding: 0;
}
header {
    display: table-cell;
    vertical-align: middle;
}

note that I set 100% height on the html node, which really isnt proper css as far as I know, it should be on the body and header should be in a encapsulating div wich has display: table http://jsfiddle.net/bgYPR/2/

注意,我在html节点上设置了100%的高度,据我所知,这确实不是合适的css,它应该在主体上,header应该在一个封装的div中:table http://jsfiddle.net/bgYPR/2/

#3


3  

Unfortunately, there's still nothing elegant for vertical alignment, only hacks.

不幸的是,对于垂直对齐仍然没有什么优雅可言,只有一些技巧。

#4


2  

I don't know if there's a best way, but there are a number of different ways (depending on your situation), and many are thoroughly discussed in this article.

我不知道是否有最好的方法,但是有许多不同的方法(取决于您的情况),本文将详细讨论其中的许多方法。

#5


1  

Usually when I need vertical centering I use a pair of inline-block elements. You have one element that is the full height of the container, and a second element that is only the height of the content to be centered. Both are display:inline-block;vertical-align:middle.

通常,当我需要垂直的定心时,我使用一对线块元素。您有一个元素是容器的全高度,第二个元素是内容的高度。两者都显示:inline-block;vertical-align:中间。

I like to use b tags for this, because they have no semantic significance and are tiny:

我喜欢使用b标签,因为它们没有语义意义,而且很小:



This is my centered content
It makes me happy!

Mind you, this specific code example wont work in IE7 because of the lack of inline-block and sibling selectors (+), but the same technique can be done using more complex code that IE7 will handle.

注意,这个特定的代码示例不会在IE7中工作,因为缺少inline-block和同胞选择器(+),但是同样的技术可以使用IE7将处理的更复杂的代码来完成。

#6


0  

I would generally not verticially center, but specify a small top margin like 20px. We don't always know enough about the end user's equipment to make an assumption about what is convenient or usable for the platform they are viewing the site on.

我一般不垂直居中,而是指定一个小的顶部空白,比如20px。对于终端用户的设备,我们并不总是足够了解他们所看到的平台的方便或可用性。


推荐阅读
  • 本文详细介绍了 jQuery 的入门知识与实战应用,首先讲解了如何引入 jQuery 库及入口函数的使用方法,为初学者提供了清晰的操作指南。此外,还深入探讨了 jQuery 在实际项目中的多种应用场景,包括 DOM 操作、事件处理和 AJAX 请求等,帮助读者全面掌握 jQuery 的核心功能与技巧。 ... [详细]
  • 在Eclipse中提升开发效率,推荐使用Google V8插件以增强Node.js的调试体验。安装方法有两种:一是通过Eclipse Marketplace搜索并安装;二是通过“Help”菜单中的“Install New Software”,在名称栏输入“googleV8”。此插件能够显著改善调试过程中的性能和响应速度,提高开发者的生产力。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • HTML 页面中调用 JavaScript 函数生成随机数值并自动展示
    在HTML页面中,通过调用JavaScript函数生成随机数值,并将其自动展示在页面上。具体实现包括构建HTML页面结构,定义JavaScript函数以生成随机数,以及在页面加载时自动调用该函数并将结果呈现给用户。 ... [详细]
  • Python 中 json.dumps() 和 json.loads() 的使用方法详解——Python 面试与 JavaScript 面试必备知识
    在 Python 中,`json.dumps()` 和 `json.loads()` 是处理 JSON 数据的核心函数。`json.dumps()` 用于将字典或其他可序列化对象转换为 JSON 格式的字符串,而 `json.loads()` 则用于将 JSON 字符串解析为 Python 对象。本文详细介绍了这两个函数的使用方法及其在 Python 和 JavaScript 面试中的重要性,帮助读者掌握这些关键技能。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 本文深入探讨了 HTML 中的 `margin` 属性,详细解析了其基本特性和应用场景。文章不仅介绍了 `margin` 的基本概念,还重点讨论了垂直外边距合并现象,并分析了 `margin` 在块级元素与内联元素中的不同表现。通过实例和代码示例,帮助读者全面理解 `margin` 的使用技巧和常见问题。 ... [详细]
  • php黄色波浪线什么意思?
    导读:今天编程笔记来给各位分享关于php黄色波浪线什么意思的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • CSS3中如何使用background-size定义背景图片大小
    CSS3中如何使用background-size定义背景图片大小?针对这个问题,今天小编总结这篇有关background-size属性的文章,可供感兴趣的小伙伴们参考借鉴 ... [详细]
  • 一篇文章搞定css3 3d效果
    css33d学习心得卡片反转魔方banner图首先我们要学习好css33d一定要有一定的立体感通过这个图片应该清楚的了解到了x轴y轴z轴是什么概念了。首先先给大家看一个小 ... [详细]
  • 这篇文章将为大家详细讲解有关如何使用JavaScript动态设置CSS3属性值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读 ... [详细]
author-avatar
梦鸢蝶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有